Share via


What is the data in the VSTS load test results store

Table: LoadTestRun: Contains one row for each load test that is executed.

Columns:

  • LoadTestRunId (int): A unique Id for this load test run in this load test results store.   The value is 1 for the first load test and increments for each load test that is executed.   All of the tables in the load test results store use the LoadTestRunId identify the load test run to which the data belongs.
  • LoadTestName (nvarchar(255)): The name of the load test
  • RunId (char (36)) : A Guid that identifies the test run in which the load test was run.
  • Description (nvarchar (255)): A description of the load test from the Analysis dialog in the Load Test Results Viewer.
  • StartTime (datetime): The time at which the load test started.
  • EndTime (datetime): The time at which the load test completed or was stopped by the user.  EndTime is NULL while the test is in progress.
  • RunDuration (int): The load test run duration (in seconds) that was specified in the active Run Settings for the load test.
  • WarmupTime (int): The warmup time (in seconds) that was specified in the active Run Settings for the load test.
  • RunSettingUsed (nvarchar (32)): The name of the active Run Settings at the time the load test was run.
  • IsLocalRun (bit): Indicates whether the load test was run locally or a rig (controller & agent(s)): 1 for local; 0 for rig.
  • ControllerName (nvarchar (255)): Name of the controller computer (or local computer name for a local run).
  • Outcome (nvarchar (32)): The outcome of the load test, which will be one of: "InProgress", "Completed", "Aborted", or "Error".
  • LoadTest (image): An encoded version of the LoadTest that was run.
  • Comment (ntext): A potentially long comment about the load test from the Analysis dialog in the Load Test Results Viewer.

Table: LoadTestCase: Stores data on the inner tests included in the load test (one row per inner test)

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • ScenarioId (int) : The unique Id of the Scenario containing the test (from the LoadTestScenario table)
  • TestCaseId (int): A unique Id for the test within this load test run
  • TestCaseName (nvarchar (64)): The name of the test

Table: LoadTestMessage: Stores data for each error that occurs during the load test

Columns:

  • LoadTestRunId (int): The unique Id of the load test run.
  • AgentId (int): The unique Id of the load test agent on which the error occurred (-1 for errors not specific to an agent)
  • MessageId (int): A unique Id for the message on the agent during this load test run
  • MessageType (tinyint): An integer that encodes the type of error; the values used and their meanings are: 0: TestError, 1: Exception, 2; HttpError, 3: ValidationRuleError, 4: ExtractionRuleError, 5: Timeout
  • MessageText nvarchar (2048): The error message text
  • SubType (nvarchar (64)): The sub type of the error.  The values for this vary depending on the MessageType.  For example, if MessageType is Exception, SubType is the name of the Exception class.
  • StackTrace (ntext): A stack trace for the code location where the error occurred (used when MessageType is Exception or TestError)
  • MessageTimeStamp (datetime): The time at which the error occurred
  • TestCaseId (int): The unique Id of the inner test (from the LoadTestCase table) in which the error occurred, or NULL for errors not associated with a specific inner test such as performance counter collection errors.
  • RequestId (int): The unique Id of the web test request (from the WebLoadTestRequestMap table) on which the error occurred, or NULL for errors not associated with web test request.

Table: LoadTestThresholdMessage: Stores one row of data for each threshold rule violation

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • TestRunIntervalId (int): Id of the collection interval during which the threshold rule violation occurred
  • CounterInstanceId (int): Id of the performance counter instance that had the threshold rule violation
  • MessageId (int): Unique Id of the threshold rule violation within this load test run
  • MessageText (nvarchar (2048)): Text describing the threshold rule violation

Overview of performance counter tables

        The metadata for all of the performance counters collected during a load test is stored in three related tables: LoadTestPerformanceCounterCategory, LoadTestPerformanceCounter, and LoadTestPerformanceCounter.

        This metadata includes all four components of performance counter identifier: computer name, category name, counter name, and instance name.

        Note that these three tables only store metadata about the performance counters; the sampled performance counter values are stored in LoadTestPerformanceCounterSample.

Table: LoadTestPerformanceCounter: Stores one row for each performance counter that is collected during the load test

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • CounterCategoryId (int): The CounterCategoryId from the LoadTestPerformanceCounterCategory row for the catgory containing this counter name
  • CounterId (int): The unique Id of this performance counter for this load test run
  • CounterName (nvarchar (255)): The name of the performance counter (for example "Available MBytes")

Table: LoadTestPerformanceCounterCategory: Stores one row for each performance counter category and computer on which the category is collected

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • CounterCategoryId (int): The unique Id of this performance counter category for this load test run
  • CategoryName (nvarchar (255)): The name of the performance counter category (for example "Memory")
  • MachineName (nvarchar (255)):   The name of the computer on which the category was collected
  • StartTimeStamp100nSec (bigint): A timestamp indicating when the category was first collected during the load test 

Table: LoadTestPerformanceCounterInstance: Stores one for each performce counter instance that is collected during the load test

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • CounterId (int): The CounterId from the LoadTestPerformanceCounter table for the perf counter of which this is an instance
  • InstanceId (int): Unique Id of this perf counter instance in this load test run
  • LoadTestItemId (int): For performance counters in the "LoadTest:*" categories, this uniquely identifies the item in the load test with which this performance counter is associated.   For example, for performance counters in the "LoadTest:Request" category, the LoadTestItemId is the value of the RequestId in the WebLoadTestRequestMap table. 
  • InstanceName (nvarchar (255)): The name of the performance counter instance (for example "_Total")
  • CumulativeValue (real): The final calculated value for this performance counter instance over the entire load test run
  • OverallThresholdRuleResult (tinyint): Indicates the most severe threshold rule result for this performance counter instance during the load test; 0 for Ok, 1 for Warning, 2 for Critical

Table: LoadTestPerformanceCounterSample: Stores the performance counter samples.  There is one for each performance counter instance collected for each sampling interval during the loadtest. Many of the columns in this table are fields of the .Net class System.Diagnostics.CounterSample which is used internally by the load test implementation, and their values don't make much sense outside that context.

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • TestRunIntervalId (int): The sequence number of the collection interval in which this sample was collected
  • InstanceId (int): The InstanceId from the LoadTestPerformanceCounterInstance table row containing for the performance counter instance of which this is a sample
  • ComputedValue (real): A value computed for the perf counter based on this sample and the previous sample (or NULL if there was no sample in the previous interval)
  • RawValue (bigint): The RawValue field of the System.Diagnostics.CounterSample value
  • BaseValue (bigint): The BaseValue field of the System.Diagnostics.CounterSample value
  • CounterFrequency (bigint): The CounterFrequency field of the System.Diagnostics.CounterSample value
  • SystemFrequency (bigint): The SystemFrequency field of the System.Diagnostics.CounterSample value
  • SampleTimeStamp (bigint): The SampleTimeStamp field of the System.Diagnostics.CounterSample value
  • SampleTimeStamp100nSec (bigint): The SampleTimeStamp100nSec field of the System.Diagnostics.CounterSample value
  • CounterType (int): The PerformanceCounterType field of the System.Diagnostics.CounterSample value
  • ThresholdRuleResult (tinyint): The result of any threshold rule applied to this sample: 0 for Ok, 1 for Warning, 2 for Critical
  • ThresholdRuleMessageId (int): The MessageId from the LoadTestThresholdMessage row with more details on any threshold violation thrown for this sample, or NULL if there was no threshold violation

Table: LoadTestRunAgent: Stores the names of the agent machines used for a load test run

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • AgentId (int): A unique Id of this agent during this load test run
  • AgentName (nvarchar (255)): The computer name of the agent

Table: LoadTestRunInterval: Stores one row for each performance counter collection interval during the load test run

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • TestRunIntervalId (int): The unique Id of this interval in this load test run
  • IntervalStartTime (datetime): The start time of the collection interval
  • IntervalEndTime (datetime): The end time of the collection interval

Table: LoadTestScenario: Stores the names of the Scenarios defined for a load test

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • ScenarioId (int) : The unique Id of the Scenario within this load test
  • ScenarioName (nvarchar (64)): The name of the Scenario

Table: WebLoadTestErrorDetail: Stores detailed data about a web test request when there is an error associated with a web test request

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • AgentId (int): The Id of the agent on which the error occurred
  • MessageId (int): The MessageId from the row in the LoadTestMessage table for the error with which this error detil is associated
  • WebTestRequestResult (image): A binary encoded version of the object that stores all of the data captured regarding the result of a web test request

Table: WebLoadTestRequestMap: Stores one row for each unique Uri to which a web test request is sent during the load test

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • RequestId (int): The unique Id of this request in this load test run
  • TestCaseId (int): The Id of the web test that generated this request
  • RequestUri (nvarchar (2048)): The Uri for the request.   This excludes the query string parameters except for those query string paramters with the property "

Table: WebLoadTestTransaction: Store the names of all transactions defined in the load test (this includes transactions defined in web tests, and transaction defined in unit tests using the BeginTimer()/EndTimer() methods.

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • TransactionId (int): The unique Id of the transaction in this load test run
  • TestCaseId (int): The TestCaseid from the LoadTestCase table for the test that defined the transaction
  • TransactionName (nvarchar (64)): The name of the transaction

Table: LoadTestSqlTrace: Stores collected when performing SQL tracing during a load test; the field correspond to SQL trace fields

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • TextData (ntext): The text of the SQL operation
  • Duration (bigint): The duration of the SQL operation
  • StartTime (datetime): The start time of the SQL operation
  • EndTime (datetime): The end time of the SQL operation
  • Reads (bigint): The number of reads that occurred while performing the SQL operation
  • Writes (bigint): The number of writes that occurred while performing the SQL operation
  • CPU (int): The CPU time required to perform the SQL operation
  • EventClass (int): An integer identifying the type of SQL operation traced

Table: LoadTestBrowsers: Stores the names of all browser types used during the load test

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • BrowserId (int): The unique Id of this browser
  • BrowserName (nvarchar (255)): The name of the browser

Table: LoadTestNetworks: Stores the names of all network types used during the load test

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • NetworkId (int): The unique Id of the network type
  • NetworkName (nvarchar (255)): The name of the network type

Tables used to store Timing Details

All of the following tables only have data stored in them when the "Timing Details Storage" option on the Load Test Run Settings is set to a value other than "None".

Table: LoadTestTestDetail: Stores the results of individual inner tests; there is one row for each test completed during the load test

Columns:

  • LoadTestRunId (int) :The unique Id of the load test run
  • TestDetailId (int): A unique Id for this row in the load test run
  • TimeStamp (datetime): The time that the test completed
  • TestCaseId (int): The TestCaseId from the LoadTestCase table for the row that identifies the test
  • ElapsedTime (float): The elapsed time to run the test in seconds
  • AgentId (int): The AgentId from the LoadTestAgent table row that identifies the agent on which the test was run
  • BrowserId (int): The BrowserId from the LoadTestBrowser table that identifies the browser type used for a web test
  • NetworkId (int): The NetworkId from the LoadTestNetwork table that identifies the network type used for a web test

Table: LoadTestPageDetail: Stores timing results of individual web test pages; there is one row for each web test page completed during the load test

Columns:

  • LoadTestRunId (int) : The unique Id of the load test run
  • PageDetailId (int) : A unique Id for this row in the load test run
  • TestDetailId (int): The TestDetailId from LoadTestTestDetail row with the result for the test containing this page
  • TimeStamp (datetime) : The time at which the page completed
  • PageId (int): The RequestId from the WebLoadRequestMap table (join on this to identify the Uri for the page)
  • ResponseTime (float): The response time for the page in seconds
  • ResponseTimeGoal (float): The response time goal for the page in seconds
  • GoalExceeded (bit): Bool indicating whether or not the response time goal was exceeded by the response time

Table: LoadTestTransactionDetail

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • TransactionDetailId (int): A unique Id for this row in the load test run
  • TestDetailId (int): The TestDetailId from LoadTestTestDetail row with the result for the test containing this transaction
  • TimeStamp (datetime): The time at which the transaction completed
  • TransactionId (int): The TransactionId from the WebLoadTestTransaction table (join on this to identify the transaction name)
  • ElapsedTime (float): The elapsed time to complete the transaction in seconds

Table: LoadTestTestSummaryData: Summarizes the detailed Test result data that is stored in LoadTestTestDetail; there is one row for each test in the load test run which rolls up the results for that test

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • TestCaseId (int): The TestCaseId from the LoadTestCase table for the row that identifies the test
  • TestsRun (int): The number of tests completed
  • Average (float): The average time to run the test in seconds
  • Minimum (float): The minimum time to run the test in seconds
  • Maximum (float): The maximim time to run the test in seconds
  • Percentile90 (float): The 90% percentile test time (90% of the tests completed in less than this time)
  • Percentile95 (float): The 95% percentile test time (95% of the tests completed in less than this time)

Table: LoadTestTransactionSummaryData: Summarizes the detailed transaction data that is stored in LoadTestTransactionDetail; there is one row for each transaction name used during the load test run which rolls up the results for that transaction.

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • TransactionId (int): The TransactionId from the WebLoadTestTransaction table (join on this to identify the transaction name)
  • TransactionCount (int): The number of tests completed
  • Average (float): The average time to run the transaction in seconds
  • Minimum (float): The minimum time to run the transaction in seconds
  • Maximum (float): The maximim time to run the transaction in seconds
  • Percentile90 (float): The 90% percentile transaction time (90% of the transactions completed in less than this time)
  • Percentile95 (float): The 95% percentile transaction time (95% of the transactions completed in less than this time)

Table: LoadTestPageSummaryData: Summarizes the detailed page data that is stored in LoadTestPageDetail; there is one row for each page Uri invoked during the load test run which rolls up the results for that page.

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • PageId (int): The RequestId from the WebLoadRequestMap table (join on this to identify the Uri for the page)
  • PageCount (int): The number of times this page was completed
  • Average (float): The average time to run the page in seconds
  • Minimum (float): The minimum time to run the page in seconds
  • Maximum (float): The maximim time to run the page in seconds
  • Percentile90 (float) : The 90% percentile page time (90% of the pages completed in less than this time)
  • Percentile95 (float): The 95% percentile page time (95% of the pages completed in less than this time)

Table: LoadTestPageSummaryByNetwork: Summarizes the detailed page data that is stored in LoadTestPageDetail by network type; there is one row for each page Uri for each network type invoked during the load test run which rolls up the results for that page on each network type.

Columns:

  • LoadTestRunId (int): The unique Id of the load test run
  • PageId (int): The RequestId from the WebLoadRequestMap table (join on this to identify the Uri for the page)
  • NetworkId (int): The NetworkId from the LoadTestNetwork table that identifies the network type used for a web  test
  • PageCount (int): The number of times this page was completed (on the the network type identified by NetworkId)
  • Average (float): The average time to run the page in seconds (on the the network type identified by NetworkId)
  • Minimum (float): The minimum time to run the page in seconds (on the the network type identified by NetworkId)
  • Maximum (float): The maximim time to run the page in seconds (on the the network type identified by NetworkId)
  • Percentile90 (float): The 90% percentile page time (on the the network type identified by NetworkId)
  • Percentile95 (float): The 95% percentile page time (on the the network type identified by NetworkId)
  • Goal (float): The response time goal for the page
  • PagesMeetingGoal (int): The number of pages run (on the the network type identified by NetworkId) with a response time less than the goal.

Comments

  • Anonymous
    February 13, 2006
    If you're interested in accessing the data in the load test results store directly to build your own...
  • Anonymous
    February 15, 2007
    Thanks, this was very useful :)
  • Anonymous
    March 22, 2007
    thanks this is great.One question.  What do zeros in the samples table mean?  Using your DB dictionary I have written sql queriy and can see the raw data.  However, in about 5% of the intervals I see '0' , i.e., nothing zero zilch nada, for average response time.That seems impossible.  During the load test there were 7 requests per second and each interval was 5 seconds long.  In other words there were 35 requests in every interval--I would think there would have to be a response returned during that period.  If not, I would hope VSTS would report null.I understand that sometimes the server being tested is too busy to report perfmon data, but doesn't VSTS report zero for this case?  I would think it would/should because reporting zero would be very confusing and (I think) would make average response times look really good (when they weren't).
  • Anonymous
    April 15, 2007
    In some of tables of  'LoadTest' database I cannot see any values. For example, table 'LoadTestTestSummaryData' does not contain values.Am I missing something?Thx.
  • Anonymous
    July 05, 2009
    Very useful but how do I actually see the content of a "long binary data" value?e.g. WebLoadTestErrorDetail.WebTestRequestResult