Monitoring and Analyzing a Load Test Result
Rick Potts, Software Design Engineer
Visual Studio 2005
Visual Studio Team Test Edition
Summary: Microsoft Visual Studio Team Test Edition provides tools for running, monitoring, and analyzing load tests. The load test result viewer is capable of monitoring a running test or analyzing a completed test. This document describes the features of the load test result viewer. (23 printed pages)
A load test result contains performance counter samples and error information collected periodically from the computers-under-test. A large number of performance counter samples can be collected over the course of a load test run. The amount of performance data collected depends on the length of the run, the sampling interval, the number of computers under test, and the number of counters to collect. For a large load test, the amount of performance data collected can easily be several gigabytes.
By default, the test controller spools all collected load test sample data to a database while the test is running. Additional data, such as timing details and error details, is loaded into the database when the test completes. The performance data for a completed test can be loaded from the database and analyzed by the Load Test Analyzer. A completed test result loaded from a load test result database is called a post-run result.
While a test is in progress, a condensed version of the performance counter data is maintained in memory by the Load Test Monitor. To prevent the results memory requirements from growing unbounded, the load test monitor maintains up to 200 samples for each performance counter. This includes 100 evenly spaced samples that span the run's current elapsed time, and the most recent 100 samples. The result that is accumulated during a run is called an in-progress result.
A description and analysis notes can be attached to a load test result. The Analysis command on the context menu of either the Load Test Analyzer or Load Test Monitor starts the Analysis dialog box.
Figure 1. The Analysis dialog box
Both the Load Test Analyzer and the Load Test Monitor provide a graph and a table view of a load test result.
Figure 2. Typical load test result (Click on the image for a larger picture)
- Main toolbar—Provides commands to enable or disable panels in the analyzer/monitor.
- Status bar—Reports test status.
- Performance Counters pane—Lists all collected counters.
- Test Summary pane—Provides a quick summary of overall test results.
- Graph toolbar—Provides commands to control the graphing functions.
- Graph area—Displays a graph of test results.
- Graph zoom bar—Displays the data for the selected line.
- Graph plot points—Changes the horizontal range of the graph.
- Graph legend—Lists all counters plotted on the graph with statistics.
Figure 3. Table view (Click on the image for a larger picture)
- Table toolbar: Provides a choice from multiple tables.
- Table data: Displays the tabular data.
Although the user interfaces are similar, the Load Test Analyzer and Load Test Monitor differ in the following ways.
- Unique to the Load Test Analyzer (viewing a post-run load test result):
- Provides a single graph mode (zooming), which enables you to zoom in and out on data that is contained within any time range.
- Provides the Show Min Max Lines graph option, which enables you to view high and low water marks on the graph for collapsed data.
- Table views provide Percentile statistics.
- Unique to the Load Test Monitor (viewing an in-progress load test result):
- Provides two graphing modes: collapsing and scrolling.
- Provides an option to toggle between collapsing and scrolling modes.
- Provides a "sample plot" on the graph when the mouse hovers over a performance counter that has not been plotted.
- Provides a progress indicator with time remaining in the test.
- Provides a stop button on the main toolbar to stop the load test.
- Provides a status bar link that appears when a test completes, to transition the result from an in-progress result to a post-run result, and thus switch the viewer from the monitor to the analyzer.
1. Main Toolbar
The main toolbar is embedded in a load test monitor/analyzer view and offers the following commands:
- Stop a running test (disabled when the test completes).
- Display a graphical or tabular view of the data pane.
- Show or hide the load test performance counters pane.
- Show or hide the load test summary pane.
Figure 4. Main toolbar
Keyboard focus can be set to the main toolbar by holding down SHIFT and pressing ALT.
2. Status Bar
The load test monitor/analyzer status bar shows the state of a running or completed test. The following components appear on the load test status bar:
- Status icon—Indicates where in the process the test is. The test can be in one of the following states:
- In progress
- In progress with errors or threshold violations
- Completed normal
- Stopped by internal error
- Aborted by user
- Status message—Provides a text message that indicates the current state of the test: in progress, completed, loading from database, and so on.
- Threshold violation count—Provides a link that displays the total number of threshold violations reported for this load test run. Clicking this link displays the threshold violations table in the data panel. This link only appears after the first threshold violation occurs.
- Error count—Provides a link that displays the total number of errors reported for this load test run. Clicking this link displays the threshold violations table in the data panel. This link only appears after the first error occurs.
- Time remaining—Displays the amount of time remaining for the test currently running. This label disappears when a test completes.
- Test progress—Indicates the percentage of time completed for the current running test or the estimated amount of progress when loading a result from the load test result database.
Figure 5. Status bar
When a test run completes, a dialog box appears and offers to load the full load test results from the database. This transitions the view from the in-progress result to the post-run result. If you choose not to transition from the in-progress result when the test completes, the following link appears in the status bar. Click this link to force a transition to the post-run result.
Figure 6. Test Run Complete dialog box
The status bar is also used to show progress while loading a load test result from the database.
Figure 7. Progress status area
Input focus can be moved to a link on the status bar by using TAB to cycle through the controls of the load test monitor/analyzer.
3. Performance Counter Pane
The load test monitor/analyzer contains a performance counter pane that provides a structured view of all performance counters collected during a load test. The counters are organized in a tree structure, where the leaf nodes are performance counter instances that can be graphed.
The performance counter pane provides the following features:
- A structured view of all performance counters collected during a load test run.
- Communicates threshold violation information.
- Allows selection of counters for graphing.
A structured view of all performance counters—The performance counter tree contains the following primary branches:
- Overall—This branch contains test counter summary data for each test agent and the entire test rig.
Figure 8. Structured view of performance counters
- Scenario Name—Branches labeled with load test scenario names in the performance counter tree contain all load test counter instances associated with a particular load test scenario. Most load test counters are nested within a scenario branch.
A scenario branch contains test nodes. Test nodes contain page, request, and transaction nodes. Any leaf node in this structure is a performance counter that can be added to a graph.
Figure 9. View of scenario name performance counter tree (Click on the image for a larger picture)
- Computers—The Computers branch in the performance counter tree contains all non-load test counter instances grouped by computer. The Computers branch contains a node for each computer that is specified in the counter-set mapping section of the load test run settings. Each computer node contains a set of performance counter categories collected from that computer. Categories contain counters and counters contain performance counter instance names.
Figure 10. View of computers branch in performance counter tree
Communicating Threshold Violations—Threshold violations are associated with specific performance counters, and indicate that the performance counter exceeded or fell below a set threshold value. Icons in the counter pane communicate threshold violations.
The icon for a threshold violation is propagated from the tree node where the failed counter resides to the root, to alter the user to a violation on a counter that may not be visible in the tree because the tree has not been expanded.
The icon will be one of the following:
No threshold violation
A critical threshold violation occurred on the last interval
A critical threshold violation occurred on a prior interval
A warning threshold violation occurred on the last interval
A warning threshold violation occurred on a prior interval
Optionally, threshold violations can be shown on the graph also. The threshold icon appears on the graph next to the data point where the threshold violation occurred.
Figure 11. Threshold Violations
Figure 12. Graph Showing Threshold Data Points
These pictures show a warning threshold violation for the %Process Time counter in both the counter pane and on the graph. Notice how the icon propagates the root node in the counter pane when a violation occurs.
Selecting Counters to Graph—Performance counters are chosen for a graph from the counters pane. A performance counter can be graphed using one of the following mechanisms:
- Select Add to Graph from the context menu.
- Double-click a node in the tree.
- Drag a node from the tree and drop it onto a graph.
To graph a single performance counter, select a leaf node in the tree. This uniquely identifies the desired performance counter. To graph a group of related performance counters, choose the context menu option or drag from a non-leaf node. All children of the selected node will be added to the graph.
You can also choose to place a performance counter on the legend but not on the graph by using the Add to Legend command or by dragging a counter onto the graph legend. This allows the min/max/average stats to be viewed without viewing the trend line on the graph. Use the check box on the legend to display the trend line on the graph.
Note Because the load test monitor maintains performance data for all counters in-memory, it can provide the "ghost plot" feature that is not available in the load test analyzer. The "ghost plot" feature temporarily plots any performance counter on the current graph when the mouse is hovered over a leaf node in the counter pane. The plot is removed when the mouse moves away from the node. This feature lets you quickly view counters to determine whether there are any interesting counters you want to add to a graph. When you identify an interesting counter that you want to add to the graph, just double-click the node or use one of the other options that allow a counter to be added to a graph.
4. Summary Pane
The summary pane provides a quick reference for overall request and test statistics in addition to the controller name and sampling rate. The summary pane can be removed from view by using the Show Summary Panel toggle button on the main toolbar.
Figure 13. Summary pane
The Data Pane
The data pane typically consumes most of the screen real estate in the load test monitor or the load test analyzer. It appears under the status bar and to the right of the counter pane. This is the area where data is displayed for analysis. Data is displayed in one of two views: Graph view or Table view. The Graph and Table buttons on the main toolbar are used to switch between views.
5. Graph View: The Graph Toolbar
Figure 14. Graph toolbar
The graph toolbar is embedded at the top of the data pane when in Graph view. It enables you to do the following:
- Select a graph from list of available graphs.
- Add or remove a graph from the list of available graphs.
- Set graphing options, including the following:
- Show/hide the plot points grid.
- Show/hide the graph legend.
- Graph data from entire run or only the most recent data.
- Show horizontal gridlines.
- Show min/max lines.
- Show threshold violations on the graph.
All commands available on the graph toolbar are also available from a context menu associated with the graph view.
Multiple graphs can be present in the load test monitor/analyzer, each defining a set of counters to display, but only one graph is displayed at a time. The graph choices drop-down list box lets you select the graph to display.
A Default graph is always defined in the load test monitor/analyzer and cannot be removed. If the load test is running on a test rig, then there will be an additional graph for each agent and controller in the rig. The graph name is set to the name of the agent or controller computer. By default, the agent and controller graphs show CPU, memory, and network counters.
In addition to the graphs that are automatically created, you can create and remove new graphs by clicking the Add button on the graph toolbar. A new graph is created without any counters on it. New graphs are named "Graphn," where is n is an increasing sequential number. These graphs cannot be renamed.
Any graph other than the "Default" graph can be removed from the graph list by clicking the Remove button on the graph toolbar.
The graph options drop-down list box provides different ways to customize the graph view.
Figure 15. Graph options drop-down list
- Show Legend—Show/hide the legend pane associated with the graph view.
- Show Plot Points—Show/hide the plot point pane associated with the graph view.
- Graph Data for Entire Run—Show data for the entire run. See a detailed description for the "collapsing graph view" later in this document.
- Graph Only Recent Data—Show data for the most recent 100 sampling intervals. See a detailed description of the "scrolling graph view" later in this document.
- Show Horizontal Grid Line—Show/hide horizontal gridlines on the graph.
- Show Min/Max Lines—Show the min/max values for a collapsed data point. See a detailed description under Graphing Modes for this option.
- Show Threshold Violation On Graph—Draw a threshold violation handle on the graph for a data point that has an associated threshold violation.
All features on the graph toolbar can be accessed through the Graph Options dialog box, which is available through a context menu on the graph area.
Figure 16. Graph options dialog box
6. Graph View: The Graph Area
The graph area includes the X-axis, the Y-axis, and the plot area. The selected graph is drawn in the current graphing mode. See the Graphing Modes section for a detailed description of the available graphing modes.
The selected counter can be changed by clicking a plot line in the graph area. Also, pop-up information is displayed when you pause the pointer over a data point or threshold violation in the graph area. If the pointer is positioned over a line, the context menu will offer a Remove command to remove the counter from the graph.
Graph Area: Copy to Clipboard
Also available on the graph area context menu is a Copy operation. This command copies a snapshot of the graph and legend to the clipboard in HTML format. The following is a screen shot of a graph pasted into Microsoft Outlook.
Figure 17. Graph snapshot in HTML format
7. Graph View: Graph Zoom Control
The zoom control is only visible when you view a post-run result in the load test analyzer. See the Graphing modes: zooming graph section for a detailed description of the zoom control.
The zoom control can be adjusted using the mouse or the left and right arrow keys. By using the arrow keys to adjust the zoom control, you can adjust the windows range by 1 sampling interval at a time. Using the SHIFT and arrow keys makes adjustments of 10 sampling intervals.
To adjust the zoom control with the arrow key, first set focus on the zoom control by using the TAB key. When the left slider has focus, the arrow keys will move the starting boundary of the zoom window by 1 interval left or right. When the focus is on the center slider, you can use the arrow keys to scroll the zoom window left or right 1 sampling interval without changing the size of the zoom window. And finally, the right slider moves, extending or reducing the range of the end of the zoom window by 1 sampling interval.
Use the TAB key to move focus from left, to center, to right.
8. Graph View: Graph Plot-Points Grid
The graph data grid lists all the data points for the counter selected in the legend. If no counter is selected, the data grid is empty.
You can hide the data grid by toggling the Show Plot Points option from the graph toolbar. The contents of the data grid can be copied to the clipboard as text.
9. Graph View: Graph Legend
The graph legend displays information for each counter associated with a graph. The following information is contained within the legend.
Figure 18. Graph legend
- Show on graph—This check box controls whether the line is plotted on the graph. When the box is cleared, the statistics for the counter continue to display in the legend but the plot line is removed from the graph. Checking this box causes the line to be drawn on the graph.
- Range—This column displays the counter's y-axis range. By default, this value will automatically adjust as the range of sample data changes. An automatically adjusted range will always be the next power of 10 greater than Max value (this includes negative powers of ten). A graph can contain a variety of counters, each with a different range. As a result, the y-axis is not labeled with any specific range, but is instead labeled with values from 0-100 that represent a percentage of the total range for each counter. For example, for a counter with a range of 1000, a data point of 60 on the y-axis would correspond to a value of 600 for the counter.
As mentioned earlier, the range automatically adjusts as the sampled data changes, to ensure that all the data points are visible on the graph. You also have the option to override this feature and lock the range to a specific value. When the range is locked, any values exceeding the range are displayed as they are at the top of the graph. In the preceding figure, the % Processor Time counter has the range locked at 100. Use the Plot Options dialog box (available from the legend's context menu) to lock the range at a specific value.
- Counter—The four columns Counter, Instance, Category, and Computer together uniquely identify the performance counter.
- Color—The Color column shows the color and line style of the plotted line for the performance counter. Use the Plot Options dialog box to change the color or line style of a performance counter on the graph. The Plot Options dialog box is available from the legend's context menu.
- Statistics—The Min, Max, Ave, and Last columns show the respective statistics for the performance counter. These values correspond to the data displayed on the visible portion of the graph. For example, if you zoom into a portion of a run, the legend statistics will reflect values for only the zoomed area. The "Last" column is the value of the performance counter on the most recently completed sampling interval.
Selecting an item in the legend does the following:
- Allows the item to be removed from the legend (and the graph). Press DELETE or choose "Delete" from the context menu to delete this item.
- Highlights the plotted line on the graph.
- Causes the data grid to display data for the selected item.
- Lets you access the Plot Options dialog box for this counter.
Plot Options Dialog Box
The Plot Options dialog box enables you to change the color and/or line style of a plotted counter. In this dialog box, you can also fix the range at a specific value or set the range to be automatically adjusted based on the sampled data.
Figure 19. Plot options dialog box
Graphs in the Load Test Monitor are displayed in one of three modes:
- Collapsing mode
- Scrolling mode
- Zooming mode
The collapsing and scrolling graph modes are available when you view the result of a load test that is in-progress. Collapsing is the default graph mode for an in-progress load test.
The zooming graph mode is only available for viewing completed load test results. This is the only graph mode available when you view a completed load test result.
Each of the graphing modes is described in detail in the following sections.
Changing the Graphing Mode
Use the Options menu on the graph toolbar to toggle between collapsing and scrolling mode. Choose Graph Data for Entire Run for collapsing mode, or Graph Only Recent Data for scrolling mode.
Figure 20. Choose collapsing or scrolling mode for an in-progress load test (Click on the image for a larger picture)
Zooming graph mode is used when you view a completed load test result from a database. In a zooming graph, data samples from the entire run are available and the zoom control is used to select a time range to show on the graph.
Figure 21. Collapsing and scrolling options are disabled in zooming mode (Click on the image for a larger picture)
Figure 22. The zoom slider is present in zooming graph mode (Click on the image for a larger picture)
A collapsing graph is used for an in-progress run to reduce the amount of data that must be maintained in memory while still showing the trend for a performance counter over the full run duration. Although data is discarded from memory during a run due to collapsing, every data sample collected during the load test is stored in the load test database and can be accessed after the run completes through the zooming graph mode.
A collapsing graph shows up to 100 data points for a performance counter. The x-axis for a collapsing graph has an origin of 00:00 and a range covering the entire test run.
Figure 23. X-axis range spans the entire load test duration in collapsing mode (Click on the image for a larger picture)
When the number of collected data points for a counter exceeds 100, the graph will collapse by removing interleaving samples in the data series and re-compute the data points adjacent to removed samples. For a 5-second sampling interval, the first collapse will occur 500 seconds into the test.
Consider the following graph that shows a performance counter with data points on 5-second intervals. This is the view of a graph just before collapsing. The value at time 00:05 is 16.8 and the value at time 00:10 is 11.1.
Figure 24. Prior to the first collapse
This is the view of the same graph following a data collapse. Notice that the data points are now on 10 second intervals, and the new values have changed due to averaging the removed data points (for example, the value at 00:10 is now 13.9).
Figure 25. Following the first collapse
A collapse operation removes 20 samples from the series of 100 samples. The first collapse removes the first 20 interleaving data points in the series; the second collapse removes the next 20, and so on. When the end of the data series is reached, collapsing wraps back to the beginning of the data series. This can result in a graph where the data points on the left side of the graph are spaced further apart than data points on the right side of the graph. Figure 23, shown previously, demonstrates this—the data points on the left side are spaced on 20-second intervals and the data points on the right side are spaced on 10-second intervals. The sampling rate of this test is 5 seconds, but as the test executes, collapsing causes the interval granularity to increase.
Any data collapsed during the run can be retrieved when the run completes by reading the full result from the database (see zooming graph mode).
A scrolling graph is an optional view for an in-progress run and shows the most recent data points. Use a scrolling graph to view only the most recent 100 data intervals in the test.
In scrolling mode, the graph's x-axis origin scrolls forward as the test advances in such a way that the most recent 100 sampling intervals are viewable on the graph. As soon as the 100 data point limit is reached, the graph automatically scrolls forward 10 sampling intervals.
Figure 26. A scrolling graph with data points at 5 second intervals (Click on the image for a larger picture)
The range of a scrolling graph's x-axis remains fixed at 100 times the sampling interval, compared to an always increasing range of the x-axis of a collapsing graph. The updates to a scrolling graph remain fixed at the sampling interval, compared to collapsing graphs whose updates occur at increasing intervals as the test progresses (a multiple of the sampling interval). Compare the scrolling graph from figure 26 with the collapsing graph of figure 23.
Zooming graph mode is used when you view the result of a completed run that is loaded from the load test results database.
The load test results database contains every data point collected during the load test. In a normal load test, you might have thousands of sampling intervals over the entire course of a load test run.
A zooming graph displays up to 100 data points. If the graph's range exceeds 100 sampling intervals, interleaving samples are removed across the range to reduce the sample count in the same manner as a collapsing graph. However, unlike a collapsing graph, the removed samples are not removed from memory and can be displayed by zooming into a smaller time period. If the zoomed range is less than 100 sampling intervals, then none of the sampling intervals are removed to achieve the 100 data point limit.
A zooming graph always starts with the zoom range spanning the entire run. By adjusting the zoom control, the range displayed on the graph changes.
Figure 27. Zooming graph initially covers entire run
Figure 28. Zooming in on a smaller time range (Click on the image for a larger picture)
The legend of a zoomed graph always shows values for the zoomed time period; the Min, Max, and Ave values can change as the zoom range changes. The min and max values correspond to high and low watermarks displayed on the graph. As a result, even if the samples for the min and max values are removed in a collapsing operation, the Min and Max columns reflect the high and low values of any sample of the period—even though the points might not show up on the graph—because they have been collapsed out of the data series.
Min/Max lines on a zoom graph
The option Show Min Max Lines can be used with a zooming graph to display the minimum and maximum values for samples omitted from the data series due to collapsing. The collapsing operation can smooth out performance spikes in a graph as multiple samples are averaged over a longer period of time. By using Show Min Max Lines, the location of the performance spikes can be located even if the spike in the graph has been reduced by a collapsing operation.
Figure 29. Show min/max lines (Click on the image for a larger picture)
The following sequence of screen shots demonstrates the use of the Show Min Max Lines options to locate a performance spike and zooming to reveal the detail.
The first screen shot shows a single performance counter plotted over the entire run of 1 hour. At a sample rate of 5 seconds, a 1 hour run will produce 720 samples. With 620 of the samples omitted due to collapsing, it is likely that short term performance spikes could be smoothed out.
Figure 30. Performance counter plot without min/max lines (Click on the image for a larger picture)
In the next screen shot, the Show Min Max Lines option is enabled to show the minimum and maximum values of all the collapsed data points. Notice that the minimum and maximum lines are only drawn for the selected item on the graph. Notice a small spike at approximately the 00:20 point in the test in this screen shot.
Figure 31. Performance counter plot with min/max lines (Click on the image for a larger picture)
The next screen shot shows a drag selection of a zoom range that contains one of the collapsed spikes in the graph. When this selection is completed, the graph will zoom-in to the selected range.
Figure 32. Performance counter plot with min/max lines and drag selection
The final screen shot shows the result of completing the drag selection on the graph. The selected range is small enough that no data is collapsed.
Figure 33. Drag selection performance counter plot (Click on the image for a larger picture)
Viewing the data for the entire run without collapsing
Data collapsing does not occur if the zoom range is less than or equal to 100 sampling intervals. If you choose a zoom range small enough that collapsing does not occur, you can use the zoom controls scroll bar (the middle section of the control) to scroll through all the un-collapsed data.
Load test performance counters can be viewed in tabular form. The tables view replaces the graph view when chosen. The following tables may appear in the table view:
- Pages (additional statistics available when you view a post-run result)
- SQL Trace (only available when you view a post-run result)
One table may be viewed at a time. A table is chosen through the drop-down list box embedded in the data window.
Figure 34. Table view
Numeric values displayed in a table are cumulative values for the performance counter over the entire run, excluding the "last" columns, which represent the value from the most recent sampling interval.
A load test run setting contains the property Timing Details Storage, which can be set to Statistics Only or All Individual Details. Choosing one of these values causes the load test to store results for every page execution, in addition to the normal averaging of page execution times over a sampling interval. By default, the detailed page information is not collected.
When individual page statistics are collected, the page table of a post-run result will include additional columns, which include percentile data and page response times broken into groups based on network emulation.
Figure 35. Table view showing pages
SQL Trace Table
The SQL Trace Table is only shown in a post-run result when SQL tracing has been enabled in the load test run settings.
By default, the subset of available columns is displayed, although all counters are available. The Add/Remove Columns dialog box is used to choose the set of columns to display for a particular page. The Add/Remove Columns dialog box is available through the context menu on any table.
Figure 36. Add/Remove Columns dialog box
Error Links and the Errors Table
A column that represents an error count may be displayed as a link. An error link can be clicked to drill down for more error information. This launches the Errors dialog box (described later), with all errors related to the selected counter. Error drill downs appear on the following tables:
- Requests—Clicking the error link for Failed Requests launches the Errors dialog box with all errors associated with the specific request.
- Tests—Clicking the error link for Failed Tests launches the Errors dialog box with all errors associated with the specific test.
- Errors—Clicking the error link for Error Count launches the Errors dialog box with all errors associated with the specific error-type/error-subtype.
To see all errors that have occurred in the load test, click the Errors Total link on the errors table.
Figure 37. Table view showing errors
- The Errors dialog box displays error information in response to an error drill down on a performance counter. The dialog box displays one error per row with the general error information that is collected by the load test.
Figure 38. Load Test Errors dialog box (Click on the image for a larger picture)
If an error contains additional details or an associated stack trace, an additional drill down link appears in the Stack and/or Details column of the error. Clicking one of these links produces another dialog box with the additional information.
Error Details dialog box
Error details are collected by the load test for Web requests. The error details include the full HTTP request, full HTTP response, test context, and rule validation/extraction rule results for the request. Because error details can consume a large amount of space in the database, the number of error details is limited to a certain number. The Max Error Details property, of a load test run setting, controls the number of error details that are collected.
The Error Details dialog box displays the result of one Web request. The information is displayed in the same viewer as a Web test result. However, error details do not include the dependant request information, or result from top level requests. Notice the broken image icons in the following screen shot. This occurs because dependant request information is not stored.
Figure 39. Sample Error Detail Page (Click on the image for a larger picture)
By using the features of the Visual Studio Team Test Edition load test result viewer, users can locate bottlenecks, identify errors, and measure improvements in their application. This article focuses on the load test analysis features that are available in Visual Studio Team Test Edition. Strategies and techniques for composing and analyzing load tests are beyond the scope of this document but are addressed in other articles.