<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Ed Glas's blog on VS load testing</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/edglas/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/edglas/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 05:07:02 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Load Testing Visual Studio Online</title>
      <link>https://docs.microsoft.com/archive/blogs/edglas/load-testing-visual-studio-online</link>
      <pubDate>Tue, 26 Nov 2013 18:23:47 GMT</pubDate>
      <dc:creator><![CDATA[Ed Glas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edglas/2013/11/26/load-testing-visual-studio-online/</guid>
      <description><![CDATA[By Ed Glas, Jiange Sun, and Bill Barnett  In this post we discuss how we load test Visual Studio...]]></description>
      <content:encoded><![CDATA[<p>By Ed Glas, Jiange Sun, and Bill Barnett</p>  <p>In this post we discuss how we load test Visual Studio Online. This post illustrates how vital load testing is to our development lifecycle and to having a healthy service.</p>  <h4>Cloud Cadence</h4>  <p>First some background on our engineering processes. This is an important context for the rest of the paper.</p>  <p>Our development teams work in 3 week sprints, and at the end of each sprint, in parallel with the first week of the next sprint, we validate the bits and then deploy to the service:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/4075.image_4C02F0BB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/4075.image_5F00_4C02F0BB.png"><img title="image" style="display: inline;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/7144.image_thumb_601C0D44.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/7144.image_5F00_thumb_5F00_601C0D44.png" width="557" height="80" /></a> </p>  <p>An important principle we have is that our product is ready to ship at the end of the sprint. Verification week is not for finishing up testing new features, it is for doing final verification that we are ready to deploy. We do not want to find new issues during verification week, as our schedules are tight and blocking bugs will knock us off schedule and cause us to miss our deployment day. Once we get off schedule, it ends up snowballing into the next sprint. During verification week, we spend Monday through Wednesday verifying the product in our test environments. If we are green on Thursday we deploy to a pre-production environment, which we verify on Thursday and Friday. Once we have the green light in pre-prod, we deploy to production, which is targeted for Monday morning. </p>  <p>How do we make sure that at the end of the sprint our bits are ready to ship? We keep a constant high level of quality in our working branch. The tests we use during verification week are the same tests we run continuously in our working branch. If a test goes from green to red, we react quickly to get it back to green.</p>  <p>We have a similar approach with our load tests. We never want to stray far from being ready to deploy. However, our load test results require analysis to determine if we are green or red, so we do not run them continuously but we do run them regularly throughout a sprint. </p>  <h4>Why Load Testing?</h4>  <p>Load testing is a critical part of our software development process. We find many serious issues in load testing, everything from performance regressions, deadlocks and other timing-related bugs, to memory leaks that can’t be effectively found with functional tests. Load testing is critical to being able to confidently deploy.</p>  <h4>Visual Studio Online and Team Foundation Server</h4>  <p>Throughout this paper I refer to both Visual Studio Online and Team Foundation Server. Several of the services available in Visual Studio Online were previously packaged as an offering named Team Foundation Service (which has been retired as a product name). Most of the capabilities of Visual Studio Online are derived from a common code base that is shared with Team Foundation Server, Microsoft’s on-premises offering for software development teams. Our product team builds both Visual Studio Online and Team Foundation Server, and these offerings will continue to co-evolve. Since they are derived from the same code base, we are able to leverage test assets from TFS to test Visual Studio Online.</p>  <h4>Load Testing Visual Studio Online and Team Foundation Server</h4>  <p>As you will see, we use load tests to test a variety of different things in VSO and TFS. The TFS team was the very first adopter of Visual Studio load tests back in the 2003 and 2004 time frame, and TFS continues to use Visual Studio load tests for all load testing today. In addition to using load agents to test our on-premises product, we recently began using Visual Studio Online cloud-based load testing service to load test Visual Studio Online. </p>  <p>At the heart of all our load tests are a set of “scripts” that we use to drive load to the various subsystems in TFS. The test scripts we use in our load tests use different test types and target different layers of our architecture, depending on the subsystem they are targeting. TFS has web service end points, rest end points, and web front ends. Visual Studio and other thick clients call TFS via the client object model, while our web clients call TFS via a set of private REST endpoints on the server. </p>  <p>In order to generate the massive loads we need, our test scripts must be very efficient. We use Web tests to drive load to our Web site and Web pages, and “unit” tests to drive load to our Web services. I put the quote around unit tests as these are really API integration tests, not unit tests in the purist sense. Most of our tests drive load at the client OM layer. We have a few tests that target the underlying (non-public) Web services proxy layer because the client OM doesn’t scale well on a single client as we scale up the load.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/1881.image_4647D715.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/1881.image_5F00_4647D715.png"><img title="image" style="display: inline;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/8030.image_thumb_1062E1FB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/8030.image_5F00_thumb_5F00_1062E1FB.png" width="512" height="419" /></a> </p>  <p>&#160;</p>  <p>&#160;</p>  <p>All test scripts use common configuration to determine which TFS instance to target in the test, and scripts can be configured to target an on-premises server or an instance of Visual Studio Online running on Azure. This is a fundamental point, and key to us being able to re-use the same scripts to drive load to different TFS instances configured in a variety of ways. </p>  <p>&#160;</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/5756.image_1D5CC20C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/5756.image_5F00_1D5CC20C.png"><img title="image" style="display: inline;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/7774.image_thumb_22CB32B0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/7774.image_5F00_thumb_5F00_22CB32B0.png" width="555" height="399" /></a> </p>  <p>We vary the script test mix and load patterns to suit the purpose of each load test. Below in this paper we will go through the different types of load tests we run and their purpose, and as we do we will outline the type of load patterns and test mix we use.</p>  <h4>Testing On Azure vs. On-premises</h4>  <p>Two critical aspects to successfully load testing TFS are 1) carefully scripting the server to simulate realistic load, and 2) carefully managing our data shape. TFS runs both on-premises and in the cloud on Azure. The code that runs on-premises and in the cloud is largely the same, but the topology and data scale are different. In our on-premises installations, we see scale up of a single instance, while in our cloud service we see scale out of many, many customers and many collection databases. </p>  <p>One difference between TFS on-premises and TFS on Azure is TFS on Azure we have many thousands of customer collections. In our on-premises product, a large installation will have on the order of tens of collections, but each of these collections can have many terabytes of data.</p>  <p>When load testing TFS on Azure, we start by load testing on Azure dev fabric. Azure dev fabric is a high-fidelity emulator that runs in a local development environment. While running on dev fabric is not sufficient, we are able to test a significant part of the product, and as a result catch a significant number of bugs before going to real azure. Azure dev fabric has the advantage that it is fast to set up our large data scale environments, and easier to debug. But of course there are major architectural differences, the most prominent being in dev fabric we use on-premises SQL, whereas on Azure we use SQL Azure. To get to an “interesting” number of collections on dev fabric, we really crank up the tenant density per database.</p>  <p>Once we have stabilized on Azure dev fabric, we move to load testing on Azure. When testing on Azure, we use the Visual Studio Online load testing service. </p>  <p>Here is the test setting we use to our load tests using the Visual Studio Online load testing agents:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/1682.clip_image004_1922C47A.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/1682.clip_5F00_image004_5F00_1922C47A.jpg"><img title="clip_image004" style="display: inline;" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/6431.clip_image004_thumb_1771F8A6.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/6431.clip_5F00_image004_5F00_thumb_5F00_1771F8A6.jpg" width="564" height="397" /></a></p>  <p>And here is the Agent Count property in the load test run settings in the load test, which controls the number of agents our test will run on:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/2577.clip_image005_48913346.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/2577.clip_5F00_image005_5F00_48913346.png"><img title="clip_image005" style="display: inline;" border="0" alt="clip_image005" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/2273.clip_image005_thumb_7CC55C8C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/2273.clip_5F00_image005_5F00_thumb_5F00_7CC55C8C.png" width="324" height="279" /></a></p>  <p>See the help topic <a href="https://tfs.visualstudio.com/en-us/learn/load-testing">here</a> for a complete walkthrough of how to use the load testing service.</p>  <h5>Load Generation on Azure</h5>  <p>A big difference between testing on Azure and testing on-premises is the load generators we use. When testing our on-premises product, we simply use on-premises load agents. Until recently when we started dogfooding the Visual Studio Online load testing service, when testing on Azure we did not have a good answer for load generators. We tried a lot of different things:</p>  <ul>   <li>Load agents on corpnet. Our Corpnet network proxy was the bottleneck and shut us down at relatively light loads.</li>    <li>Load agents on azure with load controller on corpnet. The network connection between the agents and controller was too flaky, leading to unreliable test runs (run would fail part way in to a many hour run).</li>    <li>Load agents and controller on Azure VMs. Again the agent and controller network connection wasn’t reliable enough, causing runs to fail. Fundamentally we see more network noise in the cloud, and the connections between the agent and controller weren’t built for the noisy network we see in the cloud.</li>    <li>Load agents running independently on VMs, test results manually merged. Merging results was painful, but at least it was reliable!</li> </ul>  <p>When we are on our tight deployment schedules, and our load runs go for 8 hours, so we must be able to reliably get results from our load tests or we risk deploying with blind spots for failed runs, or delaying the deployment until we get a complete set of results. </p>  <p>Over the past six months we have been dogfooding the Visual Studio Online load testing service which is hosted in Azure. This is a great service that has enabled us to drive load reliably at scale from Azure, solving one of our critical needs for load testing the service.</p>  <h5>Data Collection on Azure</h5>  <p>Another big challenge testing in Azure has been collecting performance data from the system under test. For TFS, we have the following types of interesting data we collect from the TFS application tier:</p>  <ul>   <li>Perf counters. We collect CPU, memory, disk, network, plus TFS-specific counters and ASP.NET counters</li>    <li>Event log data</li>    <li>TFS Activity logs. The activity log has a log entry for each call into the TFS web service or REST APIs. It records the command, time of the request and response (so we can compute server response time), the outcome (success/failure), as well as a few other fields. </li>    <li>TFS ETW traces. These are highly configurable internal traces in our product code that we use to debug issues.</li> </ul>  <p>The on-premises Visual Studio load testing product enables you to collect performance counters from the system under test, but in order to do so the load test controller must be able to connect to the machines under test via non-internet friendly ports (read: not port 80 or 443). This simply does not work well against machines running in the cloud, and in fact is not supported by the load testing service. On-premises you can also configure a data collection agent on the machine under test, but installing and configuring this agent is not supported by the load testing service. </p>  <p>On our production service, we have a pretty rich data collection and monitoring system in place for our service that collects all this data and stores it in a data warehouse for mining and analysis. </p>  <p>We leverage this system for our cloud load tests as well. Really I believe this is the right pattern to follow for load testing – use the same system you use to collect data and monitor your production service to monitor your test runs. This has a bunch of advantages: your monitoring system gets tested too, and any improvements you make for your test environments carries over to prod, and visa-versa.</p>  <p>The one exception here is perfmon counters, as we collect those via a different means on the service. We are manually collecting perf counters on the TFS web and worker roles (the system under test) by kicking off perfmon to log the counters to a file before each run. </p>  <p>The downside with this approach is you do not get the nice view in the load test analyzer that ties together performance data collected from the load agents with the perf counter data collected from the system under test. We are able to construct these views using our monitoring system, however.</p>  <p>The load testing service does not solve our problem of collecting perf counters from the system under test, as this is not yet supported. I know they have plans to cover this, but it is too early to disclose them. The load testing service does supply the same rich set of data from the load test agents, and we collect our activity log data using a data collector.</p>  <p>Here is a screen shot of our GoBig load test running on the load testing service. </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/6758.image_6DAE7DB2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/6758.image_5F00_6DAE7DB2.png"><img title="image" style="display: inline;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/1881.image_thumb_1A57378C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/1881.image_5F00_thumb_5F00_1A57378C.png" width="559" height="291" /></a> </p>  <p>This is a simplified experience when compared to data we get when running a load test using local load agents. However, we get enough data to determine if the test is running successfully, which is the main thing we are looking for while the test is running. We want to make sure we don’t let the test run for 8 hours only to find it wasn’t configured properly.</p>  <p>Below are a two screen shots of using the Load Test Analyzer to analyze a GoBig load test result. Post-run analysis is the same experience as analyzing a run using local load agents. </p>  <p>Here is the key indicators graph: </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/1738.clip_image009_5D5305F9.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/1738.clip_5F00_image009_5F00_5D5305F9.jpg"><img title="clip_image009" style="display: inline;" border="0" alt="clip_image009" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/5481.clip_image009_thumb_37E9128B.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/5481.clip_5F00_image009_5F00_thumb_5F00_37E9128B.jpg" width="562" height="362" /></a></p>  <p>And the Tests table with a roll up of test results per test in the load test. Again, this is the same experience whether generating load from Azure or from local load agents.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/5811.clip_image011_0FD6636C.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/5811.clip_5F00_image011_5F00_0FD6636C.jpg"><img title="clip_image011" style="display: inline;" border="0" alt="clip_image011" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/4278.clip_image011_thumb_4EC7E407.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/4278.clip_5F00_image011_5F00_thumb_5F00_4EC7E407.jpg" width="565" height="290" /></a></p>  <h5>Direction We Are Headed</h5>  <p>I have long been a proponent that you should use your production environment monitoring system to also monitor your system under test during a load test, and am happy that we are doing that in our load testing. That way you are testing your operational environment and operational readiness along with the app. After all, the tools you need to debug a problem during or after a load test are the same tools you need to debug problems in production. This is a key tenet of DevOps. </p>  <p>We are now actively working on adopting our DevOps monitoring solutions for Visual Studio Online. This includes performance monitoring on the app tier, as well as out-side in monitors from Global Service Monitoring. This configuration will enable us to relatively easily configure monitoring in our test environments in the same way as production.</p>  <h4>Types of Load Testing We Do</h4>  <p>At this point we have described how we do load testing on premises and in the cloud. Now we will move to describing the different types of load tests we run, and what the purpose of each of these tests is.</p>  <h5>Performance Regression Testing</h5>  <p>One of our most important Load Testing activities each Sprint is to ensure that no performance or scale regressions are introduced when an update is deployed to the TFS Service. The data scale on the service has grown very large, as have our peak loads are we regularly see over 1000 RPS on the service. Many of these requests are for a large amount of data (Version Control file downloads for example) or require a fair amount of SQL processing (Work Item queries for example).</p>  <p>In order to ensure that the service can handle this load, we need to test on a similar configuration with a similar amount of load.&#160; To generate the amount of load needed we need to use the Load Testing Service with multiple load test agents because the Version Control tests included in our load test make heavy use of the local disk to create, edit, check in, and later get files.</p>  <p>By using a large test environment and using the Load Testing Service to generate high load levels, we have been able to identify several performance regressions during verification rather than in production.&#160; </p>  <p>We use the Load Testing service to run a six hour load test with a load of over 800 requests per second. At the end of the run we download the load test result into our on-premises load test results database where we can view and analyze the results in either Visual Studio or in Excel using the Load Test reports plugin.&#160; In Excel we ran the Load Test Comparison report to compare the result of the current Sprint with the previous one. On the sheet that compares the test results we noticed that many of the Work Item Tracking tests in our load test had a higher execution time than the baseline result from the previous sprint: </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/4812.clip_image013_6D9E57E5.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/4812.clip_5F00_image013_5F00_6D9E57E5.jpg"><img title="clip_image013" style="display: inline;" border="0" alt="clip_image013" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/6523.clip_image013_thumb_0F5A0AAA.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/6523.clip_5F00_image013_5F00_thumb_5F00_0F5A0AAA.jpg" width="559" height="256" /></a></p>  <p>This led us to further investigation and a fix for this regression.</p>  <h5>Scale Testing</h5>  <p>One of the big challenges with running the TFS service has been staying ahead of the scale curve. The pattern we have seen is that with each order of magnitude increase in the number of accounts and users, we have encountered new bottlenecks in scale. Logic would tell you that scale is linear and you can predict the next server tipping point by extrapolating out resource utilization on the server to see when you will run out resources, and thus fall over. For example, if each new user takes 10KB of memory, then we can multiply out to see how many concurrent users when you will run out of memory. At that point, you can simply add another AT, or increase your role size on Azure so the machine will have more memory.</p>  <p>However in practice, it is never linear, and the server almost always tips over in ways you didn’t foresee. As a result, it is very hard to predict where your system will fall over. And often there is a lot of engineering work required to overcome the scale bottleneck, so if you wait until it happens in production you will not have enough time to react and keep your site healthy.</p>  <p>To stay ahead of outages due to scale on TFS on Azure, we do targeted scale testing. On Azure, our most interesting scale factor is the number of accounts and users. In order to run interesting scale tests, we need to run against TFS instances with hundreds of thousands of accounts and users. Our initial approach to preparing this test environment was to start fresh and then run the scripts that do account and user creation to build up interesting data sets. As you can imagine, we found a number of stress bugs in our account and user creation code this way, but it still took at two to three days to get an environment populated which was unacceptable. </p>  <p>We changed our strategy for data population to instead create what we called a “golden instance” of the data, which could then be replicated into our test environments. We had already developed the data replication code for our functional tests, now we needed to do it at scale, which was a matter of doing the data population one time and then saving off the data. This has the advantage of being faster and more reliable, and the data has been through the same migration path as data on the service. </p>  <p>In a recent run using the load testing service, we found a large regression in both memory and CPU that was caused by one bug. This table shows the results gathered using perfmon during the load test before and after the bug was fixed:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/1832.image_06F63553.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/1832.image_5F00_06F63553.png"><img title="image" style="display: inline;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/2330.image_thumb_1866962B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/2330.image_5F00_thumb_5F00_1866962B.png" width="542" height="273" /></a> </p>  <h5>Deployment Testing</h5>  <p>As described above, we deploy to Azure at the end of each sprint. Visual Studio Online is architected into separate services that can be deployed to and serviced independently. The current set of services are:</p>  <ul>   <li>Shared Services, which handles user authentication, access control, and account management.</li>    <li>Visual Studio Online Services, which manages the core TFS functions of work item tracking, version control, and build.</li>    <li>Machine Pool Management Service, which manages the set of machines we use to do builds for customers on Visual Studio Online. </li>    <li>Load testing service, which manages running load tests on the machine pool service.</li> </ul>  <p>Each service has a unique architecture, but follows a similar pattern of web front ends hosted on web roles, job agents hosted on worker roles, and SQL databases hosted in SQL Azure.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/5428.image_5E77533E.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/5428.image_5F00_5E77533E.png"><img title="image" style="display: inline;" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/6567.image_thumb_6B05005A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/6567.image_5F00_thumb_5F00_6B05005A.png" width="548" height="444" /></a> </p>  <p>&#160;</p>  <p>Our deployments are designed to achieve zero downtime to our customers. In order to achieve that, we deploy in three phases:</p>  <p>Phase 1: deploy new binaries to our web front ends and job agents.</p>  <p>Phase 2: Run jobs to upgrade the the databases.</p>  <p>Phase 3: Run jobs to do any necessary modifications of the data stored in the databases.</p>  <p>In order for this to result in zero down time, each service must keep compatibility at the web front end, and more importantly, the service must be able to stay up even through the different phases of the upgrade, which means that new binaries must be able to work with the old db schema and data shapes.</p>  <p>What’s more, customer data is stored in 1000s of databases in SQL azure. The code we use to service the databases actually runs as a set of jobs in the job service. We have found that running these jobs will put a large load and thus a large stress on the service. We need to ensure the service remains operational and responsive to our customers while sustaining the load from servicing. </p>  <p>To test our upgrades, we run a set of functional tests at each phase of the deployment to ensure the parts are compatible. But this isn’t sufficient for measuring downtime. To test the system remains available throughout the deployment, we run a load test while the upgrade is happening. The load test has the advantage of keeping constant activity going against the service so we can detect any outages. In this test it is important that we have a data shape on the test system that is similar to the data we have in production. </p>  <p>In a recent run, we found that we were processing upgrade jobs “too fast”, resulting in loading account specific data into memory for all 120,000 accounts in our test deployment.&#160; This eventually led to running out of memory. Here’s a graph showing how the number of accounts loaded went up to 120,000 accounts, driving the memory used up to 16 GB, running the process out of memory. The short term fix was to throttle the rate of upgrade jobs, while the long term fix was to manage the number of loaded account by memory consumption as well as time, and start unloading accounts on the job agent as we see memory pressure.</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/6087.clip_image021_28B1E817.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/6087.clip_5F00_image021_5F00_28B1E817.png"><img title="clip_image021" style="display: inline;" border="0" alt="clip_image021" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/58/11/metablogapi/7418.clip_image021_thumb_67A368B2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-58-11-metablogapi/7418.clip_5F00_image021_5F00_thumb_5F00_67A368B2.png" width="578" height="243" /></a></p>  <h5>Directed Load Testing</h5>  <p>Another set of load tests we run are directed tests, aimed at isolating a particular component or service for performance, stress, and scale testing. We have found that targeting load testing at a particular component is a much more effective way to quickly find stress-related bugs in that component, vs. just adding that component into the larger load test that hits everything on the service. </p>  <p>By focusing a load test on a particular component or service we are able to drive more load to it and thus reduce the time to find timing or concurrency related bugs. It also isolates the bugs to that particular service, which helps with debugging. Whenever we are bringing on a new service or introducing a new architectural pattern to an existing service, the team bringing the change needs to do this type of targeted testing before bringing it to production. Recent examples of these changes are introducing Shared Platform Services and the load testing service itself. An example of an architectural change was the introduction of Team Rooms to TFS, or the switch from PaaS build machines to IaaS build machines.</p>  <h5>Testing in Production</h5>  <p>The larger our service becomes, the harder and costlier it is to simulate scale in our load tests. A fundamental tenet is that we introduce change incrementally to avoid large destabilizing changes. In addition to preventing performance and scale issues, we are spending a lot more time analyzing the rich data we are getting back from production. One of the challenges we face is we collect so much data, how do we make sense of it all?</p>  <p>We systematically are analyzing the following data to look for regressions:</p>  <ol>   <li>Activity log analysis. The activity log logs all calls to a service. </li>    <ol>     <li>Increases in failed command counts</li>      <li>Increases in response times, which indicates a perf regression</li>      <li>Increases in call counts, which indicates a client chattiness regression</li>   </ol>    <li>CPU and memory usage. We analyze CPU perf counters to look for increased CPU usage after a deployment, and memory to look for increased memory usage as well as memory leaks</li>    <li>PerfView analysis. We are now taking <a href="https://www.microsoft.com/en-us/download/details.aspx?id=28567">PerfView</a> dumps in production after each deployment to find memory regressions and CPU regressions in production. PerfView has become our favorite tool for doing live site debugging.</li> </ol>  <p>Generally we want to do enough prior to deployment to ensure the deployment is successful, but we also recognize that we can improve the service a lot by systematically analyzing the rich set of data we are collecting and using that data to drive improvements back into the service. </p>  <h3>Conclusion</h3>  <p>You can see from this paper how intrinsic load testing is to our software development lifecycle. Regularly running load tests is critical to maintaining a high level of quality during our sprints and deploying every three weeks. The Visual Studio Online load testing service has been a welcome addition to our toolset, as it enables us to reliably generate large loads to our test environments in Azure.</p>]]></content:encoded>
    </item>
    <item>
      <title>A New Role for Me</title>
      <link>https://docs.microsoft.com/archive/blogs/edglas/a-new-role-for-me</link>
      <pubDate>Mon, 14 Feb 2011 13:52:00 GMT</pubDate>
      <dc:creator><![CDATA[Ed Glas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edglas/2011/02/14/a-new-role-for-me/</guid>
      <description><![CDATA[I have been quiet on my blog for a while, mostly because I have switched jobs. I had been running...]]></description>
      <content:encoded><![CDATA[<p>I have been quiet on my blog for a while, mostly because I have switched jobs. I had been running dev, test, and PM for the Team Test team here in Raleigh NC, reporting to the PUM of Team Test, <a href="https://blogs.msdn.com/b/amit_chatterjee/">Amit Chatterjee</a> in our India Development Center. My team built the load test tools and TCM server product in VS 2010. At the end of VS 2010 we decided to consolidate the test tools work to the IDC facility. <a href="https://blogs.msdn.com/b/nkamkolkar/">Neelesh Komkolkar</a> is now PM for the load testing tools.</p>
<p>I took on the role as QA manager for the Team Foundation Server (TFS) product team. I now run the TFS QA team, with half my team in being in NC and half in Redmond. While I was sad to let the load testing and TCM products go, I am excited by the new challenges and opportunity afforded in my new role.</p>
<p>Ed.</p>]]></content:encoded>
    </item>
    <item>
      <title>Interviewing for an SDET job at Microsoft</title>
      <link>https://docs.microsoft.com/archive/blogs/edglas/interviewing-for-an-sdet-job-at-microsoft</link>
      <pubDate>Mon, 14 Feb 2011 13:44:32 GMT</pubDate>
      <dc:creator><![CDATA[Ed Glas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edglas/2011/02/14/interviewing-for-an-sdet-job-at-microsoft/</guid>
      <description><![CDATA[I have been doing a lot of interviewing lately. First of all, if you are interested in coming to...]]></description>
      <content:encoded><![CDATA[<p>I have been doing a lot of interviewing lately. First of all, if you are interested in coming to sunny Raleigh, NC to work as an SDET on my team, let me know! We are hiring.</p>  <p>Second, I want to give people a flavor of what to be prepared for in an interview. </p>  <p>In a typical interview here we ask you to code up some function on the whiteboard and then discuss test cases for the function. </p>  <p>String functions in particular are popular. So something like code a function to reverse the words in a string: “The cat jumped over the fence” to “ehT tac depmuj revo eht ecnef”. </p>  <p>The best approach for coding is to first think about the algorithm. For example, write down on the white board the most common simple example, then think through the algorithm. Once you have that, code it. Typically the coding should be done in about 20-30 minutes, so if it seems your algorithm is not simple you are probably doing something wrong.</p>  <p>Then come up with interesting test cases for it:</p>  <p>A common case: “I went to the park”</p>  <p>Edge cases: </p>  <p>really short: “A”, “”</p>  <p>really long (say a book)</p>  <p>Extra spaces: </p>  <p>“&#160; I went&#160;&#160;&#160; to&#160;&#160;&#160; the park&#160; ”</p>  <p>“I went&#160;&#160;&#160; to&#160;&#160;&#160; the park”</p>  <p>“&#160; I went to the park”</p>  <p>“I went to the park ”</p>  <p>“ I went to the park ”</p>  <p>Tabs (is this whitespace?)</p>  <p>Test cases with non-alpha characters would also be interesting.</p>  <p>You get the idea.</p>  <p>Another one might be insert an element into a sorted linked list. You can look on the internet for other types of coding questions.</p>  <p>It is also good to think about: </p>  <p>- running on different language OS, or different language VS (say a far east language, or bi-directional language)</p>  <p>- performance (how fast is it) and stress (e.g. memory leak detection)</p>  <p>- usability </p>  <p>and other types of non-functional testing.</p>  <p>You might also be asked to test some piece of software, like the file open dialog in excel, or some object, like a tire, coffee cup, or battery.</p>  <p>I hope that helps, and happy interviewing!</p>  <p>Ed.</p>]]></content:encoded>
    </item>
    <item>
      <title>Plugins for Handling JSON and msbin1 SilverLight Payloads on codeplex</title>
      <link>https://docs.microsoft.com/archive/blogs/edglas/plugins-for-handling-json-and-msbin1-silverlight-payloads-on-codeplex</link>
      <pubDate>Sat, 07 Aug 2010 12:19:35 GMT</pubDate>
      <dc:creator><![CDATA[Ed Glas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edglas/2010/08/07/plugins-for-handling-json-and-msbin1-silverlight-payloads-on-codeplex/</guid>
      <description><![CDATA[We enabled two new key extensibility points in VS 2010 to better handle rich post bodies that we...]]></description>
      <content:encoded><![CDATA[<p>We enabled two new key extensibility points in VS 2010 to better handle rich post bodies that we often see with “web 2.0” style apps and with SilverLight. The first is you can create custom editors for the request body: <a title="Request Body Plugins" href="https://blogs.msdn.com/edglas/archive/2010/03/24/web-test-authoring-and-debugging-techniques-for-visual-studio-2010.aspx#PostBodyEditor">Request Body Plugins</a> (also here: <a href="https://msdn.microsoft.com/en-us/library/ff458708(v=VS.100).aspx">How to: Create a Custom HTTP Body Editor for the Web Performance Test Editor</a>). The second is you can add new tabs to the Web Test result viewer:&#160; <a href="https://msdn.microsoft.com/en-us/library/ff458704(v=VS.100).aspx">How to: Create a Visual Studio Add-In for the Web Performance Test Results Viewer</a>. </p>  <p>Mahipal Kante, the dev lead for load test, leveraged these extensibility points to build a great set of plugins for handling the WCF msbin1 format and JSON format. It enables both editing the parameter values in the editor as well as viewing them in the results viewer. </p>  <p>The beta is available here: <a title="https://teamtestplugins.codeplex.com/releases/view/43166" href="https://teamtestplugins.codeplex.com/releases/view/43166">https://teamtestplugins.codeplex.com/releases/view/43166</a>.</p>  <p>Ed.</p>]]></content:encoded>
    </item>
    <item>
      <title>MSDN Docs Updated for July</title>
      <link>https://docs.microsoft.com/archive/blogs/edglas/msdn-docs-updated-for-july</link>
      <pubDate>Sat, 07 Aug 2010 11:18:00 GMT</pubDate>
      <dc:creator><![CDATA[Ed Glas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edglas/2010/08/07/msdn-docs-updated-for-july/</guid>
      <description><![CDATA[Of all the great things we did with the product in 2010, one area I was surprised and pleased by is...]]></description>
      <content:encoded><![CDATA[<p>Of all the great things we did with the product in 2010, one area I was surprised and pleased by is how far our documentation came thanks to the heroics of <a href="https://blogs.msdn.com/b/howie_hillikers_blog/">Howie Hilliker</a>. Howie has been busy since we shipped, continuing to beef up the MSDN documentation. We get regular updates to the docs through &ldquo;continuous publication&rdquo;, or CPub, and we recently dropped the July updates on the site.</p>
<p>Here is a list of the new and updated topics:</p>
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td width="956" valign="bottom">
<p><b>New topics:</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Specify the Maximum Size for the Log File</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Troubleshooting Network Emulation in Load Tests</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Walkthrough: Adding a Loop to a Web Performance Test</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Run a Load Test Containing Web Performance Tests that Collects ASP.NET Profiler Data</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Manually Create a Load Test Performance Report Using Microsoft Word</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Updated topics (Customer feedback bugs):</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added information on ClassInitialize and TestInitialize attributes:</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Anatomy of a Unit Test</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added C# and Visual Basic code snips displaying accessors</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Unit Tests for Private, Internal, and Friend Methods</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added screenshots and information for using SQLExpress</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Select a Load Test Results Repository</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added codes snip for using "Tag Inner Text" validation rule and added links to validation and extraction walkthrough</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Using Validation and Extraction Rules in Web Performance Tests</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added note regarding IIS application pool credentials (closed PU bug)</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Collect IntelliTrace Data to Help Debug Difficult Issues</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added Tip note suggesting the use of the ColorWebApp ASP.NET&nbsp; sample created in the walkthrough to experiment with</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Create a Coded Web Performance Test</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Cleaned up art - numbering sequence</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Running Unit Tests on Multiple Machines Using a Test Controller and Test Agents</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Walkthrough: Using a Test Controller and Test Agents in a Load Test</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Using Test Controllers and Test Agents with Load Tests</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Configuring Test Controllers and Test Agents for Load Testing</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Reported bug - waiting on resolution</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Specify Test Agents to Use in Load Test Scenarios</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Fixed confusion over "Performance session" vs. "ASP.NET Profiler adapter" &amp; added links</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Start a Performance Session on a Web Application from the Web Performance Test Editor</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Load Test Analyzer Overview</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added Links to the following topics</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added link to new related walkthrough topic</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Adding Loop and Branch Logic to Web Requests in Web Performance Tests</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added links to the various walkthrough topics on binding to db, csv and XML data sources.</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Binding a Data Source to a Web Performance Test</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added links to "Binding a Data Source to a Web Performance Test"</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Walkthrough: Adding Data Binding to a Web Performance Test</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Walkthrough: Adding Data Binding to a Web Performance Test (CSV File)</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Walkthrough: Adding Data Binding to a Web Performance Test (XML File)</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added link to new walkthrough on using a loop condition in a Web performance test</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Web Performance Test Walkthroughs</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>What's New for Web Performance and Load Testing</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Add Loops to Web Performance Tests Requests</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added information on DLL version error work-around</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Create a Load Test Plug-In</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Create a Recorder Plug-In</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Create a Request-Level Plug-In</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Create a Web Performance Test Plug-In</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added link to new topic "How to: Run a Load Test Containing Web Performance Tests that Collects ASP.NET Profiler Data"</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Configure ASP.NET Profiler for Load Tests Using Test Settings</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Create a Test Setting for a Distributed Load Test</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added link to new topic "Troubleshooting Network Emulation in Load Tests"</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Add Networks Using the Load Test Editor</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Specifying Virtual Network Types in a Load Test Scenario</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Troubleshooting Load and Web Performance Tests</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Troubleshooting Load Tests</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Running Load Tests</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added link to new topic "How to: Specify the Maximum Size for the Log File"</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Modifying Load Test Logging Settings</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">&nbsp;</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p><b>Added link to new topic "How to: Manually Create a Load Test Performance Report Using Microsoft Word"</b></p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>Reporting Load Tests Results for Test Comparisons or Trend Analysis</p>
</td>
</tr>
<tr>
<td width="956" valign="bottom">
<p>How to: Create Load Test Performance Reports Using Microsoft Excel</p>
</td>
</tr>
</tbody>
</table>
<p>Ed.</p>]]></content:encoded>
    </item>
    <item>
      <title>Version 3.5 of the Performance Testing Quick Reference Guide Available</title>
      <link>https://docs.microsoft.com/archive/blogs/edglas/version-3-5-of-the-performance-testing-quick-reference-guide-available</link>
      <pubDate>Sat, 07 Aug 2010 11:06:55 GMT</pubDate>
      <dc:creator><![CDATA[Ed Glas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edglas/2010/08/07/version-3-5-of-the-performance-testing-quick-reference-guide-available/</guid>
      <description><![CDATA[Geoff Gray has done it again, adding a bunch of new content to the Quick Reference Guide at...]]></description>
      <content:encoded><![CDATA[<p>Geoff Gray has done it again, adding a bunch of new content to the Quick Reference Guide at </p>  <p><a href="https://vsptqrg.codeplex.com/">https://vsptqrg.codeplex.com/</a>.</p>  <p>I strongly recommend you download this documentation and keep it in “your back pocket”. One thing to note is that in its current form it does not get indexed by search engines, so you need to actually download the pdf. </p>  <p>Here is a list of the new topics:</p>  <blockquote>   <p>--NEW-- How cache settings can affect your testing and app performance 19 </p>    <p>--NEW-- How a Load Test Plugin is executed on a test rig 29 </p>    <p>--NEW-- Sharing State across agents in a load test rig is not supported out of the box 30 </p>    <p>--NEW-- Customizing and extending the available network emulation settings 66 </p>    <p>--NEW-- New Performance Counters in .NET 4.0</p>    <p>--NEW-- Content-Length=0 Header not sent resulting in HTTP 411 Length Required Error 99 </p>    <p>--NEW-- Web and load tests stay in “Pending” state for a long time before starting 99 </p>    <p>--NEW-- Error that test could not run because the network emulation is required 100 </p>    <p>--NEW-- Error/Crash in “Open and Manage Load Test Results” dialog 100 </p>    <p>--NEW-- Calls to CaptchaGenerator.aspx fail during playback 101 </p>    <p>--NEW-- Request failure with improperly encoded query strings calling SharePoint 2010 101 </p>    <p>--NEW-- Network Emulation does not work in any mode other than LAN 101 </p>    <p>--NEW-- Error: Request failed: No connection could be made because the target machine actively refused it 103 </p>    <p>--NEW-- MaxConnection value in App.Config is not honored when running a load test 103 </p>    <p>--NEW-- Web Test Authoring and Debugging Techniques 104 </p>    <p>--NEW-- Troubleshooting Network Emulation 123 </p>    <p>--NEW-- Best Practice: Understanding the ROI for test automation 140 </p>    <p>--NEW-- How to create guaranteed unique user IDs for UNIT tests 171 </p>    <p>--NEW-- How to create a sync point for starting load tests 173 </p>    <p>--NEW-- How to set default extensions that the WebTest recorder will ignore 173 </p>    <p>--NEW-- Gotcha: VS 2008 and out of memory 174 </p>    <p>--NEW-- Gotcha: Timeout attribute in coded web test does not work during a load test 174 </p>    <p>--NEW-- How to extend recorder functionality with plugins 185 </p>    <p>--NEW-- Stand-Alone Network Emulation and CodePlex 193 </p> </blockquote>  <p>Thanks for putting this new content together Geoff!</p>  <p>Ed.</p>]]></content:encoded>
    </item>
    <item>
      <title>New SharePoint 2010 Load Test Toolkit Released</title>
      <link>https://docs.microsoft.com/archive/blogs/edglas/new-sharepoint-2010-load-test-toolkit-released</link>
      <pubDate>Sat, 07 Aug 2010 10:39:59 GMT</pubDate>
      <dc:creator><![CDATA[Ed Glas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edglas/2010/08/07/new-sharepoint-2010-load-test-toolkit-released/</guid>
      <description><![CDATA[The SharePoint team released the Administration Toolkit for SharePoint 2010 (SPAT2010).  One part of...]]></description>
      <content:encoded><![CDATA[<p>The SharePoint team released the <b><a href="https://www.microsoft.com/downloads/details.aspx?FamilyID=718447d8-0814-427a-81c3-c9c3d84c456e&amp;displaylang=en">Administration Toolkit for SharePoint 2010 (SPAT2010)</a>.</b></p>  <p>One part of this toolkit is a great new <a href="https://technet.microsoft.com/en-us/library/ff823731.aspx">load testing kit</a> for 2010. </p>  <p>The toolkit was initially developed by the SharePoint product team’s perf testing team, and then made available publicly.</p>  <p>SharePoint is a real challenge to do performance testing against (or any test automation for that matter), since both field names and values contain GUIDs. Large SharePoint deployments can contain 1000s of SharePoint sites, so how can you effectively test this? If you only hit the same site over and over it could have a very different performance characteristic than if you spread load across all the sites. And typically some sites are much busier and more popular than other sites.</p>  <p>The load test toolkit handles both of these problems really well. It is particularly targeted initially at migrating a site from 2007 to 2010, and does a great job by reading the IIS log to get site distribution, and by then dynamically determining during a load test which sites to hit. For example, if the load test is testing actions against a document library, a web test plugin will go to the SharePoint site to dynamically select an appropriate document library to target, and then cache the url to the library on the load client. This is a brilliant way to solve both the distribution and parameterization problems. Hats off to Demetrious and Kfir on the SharePoint team for developing the solution, and James and Doron for making it available to customers.</p>  <p>Ed.</p>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio Performance Testing Quick Reference Guide (Version 2.0) Published</title>
      <link>https://docs.microsoft.com/archive/blogs/edglas/visual-studio-performance-testing-quick-reference-guide-version-2-0-published</link>
      <pubDate>Mon, 12 Apr 2010 19:09:26 GMT</pubDate>
      <dc:creator><![CDATA[Ed Glas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edglas/2010/04/12/visual-studio-performance-testing-quick-reference-guide-version-2-0-published/</guid>
      <description><![CDATA[Version 2 of the Quick Reference Guide has now been published. This guide is chock-full of...]]></description>
      <content:encoded><![CDATA[<p><a href="https://vsptqrg.codeplex.com/">Version 2 of the Quick Reference Guide</a> has now been published. This guide is chock-full of information gathered through real experience with the product. This new version contains <strong>97 new or updated articles</strong>.</p>  <p>Special thanks to <a href="https://blogs.msdn.com/geoffgr/">Geoff Gray</a> for once again spearheading this effort. Geoff is one of a handful of elite VS load test practitioners. As he encounter unexpected behavior or bugs in the product, or gets undocumented information on the internals or edge cases, he captures the info for the quick reference guide. </p>  <p>Here is a screen shot of some of the really nice artwork in the guide:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/edglas/WindowsLiveWriter/VisualStudioPerformanceTestin.0Published_12F70/image_2.png" original-url="https://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/VisualStudioPerformanceTestin.0Published_12F70/image_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/edglas/WindowsLiveWriter/VisualStudioPerformanceTestin.0Published_12F70/image_thumb.png" original-url="https://blogs.msdn.com/blogfiles/edglas/WindowsLiveWriter/VisualStudioPerformanceTestin.0Published_12F70/image_thumb.png" width="590" height="690" /></a>&#160;</p>  <p>Here is a list of topics in the guide (the numbers after each article is the page number):</p>  <p><strong>NOTE FROM THE AUTHOR      <br />HOW IT WORKS       <br /></strong>How Web Tests Handle HTTP Headers 9    <br />General Info (including order of execution) of load and web test plugins and rules 9    <br />Client Code does not execute because Web Tests Work at the HTTP Layer 12    <br />File Downloads, Download Size and Storage of files during Web Tests 12    <br />When is the “Run unit tests in application domain” needed? 12    <br />How the “Test Iterations” Setting impacts the total number of tests executed 12    <br />Test timeout setting for load test configuration does not affect web tests 13    <br />How user pacing and “Think Time Between Test Iterations” work 13    <br />Load test warmup and cool down behaviors 13    <br />What is the difference between Unique, Sequential and Random Data Sources 14    <br />Comparing new users to return users 14    <br />Goal based user behavior after the test finishes the warmup period 17    <br />Threading models in Unit tests under load 18    <br />Simulation of Browser Caching during load tests 19    <br />The difference between Load Test Errors and Error Details 20    <br />How parameterization of HIDDEN Fields works in a webtest 21    <br />Testing execution order in Unit Tests 23    <br />How machines in the test rig communicate 25    <br />Changing the Default Port for Agent-Controller Communication 26    <br />How to Add Agents To A Test Rig 26    <br /><strong>ITEMS NEW TO VS 2010      <br /></strong>“Find” feature now available in Webtest playback UI 27    <br />“Go To Web Test” feature now available in Webtest playback UI 28    <br />Recorder Log Available 29    <br />Add extraction rule directly from the playback UI 30    <br />New “Reporting Name” property for web requests 31    <br />LoadTestResultsTables now differentiate between GET and POST requests 32    <br />Virtual user visualization now available 33    <br />New Excel reporting features built into load test results 39    <br />New Load Test and Load Test Rig Licensing and configurations 40    <br />New test mix: “Sequential Test Mix” 44    <br />Query String and FORM POST URLs get parameterized 46    <br />New options on Load Test Scenarios 47    <br />Loops and Conditionals 48    <br /><strong>CONFIGURATIONS AND SETTINGS      <br /></strong>How to Change the Location Where Agents Store Run Files 50    <br />How to set a proxy server for web tests 50    <br />How to configure Web Tests so Fiddler can capture playback info 50    <br />Controlling the amount of memory that the SQL Server Results machine consumes 51    <br />How to configure the timeouts for deployment of load tests to agents 51    <br />How to set the number of Load Test Errors and Error Details saved 52    <br />Multi-proc boxes used as agents should have .NET garbage collection set to server mode 53    <br />Location of list of all agents available to a controller 53    <br /><strong>NETWORKS, IP SWITCHING, TEST STARTUPS      <br /></strong>IP Address Switching anatomy (how it works) 54    <br />Gotcha: IP Address Switching is ONLY for WEB TESTS 54    <br />Gotcha: IP Addresses used for switching are not permanent 54    <br />How to Setup IP Switching 55    <br />Troubleshooting invalid view state and failed event validation 58    <br />Startup: Slowness Restarting a Test Rig with Agents Marked as “Offline” 58    <br />Startup: Multiple Network Cards can cause tests in a rig to not start 59    <br />Startup: Slow startup can be caused by _NT_SYMBOL_PATH environment variable 59    <br />Startup: tests on a Rig with Agents on a Slow Link 60    <br />“Not Bound” Exception when using IP Switching is not really an error 60    <br />How to configure the timeout for deployment of load tests to agents 61    <br /><strong>PERFORMANCE COUNTERS AND DATA      <br /></strong>Customizing the Available Microsoft System Monitor counter sets 62    <br />Performance Counter Considerations on Rigs with slow links 64    <br />Increase the performance counter sampling interval for longer tests 65    <br />Changing the default counters shown in the graphs during testing 65    <br />Possible method for fixing “missing perfmon counters” issues 65    <br />How and where Performance data gets collected 66    <br /><strong>DATA AND RESULTS      <br /></strong>Custom Data Binding in UNIT Tests 67    <br />Verifying saved results when a test hangs in the “In Progress” state after the test has finished 67    <br />The metrics during and after a test differ from the results seen. 68    <br />How new users and return users affect caching numbers 69    <br />data sources for data driven tests get read only once 70    <br />Consider including Timing Details to collect percentile data 71    <br />Consider enabling SQL Tracing through the Load Test instead of separately 72    <br />How to collect SQL counters from a non-default SQL instance 72    <br />How 90% and 95% response times are calculated 72    <br />Transaction Avg. Response Time vs. Request Avg. Response Time 73    <br />Considerations for the location of the Load Test Results Store 73    <br />Set the recovery model for the database to simple 73    <br />How to clean up results data from runs that did not complete 74    <br />InstanceName field in results database are appended with (002), (003), etc. 74    <br />Layout for VSTS Load Test Results Store 74    <br />How to view Test Results from the GUI 75    <br />SQL Server Reporting Services Reports available for download 75    <br />How to move results data to another system 75    <br />Load Test Results without SQL NOT stored 76    <br />Web Test TRX file and the NAN (Not a Number) Page Time entry 77    <br />Proper understanding of TRX files and Test Results directory 78    <br />Understanding the Response Size reported in web test runs 79    <br /><strong>ERRORS AND KNOWN ISSUES</strong> 80    <br />CSV files created in VSTS or saved as Unicode will not work as data sources 80    <br />Incorrect SQL field type can cause errors in web tests 80    <br />Leading zeroes dropped from datasource values bound to a CSV file 80    <br />Recorded Think Times and paused web test recordings 80    <br />After opening a webtest with the VS XML Editor, it will not open in declarative mode. 81    <br />Calls to <a href="HTTPS://Urs.Microsoft.Com">HTTPS://Urs.Microsoft.Com</a> show up in your script 81    <br />Possible DESKTOP HEAP errors when driving command line unit tests 81    <br />Goal based load tests in VSTS 2008 do not work after applying SP1 82    <br />Using Named Transactions in a Goal-Based Load Profile can cause errors 82    <br />Debugging Errors in Load Tests 83    <br />Debugging OutOfMemory Exceptions in Load Tests 83    <br />Memory leak on load test when using HTTPS 83    <br />“Not Trusted” error when starting a load test 84    <br />Detail Logging may cause “Out of disk space” error 85    <br />Error details and stack traces no longer available in VSTS 2010 85    <br />VSTS does not appear to be using more than one processor 85    <br />Changes made to Web Test Plugins may not show up properly 85    <br />Socket errors or “Service Unavailable” errors when running a load test 86    <br />Error “Failed to load results from the load test results store” 87    <br />Hidden Field extraction rules do not handle some fields 87    <br />Test results iteration count may be higher than the max test iterations set 87    <br />In flight test iterations may not get reported 88    <br />Completion of Unit Test causes spawned CMD processes to terminate 88    <br />Bug with LoadProfile.Copy() method when used in custom goal based load tests 89    <br />Errors in dependent requests in a Load Test do not show up in the details test log 90    <br />WCF service load test gets time-outs after 10 requests 92    <br />Loadtestitemresults.dat size runs into GBs 92    <br /><strong>TROUBLESHOOTING </strong>    <br />How to enable logging for test recording 93    <br />Diagnosing and fixing Web Test recorder bar issues 93    <br />User Account requirements and how to troubleshoot authentication 94    <br />How to enable Verbose Logging on an agent for troubleshooting 95    <br />Error that Browser Extensions are disabled when recording a web test 95    <br />Troubleshooting invalid view state and failed event validation 96    <br />Troubleshooting the VSTS Load Testing IP Switching Feature 97    <br />Troubleshooting Guide for Visual Studio Test Controller and Agent 99    <br /><strong>HOW TO, GOTCHAS AND BEST PRACTICES </strong>    <br />How to call one coded web test from another 111    <br />How to use methods other than GET and POST in a web test 111    <br />How to filter out certain dependent requests 111    <br />How to handle ASP.NET Cookie-less Sessions 112    <br />How to use Client-side certificates in web tests 112    <br />How to remove the “If-Modified-Since” header from dependent requests 113    <br />How to handle custom data binding in web tests 113    <br />How to add a datasource value to a context parameter 113    <br />How to test Web Services with Unit Tests 114    <br />How to add random users to web tests 114    <br />How to add think time to a Unit Test 114    <br />How to add details of a validation rule to your web test 115    <br />How to mask a 404 error on a dependent request 116    <br />How to parameterize Web Service calls within Web Tests 117    <br />How to pass Load Test Context Parameters to Unit Tests 117    <br />How to create Global Variables in a Unit Test 117    <br />How to use Unit Tests to Drive Load with Command Line Apps 118    <br />How to add Console Output to the results store when running Unit tests under load 118    <br />How to add parameters to Load Tests 119    <br />How to Change the Standard Deviation for a NormalDistribution ThinkTime 119    <br />How to programmatically access the number of users in Load Tests 120    <br />How to create a webtest plugin that will only execute on a predefined interval 120    <br />How to support Context Parameters in a plug-in property 121    <br />How to stop a web test in the middle of execution 122    <br />How To: Modify the ServicePointManager to force SSLv3 instead of TLS (Default) 122    <br />How To: Stop a Test in the PreRequest event 123    <br />How to make a validation rule force a redirection to a new page 123    <br />How to add a Web Service reference in a test project 127    <br />How to remotely count connections to a process 129    <br />How to hook into LoadTest database upon completion of a load test 129    <br />How to deploy DLLs with MSTEST.EXE 130    <br />How to authenticate with proxy before the test iteration begins 131    <br />How to enumerate WebTextContext and Unit TestContext objects 132    <br />How to manually move the data cursor 132    <br />How to programmatically create a declarative web test 133    <br />How to modify the string body programmatically in a declarative web test 134    <br />Gotcha: Check Your Validation Level in the Load Test Run Settings 134    <br />Gotcha: Do not adjust goals too quickly in your code 134    <br />Gotcha: Response body capture limit is set to 1.5 MB by default 134    <br />Gotcha: Caching of dependent requests is disabled when playing back Web Tests 135    <br />Best Practice: Blog on various considerations for web tests running under load 135    <br />Best Practice: Coded web tests and web test plug-ins should not block threads 135    <br />Best Practice: considerations when creating a dynamic goal based load test plugin: 136    <br />Best Practice: Add an Analysis Comment 136    <br />Best Practice – Using comments in declarative webtests 136    <br /><strong>EXTENSIBILITY </strong>    <br />New Inner-text and Select-tag rules published on Codeplex 138    <br /><strong>ITEMS NOT SPECIFIC TO THE VSTS TESTING PLATFORM </strong>    <br />Using the VSTS Application Profiler 146    <br />VSTS 2008 Application Profiler New Features 146    <br />Using System.NET Tracing to debug Network issues 146    <br />Logparser tips and tricks 147    <br />Logparser WEB Queries 147    <br />LogParser Non-Web Queries 148    <br /><strong>OLDER ARTICLES </strong>    <br />Content-Length header not available in Web Request Object 149    <br />SharePoint file upload test may post the file twice 149    <br />Some Hidden Fields are not parameterized within AJAX calls 149    <br />(FIX) Unit Test threading models and changing them 149    <br />Bug in VSTS 2008 SP1 causes think time for redirected requests to be ignored in a load test 150    <br />New Load Test Plugin Enhancements in VSTS 2008 SP1 150    <br />Four New Methods added to the WebTestPlugin Class for 2008 SP1 150    <br /><strong>INDEX </strong></p>  <p>Ed.</p>]]></content:encoded>
    </item>
    <item>
      <title>Updated Load Test Links for April 2010</title>
      <link>https://docs.microsoft.com/archive/blogs/edglas/updated-load-test-links-for-april-2010</link>
      <pubDate>Mon, 12 Apr 2010 18:15:50 GMT</pubDate>
      <dc:creator><![CDATA[Ed Glas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edglas/2010/04/12/updated-load-test-links-for-april-2010/</guid>
      <description><![CDATA[I’ve updated my Content Index for Web Tests and Load Tests, which is a list of links to load test...]]></description>
      <content:encoded><![CDATA[<p>I’ve updated my <a href="https://blogs.msdn.com/edglas/pages/content-index-for-web-tests-and-load-tests.aspx">Content Index for Web Tests and Load Tests</a>, which is a list of links to load test content. I added a bunch of links on what’s new in VS 2010, as well as a few additional links:</p>  <p><a href="https://blogs.msdn.com/edglas/archive/2010/03/05/application-benchmark-toolkit-for-microsoft-dynamics-ax.aspx">Dynamics AX Performance and Load Testing: Application Benchmark Toolkit</a></p>  <p><a href="https://blogs.msdn.com/edglas/archive/2010/02/16/parameterizing-tests-to-run-in-different-environments.aspx">Parameterizing Tests to Run in Different Environments</a></p>  <p><a href="https://blogs.msdn.com/yutong/archive/2010/04/02/load-test-plug-in-simulate-peak-load-modeling.aspx">Load Test Plug-in – Simulate Repeated Peak Load Modeling</a></p>  <p><a href="https://vsptqrg.codeplex.com/">Visual Studio Performance Testing Quick Reference Guide (Version 2.0)</a></p>  <p>I also moved some posts that are specific to VS 2008 into their own section.</p>  <p>Ed.</p>]]></content:encoded>
    </item>
    <item>
      <title>Great New Documentation for Performance Testing Now Online</title>
      <link>https://docs.microsoft.com/archive/blogs/edglas/great-new-documentation-for-performance-testing-now-online</link>
      <pubDate>Mon, 12 Apr 2010 12:59:04 GMT</pubDate>
      <dc:creator><![CDATA[Ed Glas]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/edglas/2010/04/12/great-new-documentation-for-performance-testing-now-online/</guid>
      <description><![CDATA[I am very excited about the new level of documentation we have in this release.  Howie Hilliker has...]]></description>
      <content:encoded><![CDATA[<p>I am very excited about the new level of documentation we have in this release.</p>  <p>Howie Hilliker has done a fantastic job enhancing our documentation. We actually have screen shots and artwork in the docs now! Also thanks to the load test product team for reviewing the content.</p>  <p>The documentation has been completely reorganized, with performance testing topics under the <a href="https://msdn.microsoft.com/en-us/library/dd293540(v=VS.100).aspx">Testing Application Performance and Stress </a>topic.</p>  <p>For example, check out these topics:</p>  <p><a href="https://msdn.microsoft.com/en-us/library/ff460245(v=VS.100).aspx">Walkthrough: Correlating Dynamic Parameters</a></p>  <p><a href="https://msdn.microsoft.com/en-us/library/ms404677(v=VS.100).aspx">Load Test Analyzer Overview</a></p>  <p><a href="https://msdn.microsoft.com/en-us/library/ff400223(VS.100).aspx">Walkthrough: Using a Test Controller and Test Agents in a Load Test</a></p>  <p>We also have walkthroughs on creating plugins, which is very helpful.</p>  <p><a href="https://msdn.microsoft.com/en-us/library/ee923683(v=VS.100).aspx">Creating and Using Custom Plug-ins for Load and Web Performance Tests</a></p>  <p>Here’s a blowout of the table of contents. It is definitely worthwhile to scan through this list to familiarize yourself with what is there.</p>  <p><a href="https://msdn.microsoft.com/en-us/library/dd293540(VS.100).aspx">Testing Application Performance and Stress</a></p>  <ul>   <li><a href="https://msdn.microsoft.com/en-us/library/ff400219(VS.100).aspx">What's New for Web Performance and Load Testing</a></li>    <li><a href="https://msdn.microsoft.com/en-us/library/ee923685(VS.100).aspx">Getting Started with Load and Web Performance Test Walkthroughs</a></li>    <ul>     <li><a href="https://msdn.microsoft.com/en-us/library/aa337591(VS.100).aspx">Web Performance Test Walkthroughs</a></li>      <ul>       <li><a href="https://msdn.microsoft.com/en-us/library/ms243156(VS.100).aspx">Walkthrough: Creating a Simple Web Application</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ms182551(VS.100).aspx">Walkthrough: Recording and Running a Web Performance Test</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ms243183(VS.100).aspx">Walkthrough: Adding Validation and Extraction Rules to a Web Performance Test</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ms243142(VS.100).aspx">Walkthrough: Adding Data Binding to a Web Performance Test</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/bb385833(VS.100).aspx">Walkthrough: Adding Data Binding to a Web Performance Test (CSV File)</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/bb385970(VS.100).aspx">Walkthrough: Adding Data Binding to a Web Performance Test (XML File)</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ms182552(VS.100).aspx">Walkthrough: Creating a Coded Web Performance Test</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/bb385897(VS.100).aspx">Walkthrough: Creating a Web Performance Test that Requires a Login and Logout</a></li>     </ul>      <li><a href="https://msdn.microsoft.com/en-us/library/ff406963(VS.100).aspx">Load Test Walkthroughs</a></li>      <ul>       <li><a href="https://msdn.microsoft.com/en-us/library/ms182594(VS.100).aspx">Walkthrough: Creating and Running a Load Test Containing Web Performance Tests</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ff355993(VS.100).aspx">Walkthrough: Creating and Running a Load Test Containing Unit Tests</a></li>     </ul>   </ul>    <li><a href="https://msdn.microsoft.com/en-us/library/ee923687(VS.100).aspx">Creating and Editing Load and Web Performance Tests</a></li>    <ul>     <li><a href="https://msdn.microsoft.com/en-us/library/dd728098(VS.100).aspx">Creating and Editing Load Tests</a></li>      <ul>       <li><a href="https://msdn.microsoft.com/en-us/library/ff406964(VS.100).aspx">Creating Load Tests Using the New Load Test Wizard</a></li>        <ul>         <li><a href="https://msdn.microsoft.com/en-us/library/ms182572(VS.100).aspx">How to: Create a New Load Test Using the New Load Test Wizard</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms182573(VS.100).aspx">How to: Create a Scenario Used to Model User Activities, Tests, Browsers and Networks Using the New Load Test Wizard</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms182574(VS.100).aspx">How to: Create a Load Pattern in the Load New Test Wizard</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ff406972(VS.100).aspx">How to: Create a Text Mix Model in the New Load Test Wizard</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms182576(VS.100).aspx">How to: Create a Test Mix in the New Load Test Wizard</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms182578(VS.100).aspx">How to: Create a Network Mix in the New Load Test Wizard</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms182577(VS.100).aspx">How to: Create a Browser Mix in the New Load Test Wizard</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms182579(VS.100).aspx">How to: Create Counter Sets in the New Load Test Wizard</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms182580(VS.100).aspx">How to: Create Run Settings in the New Load Test Wizard</a></li>       </ul>        <li><a href="https://msdn.microsoft.com/en-us/library/ff406975(VS.100).aspx">Editing Load Test Using the Load Test Editor</a></li>        <ul>         <li><a href="https://msdn.microsoft.com/en-us/library/dd997834(VS.100).aspx">Editing Load Test Scenarios Using the Load Test Editor</a></li>          <ul>           <li><a href="https://msdn.microsoft.com/en-us/library/ff406966(VS.100).aspx">Load Test Scenario Properties</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ff400226(VS.100).aspx">Creating Additional Scenarios for an Existing Load Test</a></li>            <ul>             <li><a href="https://msdn.microsoft.com/en-us/library/ms184803(VS.100).aspx">How to: Insert Additional Scenarios to an Existing Load Test</a></li>           </ul>            <li><a href="https://msdn.microsoft.com/en-us/library/dd997697(VS.100).aspx">Editing Think Times to Simulate Web Site Human Interaction Delays in Load Tests Scenarios</a></li>            <ul>             <li><a href="https://msdn.microsoft.com/en-us/library/ms243173(VS.100).aspx">How to: Change the Think Profile</a></li>           </ul>            <li><a href="https://msdn.microsoft.com/en-us/library/dd997551(VS.100).aspx">Editing Load Patterns to Model Virtual User Activities</a></li>            <ul>             <li><a href="https://msdn.microsoft.com/en-us/library/ms182586(VS.100).aspx">How to: Change the Load Pattern</a></li>              <li><a href="https://msdn.microsoft.com/en-us/library/ff406980(VS.100).aspx">How to: Specify the Percentage of Virtual Users that Use Web Cache Data</a></li>              <li><a href="https://msdn.microsoft.com/en-us/library/ff423845(VS.100).aspx">How to: Specify the Step Ramp Time Property for a Step Load Pattern</a></li>           </ul>            <li><a href="https://msdn.microsoft.com/en-us/library/dd997826(VS.100).aspx">Editing Text Mix Models to Specify the Probability of a Virtual User Running a Test</a></li>            <ul>             <li><a href="https://msdn.microsoft.com/en-us/library/bb514186(VS.100).aspx">Emulating Expected Real-World Usage of a Web Site or Application in a Load Test Using a Test Mix Models</a></li>              <li><a href="https://msdn.microsoft.com/en-us/library/ff406977(VS.100).aspx">How to: Edit the Text Mix Model Using the Load Test Editor</a></li>              <li><a href="https://msdn.microsoft.com/en-us/library/ff406974(VS.100).aspx">How to: Apply Distribution to Pacing Delay When Using a User Pace Test Mix Model</a></li>           </ul>            <li><a href="https://msdn.microsoft.com/en-us/library/ff400218(VS.100).aspx">Editing the Test Mix to Specify Which Web Performance, Unit and Coded UI Tests to Include in a Load Test Scenario</a></li>            <ul>             <li><a href="https://msdn.microsoft.com/en-us/library/ms318554(VS.100).aspx">How to: Add Web Performance, Unit and Coded UI Tests to a Load Test Scenario Using the Load Test Editor</a></li>              <li><a href="https://msdn.microsoft.com/en-us/library/ms318551(VS.100).aspx">How to: Remove Web Performance Tests, Unit and Coded UI Tests from a Load Test Scenario Using the Load Test Editor</a></li>           </ul>            <li><a href="https://msdn.microsoft.com/en-us/library/dd997557(VS.100).aspx">Specifying Virtual Network Types in a Load Test Scenario</a></li>            <ul>             <li><a href="https://msdn.microsoft.com/en-us/library/ms318553(VS.100).aspx">How to: Add Networks Using the Load Test Editor</a></li>              <li><a href="https://msdn.microsoft.com/en-us/library/ms318558(VS.100).aspx">How to: Remove Networks Using the Load Test Editor</a></li>           </ul>            <li><a href="https://msdn.microsoft.com/en-us/library/dd997561(VS.100).aspx">Specifying Web Browsers Types in a Load Test Scenario</a></li>            <ul>             <li><a href="https://msdn.microsoft.com/en-us/library/ms318557(VS.100).aspx">How to: Add Web Browsers Using the Load Test Editor</a></li>              <li><a href="https://msdn.microsoft.com/en-us/library/ms318552(VS.100).aspx">How to: Remove Browsers Using the Load Test Editor</a></li>           </ul>            <li><a href="https://msdn.microsoft.com/en-us/library/ff406973(VS.100).aspx">Configuring Test Iterations in a Load Test Scenario</a></li>            <ul>             <li><a href="https://msdn.microsoft.com/en-us/library/ff361775(VS.100).aspx">How to: Specify the Maximum Test Iterations for a Scenario Using the Load Test Editor</a></li>              <li><a href="https://msdn.microsoft.com/en-us/library/ff406968(VS.100).aspx">How to: Specify the Think Times Between Test Iterations for a Scenario Using the Load Test Editor</a></li>           </ul>            <li><a href="https://msdn.microsoft.com/en-us/library/ff406965(VS.100).aspx">Configuring Scenario Start Delays</a></li>            <ul>             <li><a href="https://msdn.microsoft.com/en-us/library/ff361773(VS.100).aspx">How to: Delay the Start Time of a Scenario Using the Load Test Editor</a></li>              <li><a href="https://msdn.microsoft.com/en-us/library/ff406979(VS.100).aspx">How to: Enable or Disable Whether a Scenario Runs During the Warm-Up Period</a></li>           </ul>            <li><a href="https://msdn.microsoft.com/en-us/library/ff361778(VS.100).aspx">How to: Specify Test Agents to Use in Load Test Scenarios</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ms243157(VS.100).aspx">About the Mix Control for Load Tests</a></li>         </ul>          <li><a href="https://msdn.microsoft.com/en-us/library/ms404695(VS.100).aspx">Specifying the Counter Sets for Computers in a Load Test</a></li>          <ul>           <li><a href="https://msdn.microsoft.com/en-us/library/ms404676(VS.100).aspx">How to: Manage Counter Sets Using the Load Test Editor</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ms404704(VS.100).aspx">How to: Add Counters to Counter Sets Using the Load Test Editor</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ms404668(VS.100).aspx">How to: Add Custom Counter Sets Using the Load Test Editor</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ms404675(VS.100).aspx">About Threshold Rules in Load Tests</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ms404665(VS.100).aspx">How to: Add a Threshold Rule Using the Load Test Editor</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ff460129(VS.100).aspx">How to: Add Computer Tags to Counter Set Mappings Using the Load Test Editor</a></li>         </ul>          <li><a href="https://msdn.microsoft.com/en-us/library/dd997552(VS.100).aspx">Configuring Load Test Run Settings</a></li>          <ul>           <li><a href="https://msdn.microsoft.com/en-us/library/ff354419(VS.100).aspx">How to: Add Additional Run Settings to a Load Test</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ff406978(VS.100).aspx">How to: Select the Active Run Setting for a Load Test</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ff426021(VS.100).aspx">How to: Select a Load Test Run Setting to Use from the Command-Line</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ff406976(VS.100).aspx">Load Test Run Setting Properties</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ms184778(VS.100).aspx">How to: Modify the Run Settings Properties in a Load Test Using the Load Test Editor</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ff406967(VS.100).aspx">How to: Specify the Number of Test Iterations in a Load Test Run Setting</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ff423846(VS.100).aspx">How to: Specify the Sample Rate for a Load Test Run Setting</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ff423848(VS.100).aspx">How to: Specify the Timing Details Storage Property for a Load Test Run Setting</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ff406971(VS.100).aspx">How to: Add Context Parameters to a Load Test Run Setting</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ff400225(VS.100).aspx">Modifying Load Test Logging Settings</a></li>            <ul>             <li><a href="https://msdn.microsoft.com/en-us/library/ff361776(VS.100).aspx">How to: Specify How Frequently Test Logs are Saved Using the Load Test Editor</a></li>              <li><a href="https://msdn.microsoft.com/en-us/library/ff361774(VS.100).aspx">How to: Specify if Test Failures are Saved to Test Logs Using the Load Test Editor</a></li>           </ul>            <li><a href="https://msdn.microsoft.com/en-us/library/dd997700(VS.100).aspx">Collecting SQL Trace Data to Monitor and Improve Performance in Load Tests</a></li>            <ul>             <li><a href="https://msdn.microsoft.com/en-us/library/ms182589(VS.100).aspx">How to: Integrate SQL Trace Data Using the Load Test Editor</a></li>           </ul>         </ul>          <li><a href="https://msdn.microsoft.com/en-us/library/ff432832(VS.100).aspx">How to: Start a Performance Session on a Web Application from the Load Test Editor</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ff406970(VS.100).aspx">How to: Specify 64-Bit Process Using Test Settings</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms404664(VS.100).aspx">Considerations for Load Tests</a></li>       </ul>        <li><a href="https://msdn.microsoft.com/en-us/library/ff468125(VS.100).aspx">Using Coded UI Tests in Load Tests</a></li>     </ul>      <li><a href="https://msdn.microsoft.com/en-us/library/dd728096(VS.100).aspx">Creating and Editing Web Performance Tests</a></li>      <ul>       <li><a href="https://msdn.microsoft.com/en-us/library/ff520100(VS.100).aspx">Web Performance Test Engine Overview</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ff431166(VS.100).aspx">Creating Web Performance Tests Using the Web Performance Test Recorder</a></li>        <ul>         <li><a href="https://msdn.microsoft.com/en-us/library/ms182539(VS.100).aspx">How to: Create a New Web Performance Test Using the Web Performance Test Recorder</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ff452787(VS.100).aspx">How to: Add a Comment to a Web Performance Test in the Web Performance Test Recorder</a></li>       </ul>        <li><a href="https://msdn.microsoft.com/en-us/library/dd997549(VS.100).aspx">Customizing Web Performance Test Recordings Using Web Performance Test Editor</a></li>        <ul>         <li><a href="https://msdn.microsoft.com/en-us/library/ms243144(VS.100).aspx">Web Performance Test Editor Overview</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/bb514183(VS.100).aspx">Setting Web Performance Test Properties Using the Web Performance Test Editor</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms182543(VS.100).aspx">How to: Edit an Existing Web Performance Test Using the Web Performance Test Editor</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ff406969(VS.100).aspx">How to: Add a Web Recording to an Existing Web Performance Test</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms182550(VS.100).aspx">How to: Create a Coded Web Performance Test</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms404709(VS.100).aspx">How to: Add Comments in the Web Performance Test Editor</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/dd997829(VS.100).aspx">How to: Use Reporting Names to Easily Identify Requests in a Web Performance Test</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms182540(VS.100).aspx">How to: Set Think Times to Simulate Human Pausing in a Web Performance Test</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms404691(VS.100).aspx">How to: Set Page Response Time Goals in a Web Performance Test</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ff356201(VS.100).aspx">How to: Set Request Details in a Web Performance Test</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms404707(VS.100).aspx">Binding a Data Source to a Web Performance Test</a></li>          <ul>           <li><a href="https://msdn.microsoft.com/en-us/library/bb385896(VS.100).aspx">How to: Add a Database Data Source to a Web Performance Test</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/bb385975(VS.100).aspx">How to: Add an XML File Data Source to a Web Performance Test</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/bb385971(VS.100).aspx">How to: Add a CSV File Data Source to a Web Performance Test</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ms404679(VS.100).aspx">How to: Add a Schema Definition to a Text File Data Source for a Web performance Test</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ms182546(VS.100).aspx">How to: Add Data Binding to a Web Request</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/bb385837(VS.100).aspx">How to: Add Data Binding to a Web Service Request</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/bb385844(VS.100).aspx">How to: Configure Data Binding Access Iterations in a Web Performance Test</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ms404669(VS.100).aspx">How to: Bind a Web Performance Test to a Text File</a></li>         </ul>          <li><a href="https://msdn.microsoft.com/en-us/library/bb385904(VS.100).aspx">Using Validation and Extraction Rules in Web Performance Tests</a></li>          <ul>           <li><a href="https://msdn.microsoft.com/en-us/library/ms182544(VS.100).aspx">How to: Add a Validation Rule to a Web Performance Test</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ms182545(VS.100).aspx">How to: Add an Extraction Rule to a Web Performance Test</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ms182556(VS.100).aspx">How to: Create a Custom Validation Rule for a Web performance Test</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/ms243179(VS.100).aspx">How to: Create a Custom Extraction Rule for a Web performance Test</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/bb514185(VS.100).aspx">How to: Create a Test-level Validation Rule for a Web performance Test</a></li>         </ul>          <li><a href="https://msdn.microsoft.com/en-us/library/dd997818(VS.100).aspx">Adding Loop and Branch Logic to Web Requests in Web Performance Tests</a></li>          <ul>           <li><a href="https://msdn.microsoft.com/en-us/library/dd997553(VS.100).aspx">How to: Add Loops to Web Performance Tests Requests</a></li>            <li><a href="https://msdn.microsoft.com/en-us/library/dd997550(VS.100).aspx">How to: Add &quot;If Then&quot; Branch Conditions to Web Performance Tests Requests</a></li>         </ul>          <li><a href="https://msdn.microsoft.com/en-us/library/ms182547(VS.100).aspx">How to: Add a Transaction to a Web Performance Test</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/bb385969(VS.100).aspx">How to: Insert a Call in a Web Performance Test to Another Web Performance Test</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms182548(VS.100).aspx">How to: Set Credentials on a Web Performance Test</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ms184806(VS.100).aspx">How to: Parameterize the URL for a Web Performance Tests Web Server</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ff356199(VS.100).aspx">How to: Promote Dynamic Parameters to Web Performance Test Parameters</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ff356197(VS.100).aspx">How to: Use Find and Replace in a Web Performance Test</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ff357728(VS.100).aspx">How to: Use Context Parameters in a Web Performance Test</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ff356203(VS.100).aspx">How to: Start a Performance Session on a Web Application from the Web Performance Test Editor</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/bb385834(VS.100).aspx">How to: Extract Requests in a Web Performance Test to Create a New Web Performance Test</a></li>          <li><a href="https://msdn.microsoft.com/en-us/library/ff400220(VS.100).aspx">How to: Specify a Proxy Server for a Web Performance Test</a></li>       </ul>        <li><a href="https://msdn.microsoft.com/en-us/library/ff356200(VS.100).aspx">How to: Configure Visual Studio Ultimate Options for Web Performance Tests</a></li>     </ul>   </ul>    <li><a href="https://msdn.microsoft.com/en-us/library/ee923688(VS.100).aspx">Running Load and Web Performance Tests</a></li>    <li><a href="https://msdn.microsoft.com/en-us/library/ms184776(VS.100).aspx">Running Load Tests</a></li>    <ul>     <li><a href="https://msdn.microsoft.com/en-us/library/ms182590(VS.100).aspx">How to: Run a Load Test</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ms184802(VS.100).aspx">How to: Run a Load Test Using Test Controllers and Test Agents Specified in a Test Setting</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ms182588(VS.100).aspx">How to: Run a Load Test from the Command Line</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ff423844(VS.100).aspx">How to: Add a Comment to a Running Load Test Using the Load Test Analyzer</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/dd728093(VS.100).aspx">Distributing Load Tests Across Multiple Test Machines Using Test Controllers and Test Agents</a></li>      <ul>       <li><a href="https://msdn.microsoft.com/en-us/library/ms243155(VS.100).aspx">Configuring Test Controllers and Test Agents for Load Testing</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ff426120(VS.100).aspx">How to: Add Virtual User License Keys for Load Testing</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ff426121(VS.100).aspx">How to: Add Virtual User License Keys for Load Testing Using the Command-Line</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ff426235(VS.100).aspx">How to: Create a Test Setting for a Distributed Load Test</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ff400223(VS.100).aspx">Walkthrough: Using a Test Controller and Test Agents in a Load Test</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/dd692842(VS.100).aspx">Strategies for Troubleshooting Test Controllers and Test Agents in Load Tests</a></li>     </ul>   </ul>    <li><a href="https://msdn.microsoft.com/en-us/library/ms243167(VS.100).aspx">Running Web Performance Tests</a></li>    <ul>     <li><a href="https://msdn.microsoft.com/en-us/library/ms182541(VS.100).aspx">How to: Run a Web Performance Test</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ms243189(VS.100).aspx">How to: Change the Web Performance Test Run Settings in the Web Performance Result Viewer</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ms243149(VS.100).aspx">How to: Run a Web Performance Test from the Command Line</a></li>   </ul>    <li><a href="https://msdn.microsoft.com/en-us/library/ee923686(VS.100).aspx">Analyzing Load Tests Results Using the Load Test Analyzer</a></li>    <ul>     <li><a href="https://msdn.microsoft.com/en-us/library/ms404677(VS.100).aspx">Load Test Analyzer Overview</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ms404698(VS.100).aspx">How to: Access Load Test Results for Analysis</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/bb385841(VS.100).aspx">Load Test Results Summary Overview</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ff425487(VS.100).aspx">How to: Add Comments While Analyzing a Completed Load Test Using the Load Test Analyzer</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ff425473(VS.100).aspx">How to: View Data and Diagnostic Attachments Using the Load Test Analyzer</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ms404694(VS.100).aspx">Analyzing Threshold Rule Violations in Load Tests Using the Load Test Analyzer</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ms404705(VS.100).aspx">How to: View Web Page Response Time in a Load Test Using the Load Test Analyzer</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ms184782(VS.100).aspx">Analyzing Load Test Results in the Graphs View of the Load Test Analyzer</a></li>      <ul>       <li><a href="https://msdn.microsoft.com/en-us/library/ff426918(VS.100).aspx">Using the Graphs View Legend to Analyze Load Tests</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/bb385898(VS.100).aspx">How to: Add and Delete Counters on Graphs in Load Test Results</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ms184784(VS.100).aspx">How to: Zoom in on a Region of the Graph in Load Test Results</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/bb385839(VS.100).aspx">How to: Tile Graphs in Load Test Results</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ff426919(VS.100).aspx">How to: Specify Plot Options for Graphing Counters</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/bb385836(VS.100).aspx">How to: Create Custom Graphs in Load Test Results</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ff425472(VS.100).aspx">How to: Export Graph View Data to Microsoft Excel</a></li>     </ul>      <li><a href="https://msdn.microsoft.com/en-us/library/ms404656(VS.100).aspx">Analyzing Load Test Results in the Tables View of the Load Test Analyzer</a></li>      <ul>       <li><a href="https://msdn.microsoft.com/en-us/library/bb385905(VS.100).aspx">How to: Tile Load Test Tables</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ms404697(VS.100).aspx">Analyzing Errors in Load Tests Using the Errors Table</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ms404658(VS.100).aspx">How to: View SQL Trace Data in Load Tests Using the SQL Trace Table</a></li>     </ul>      <li><a href="https://msdn.microsoft.com/en-us/library/ff426922(VS.100).aspx">Using the Counters Panel in Graphs View and Tables View</a></li>      <ul>       <li><a href="https://msdn.microsoft.com/en-us/library/ff426917(VS.100).aspx">How to: Analyze Threshold Violations Using the Counters Panel in Load Test Analyzer</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ff426920(VS.100).aspx">How to: Analyze Errors Using the Counters Panel</a></li>     </ul>      <li><a href="https://msdn.microsoft.com/en-us/library/ff183349(VS.100).aspx">Analyzing Load Test Virtual User Activity in the Details View of the Load Test Analyzer</a></li>      <ul>       <li><a href="https://msdn.microsoft.com/en-us/library/ff183356(VS.100).aspx">How to: Configure Load Tests to Collect Full Details to Enable Virtual User Activity in Test Results</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ff183350(VS.100).aspx">How to: Analyze What Virtual Users Are Doing During a Load Test Using the Virtual User Activity Chart</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/dd997816(VS.100).aspx">Walkthrough: Using the Virtual User Activity Chart to Isolate Issues</a></li>     </ul>   </ul>    <li><a href="https://msdn.microsoft.com/en-us/library/ff425469(VS.100).aspx">Examining Results Using the Web Performance Test Results Viewer</a></li>    <ul>     <li><a href="https://msdn.microsoft.com/en-us/library/dd997556(VS.100).aspx">Web Performance Test Results Viewer Overview</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/dd997693(VS.100).aspx">Resolving Web Performance Test Result Viewer Playback Issues in Web Performance Tests</a></li>      <ul>       <li><a href="https://msdn.microsoft.com/en-us/library/dd997704(VS.100).aspx">How to: Use Quick Find to Isolate Dynamic Parameters in Web Performance Test Playback</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/dd997701(VS.100).aspx">How to: View Recording Log in Web Performance Test Playback</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/dd997695(VS.100).aspx">How to: Jump to Web Request from the Web Performance Test Playback</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/dd997562(VS.100).aspx">How to: Add an Extraction Rule from the Web Performance Test Playback</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ee317494(VS.100).aspx">How to: Resolve Web Performance Test Playback Issues Caused by Dynamic Parameters</a></li>        <li><a href="https://msdn.microsoft.com/en-us/library/ff460245(VS.100).aspx">Walkthrough: Correlating Dynamic Parameters</a></li>     </ul>   </ul>    <li><a href="https://msdn.microsoft.com/en-us/library/ms318550(VS.100).aspx">Managing Load Test Results in the Load Test Results Repository</a></li>    <ul>     <li><a href="https://msdn.microsoft.com/en-us/library/ms182600(VS.100).aspx">How to: Create a Load Test Results Repository Using SQL</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ms243400(VS.100).aspx">How to: Select a Load Test Results Repository</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/bb385968(VS.100).aspx">How to: Delete Load Test Results from a Repository</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/bb385900(VS.100).aspx">How to: Import Load Test Results into a Repository</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/bb385895(VS.100).aspx">How to: Export load Test Results from a Repository</a></li>   </ul>    <li><a href="https://msdn.microsoft.com/en-us/library/dd728091(VS.100).aspx">Reporting Load Tests Results for Test Comparisons or Trend Analysis</a></li>    <ul>     <li><a href="https://msdn.microsoft.com/en-us/library/dd997707(VS.100).aspx">How to: Create Load Test Performance Reports Using Microsoft Excel</a></li>   </ul>    <li><a href="https://msdn.microsoft.com/en-us/library/ee923683(VS.100).aspx">Creating and Using Custom Plug-ins for Load and Web Performance Tests</a></li>    <ul>     <li><a href="https://msdn.microsoft.com/en-us/library/ms182605(VS.100).aspx">How to: Use the Load Test API</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ms243153(VS.100).aspx">How to: Create a Load Test Plug-In</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ms182558(VS.100).aspx">How to: Use the Web Performance Test API</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ms243191(VS.100).aspx">How to: Create a Web Performance Test Plug-In</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/bb514192(VS.100).aspx">How to: Create a Request-Level Plug-In</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ms182557(VS.100).aspx">How to: Create a Web Service Test</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ff400224(VS.100).aspx">How to: Create a Recorder Plug-In</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ff458708(VS.100).aspx">How to: Create a Custom HTTP Body Editor for the Web Performance Test Editor</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ff458704(VS.100).aspx">How to: Create a Visual Studio Add-In for the Web Performance Test Results Viewer</a></li>   </ul>    <li><a href="https://msdn.microsoft.com/en-us/library/ee923684(VS.100).aspx">Troubleshooting Load and Web Performance Tests</a></li>    <ul>     <li><a href="https://msdn.microsoft.com/en-us/library/ms404661(VS.100).aspx">Troubleshooting Load Tests</a></li>      <li><a href="https://msdn.microsoft.com/en-us/library/ms318556(VS.100).aspx">Troubleshooting Web Performance Tests</a></li>   </ul>    <li><a href="https://msdn.microsoft.com/en-us/library/ms404678(VS.100).aspx">About JavaScript and ActiveX Controls in Web Performance Tests</a></li> </ul>  <p>Ed.</p>]]></content:encoded>
    </item>
  </channel>
</rss>