In a VSTS load test that contains Web tests, the load test attempts to simulate the caching behavior of the browser. Here are some notes on how that is done:
· There is a property named on each request in a Web test named “Cache Control” in the Web test editor (and named “Cache” on the WebTestRequest object in the API used by coded Web tests).
· When the Cache Control property on a request in the Web test is false, the request is always issued.
· When the Cache Control property is true, the VSTS load test runtime code attempts to emulate the Internet Explorer caching behavior (with the “Automatically” setting).
(This includes reading and following the HTTP cache control directives.)
· The Cache Control property is automatically set to true for all dependent requests (typically for images, style sheets, etc embedded on the page).
· In a load test, the browser caching behavior is simulated separately for each user running in the load test.
· When a virtual user in a load test completes a Web test and a new Web test session is started to keep the user load at the same level, sometimes the load test starts simulates a “new user” with a clean cache, and sometimes the load test simulates a return user that has items cached from a previous session. This is determined by the “Percentage of New Users” property on the Scenario in the load test. The default for “Percentage of New Users” is 100 in which case all user sessions are started with a clean cache. This is probably not correct for most applications where there are return users, so users should consider the most appropriate value to use for this setting depending on the actual usage of the application being load tested.
Important Note: When running a Web test by itself (outside of the load test), the Cache Control property is automatically set to false for all dependent requests so they are always fetched; this is so that they can be displayed in the browser pane of the Web test results viewer without broken images.
Update for VSTS 2008: The Web test API enhancement in VSTS 2008 now allow you to write a WebTestPlugin that disables caching of all dependent requests. See this blog post: http://blogs.msdn.com/billbar/archive/2008/06/06/disabling-caching-of-all-dependent-requests.aspx.