<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>patterns &amp; practices: Performance Testing Guidance for Web Applications</title><link>http://www.codeplex.com/PerfTestingGuide/Project/ProjectRss.aspx</link><description>patterns &amp;#38; practices&amp;#58; Performance Testing Guidance for Web Applications Guide.</description><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Home&amp;version=19</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
patterns &amp;amp; practices Performance Testing Guidance for Web Applications
&lt;/h2&gt;Welcome to the &lt;b&gt;patterns &amp;amp; practices Performance Testing Guidance for Web Applications&lt;/b&gt;!  This guide shows you an end-to-end approach for implementing performance testing.  Whether you are new to performance testing, or looking for ways to improve your current performance testing approach, you will find insights that you can tailor for your specific scenarios.  This guide is related to our &lt;a href="http://www.CodePlex.com/PerfTesting" class="externalLink"&gt;Performance Testing Guidance Project &lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. - &lt;i&gt;&lt;a href="http://blogs.msdn.com/jmeier" class="externalLink"&gt;J.D. Meier&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Carlos Farre, &lt;a href="http://prashantbansode.blogspot.com/" class="externalLink"&gt;Prashant Bansode&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.perftestplus.com/scott_blog.php" class="externalLink"&gt;Scott Barber&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Dennis Rea&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=PerfTestingGuide&amp;amp;DownloadId=23765" alt="ptg.gif" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Download the Guide
&lt;/h3&gt;The Final Release is Available!  Start using the guide today, while we continue to make improvements.&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Release/ProjectReleases.aspx?ReleaseId=6690" class="externalLink"&gt;Download the Performance Testing Guidance for Web Applications Guide &lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Parts
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Part 1, Introduction to Performance Testing&lt;/li&gt;&lt;li&gt;Part II, Exemplar Performance Testing Approaches&lt;/li&gt;&lt;li&gt;Part III, Identify the Test Environment&lt;/li&gt;&lt;li&gt;Part IV, Identify Performance Acceptance Criteria&lt;/li&gt;&lt;li&gt;Part V, Plan and Design Tests&lt;/li&gt;&lt;li&gt;Part VI, Execute Tests&lt;/li&gt;&lt;li&gt;Part VII, Analyze Results and Report&lt;/li&gt;&lt;li&gt;Part VIII, Performance Testing Techniques&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;
Forewards
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Foreword%20By%20Alberto%20Savoia&amp;amp;referringTitle=Home"&gt;Foreword By Alberto Savoia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Foreword%20By%20Rico%20Mariani&amp;amp;referringTitle=Home"&gt;Foreword By Rico Mariani&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;
Chapters
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Introduction&amp;amp;referringTitle=Home"&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Part 1, Introduction to Performance Testing&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%201%20%u2013%20Fundamentals%20of%20Web%20Application%20Performance%20Testing&amp;amp;referringTitle=Home"&gt;Chapter 1 – Fundamentals of Web Application Performance Testing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%202%20%u2013%20Types%20of%20Performance%20Testing&amp;amp;referringTitle=Home"&gt;Chapter 2 – Types of Performance Testing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%203%20%u2013%20Risks%20Addressed%20Through%20Performance%20Testing&amp;amp;referringTitle=Home"&gt;Chapter 3 – Risks Addressed Through Performance Testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part II, Exemplar Performance Testing Approaches&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%204%20%u2013%20Web%20Application%20Performance%20Testing%20Core%20Activities&amp;amp;referringTitle=Home"&gt;Chapter 4 – Web Application Performance Testing Core Activities&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%205%20%u2013%20Coordinating%20Performance%20Testing%20with%20an%20Iteration-Based%20Process&amp;amp;referringTitle=Home"&gt;Chapter 5 – Coordinating Performance Testing with an Iteration-Based Process&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%206%20%u2013%20Managing%20an%20Agile%20Performance%20Test%20Cycle&amp;amp;referringTitle=Home"&gt;Chapter 6 – Managing an Agile Performance Test Cycle&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%207%20%u2013%20Managing%20the%20Performance%20Test%20Cycle%20in%20a%20Regulated%20%28CMMI%29%20Environment&amp;amp;referringTitle=Home"&gt;Chapter 7 – Managing the Performance Test Cycle in a Regulated (CMMI) Environment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part III, Identify the Test Environment&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%208%20%u2013%20Evaluating%20Systems%20to%20Increase%20Performance-Testing%20Effectiveness&amp;amp;referringTitle=Home"&gt;Chapter 8 – Evaluating Systems to Increase Performance-Testing Effectiveness&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part IV, Identify Performance Acceptance Criteria&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%209%20%u2013%20Determining%20Performance%20Testing%20Objectives&amp;amp;referringTitle=Home"&gt;Chapter 9 – Determining Performance Testing Objectives&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2010%20%u2013%20Quantifying%20End-User%20Response%20Time%20Goals&amp;amp;referringTitle=Home"&gt;Chapter 10 – Quantifying End-User Response Time Goals&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2011%20%u2013%20Consolidating%20Various%20Types%20of%20Performance%20Acceptance%20Criteria&amp;amp;referringTitle=Home"&gt;Chapter 11 – Consolidating Various Types of Performance Acceptance Criteria&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part V, Plan and Design Tests&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2012%20%u2013%20Modeling%20Application%20Usage&amp;amp;referringTitle=Home"&gt;Chapter 12 – Modeling Application Usage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2013%20%u2013%20Determining%20Individual%20User%20Data%20and%20Variances&amp;amp;referringTitle=Home"&gt;Chapter 13 – Determining Individual User Data and Variances&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part VI, Execute Tests&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2014%20%u2013%20Test%20Execution&amp;amp;referringTitle=Home"&gt;Chapter 14 – Test Execution&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part VII, Analyze Results and Report&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2015%20%u2013%20Key%20Mathematic%20Principles%20for%20Performance%20Testers&amp;amp;referringTitle=Home"&gt;Chapter 15 – Key Mathematic Principles for Performance Testers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2016%20%u2013%20Performance%20Test%20Reporting%20Fundamentals&amp;amp;referringTitle=Home"&gt;Chapter 16 – Performance Test Reporting Fundamentals&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part VIII, Performance-Testing Techniques&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2017%20%u2013%20Load-Testing%20Web%20Applications&amp;amp;referringTitle=Home"&gt;Chapter 17 – Load-Testing Web Applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2018%20%u2013%20Stress-Testing%20Web%20Applications&amp;amp;referringTitle=Home"&gt;Chapter 18 – Stress-Testing Web Applications&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Reference
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Glossary&amp;amp;referringTitle=Home"&gt;Glossary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Team
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Core Team: &lt;i&gt;&lt;a href="http://blogs.msdn.com/jmeier" class="externalLink"&gt;J.D. Meier&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Carlos Farre, &lt;a href="http://prashantbansode.blogspot.com/" class="externalLink"&gt;Prashant Bansode&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.perftestplus.com/scott_blog.php" class="externalLink"&gt;Scott Barber&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Dennis Rea&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Contributors%20and%20Reviewers&amp;amp;referringTitle=Home"&gt;Contributors and Reviewers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>mycodeplexuser</author><pubDate>Thu, 28 Aug 2008 00:15:20 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080828121520A</guid></item><item><title>CREATED ISSUE: Chapter 15, datasets b and c swapped in text references</title><link>http://www.codeplex.com/PerfTestingGuide/WorkItem/View.aspx?WorkItemId=9176</link><description>In chapter 15, references to datasets B and C are swapped in discussions of Medians, Normal Values and other concepts.&lt;br /&gt;</description><author>robbak11</author><pubDate>Wed, 09 Jan 2008 19:15:19 GMT</pubDate><guid isPermaLink="false">CREATED ISSUE: Chapter 15, datasets b and c swapped in text references 20080109071519P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Home&amp;version=18</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
patterns &amp;amp; practices Performance Testing Guidance for Web Applications
&lt;/h2&gt;Welcome to the &lt;b&gt;patterns &amp;amp; practices Performance Testing Guidance for Web Applications&lt;/b&gt;!  This guide shows you an end-to-end approach for implementing performance testing.  Whether you are new to performance testing, or looking for ways to improve your current performance testing approach, you will find insights that you can tailor for your specific scenarios.  This guide is related to our &lt;a href="http://www.CodePlex.com/PerfTesting" class="externalLink"&gt;Performance Testing Guidance Project &lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. - &lt;i&gt;&lt;a href="http://blogs.msdn.com/jmeier" class="externalLink"&gt;J.D. Meier&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Carlos Farre, &lt;a href="http://prashantbansode.blogspot.com/" class="externalLink"&gt;Prashant Bansode&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.perftestplus.com/scott_blog.php" class="externalLink"&gt;Scott Barber&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Dennis Rea&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=PerfTestingGuide&amp;amp;DownloadId=23765" alt="ptg.gif" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Download the Guide
&lt;/h3&gt;The Final Release is Available!  Start using the guide today, while we continue to make improvements.&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Release/ProjectReleases.aspx?ReleaseId=6690" class="externalLink"&gt;Download the Performance Testing Guidance for Web Applications Guide &lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Parts
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Part 1, Introduction to Performance Testing&lt;/li&gt;&lt;li&gt;Part II, Exemplar Performance Testing Approaches&lt;/li&gt;&lt;li&gt;Part III, Identify the Test Environment&lt;/li&gt;&lt;li&gt;Part IV, Identify Performance Acceptance Criteria&lt;/li&gt;&lt;li&gt;Part V, Plan and Design Tests&lt;/li&gt;&lt;li&gt;Part VI, Execute Tests&lt;/li&gt;&lt;li&gt;Part VII, Analyze Results and Report&lt;/li&gt;&lt;li&gt;Part VIII, Performance Testing Techniques&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;
Forewards
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Foreword%20By%20Alberto%20Savoia&amp;amp;referringTitle=Home"&gt;Foreword By Alberto Savoia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Foreword%20By%20Rico%20Mariani&amp;amp;referringTitle=Home"&gt;Foreword By Rico Mariani&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;
Chapters
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Introduction&amp;amp;referringTitle=Home"&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Part 1, Introduction to Performance Testing&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%201%20%u2013%20Fundamentals%20of%20Web%20Application%20Performance%20Testing&amp;amp;referringTitle=Home"&gt;Chapter 1 – Fundamentals of Web Application Performance Testing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%202%20%u2013%20Types%20of%20Performance%20Testing&amp;amp;referringTitle=Home"&gt;Chapter 2 – Types of Performance Testing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%203%20%u2013%20Risks%20Addressed%20Through%20Performance%20Testing&amp;amp;referringTitle=Home"&gt;Chapter 3 – Risks Addressed Through Performance Testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part II, Exemplar Performance Testing Approaches&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%204%20%u2013%20Web%20Application%20Performance%20Testing%20Core%20Activities&amp;amp;referringTitle=Home"&gt;Chapter 4 – Web Application Performance Testing Core Activities&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%205%20%u2013%20Coordinating%20Performance%20Testing%20with%20an%20Iteration-Based%20Process&amp;amp;referringTitle=Home"&gt;Chapter 5 – Coordinating Performance Testing with an Iteration-Based Process&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%206%20%u2013%20Managing%20an%20Agile%20Performance%20Test%20Cycle&amp;amp;referringTitle=Home"&gt;Chapter 6 – Managing an Agile Performance Test Cycle&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%207%20%u2013%20Managing%20the%20Performance%20Test%20Cycle%20in%20a%20Regulated%20%28CMMI%29%20Environment&amp;amp;referringTitle=Home"&gt;Chapter 7 – Managing the Performance Test Cycle in a Regulated (CMMI) Environment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part III, Identify the Test Environment&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%208%20%u2013%20Evaluating%20Systems%20to%20Increase%20Performance-Testing%20Effectiveness&amp;amp;referringTitle=Home"&gt;Chapter 8 – Evaluating Systems to Increase Performance-Testing Effectiveness&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part IV, Identify Performance Acceptance Criteria&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%209%20%u2013%20Determining%20Performance%20Testing%20Objectives&amp;amp;referringTitle=Home"&gt;Chapter 9 – Determining Performance Testing Objectives&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2010%20%u2013%20Quantifying%20End-User%20Response%20Time%20Goals&amp;amp;referringTitle=Home"&gt;Chapter 10 – Quantifying End-User Response Time Goals&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2011%20%u2013%20Consolidating%20Various%20Types%20of%20Performance%20Acceptance%20Criteria&amp;amp;referringTitle=Home"&gt;Chapter 11 – Consolidating Various Types of Performance Acceptance Criteria&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part V, Plan and Design Tests&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2012%20%u2013%20Modeling%20Application%20Usage&amp;amp;referringTitle=Home"&gt;Chapter 12 – Modeling Application Usage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2013%20%u2013%20Determining%20Individual%20User%20Data%20and%20Variances&amp;amp;referringTitle=Home"&gt;Chapter 13 – Determining Individual User Data and Variances&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part VI, Execute Tests&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2014%20%u2013%20Test%20Execution&amp;amp;referringTitle=Home"&gt;Chapter 14 – Test Execution&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part VII, Analyze Results and Report&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2015%20%u2013%20Key%20Mathematic%20Principles%20for%20Performance%20Testers&amp;amp;referringTitle=Home"&gt;Chapter 15 – Key Mathematic Principles for Performance Testers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2016%20%u2013%20Performance%20Test%20Reporting%20Fundamentals&amp;amp;referringTitle=Home"&gt;Chapter 16 – Performance Test Reporting Fundamentals&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part VIII, Performance-Testing Techniques&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2017%20%u2013%20Load-Testing%20Web%20Applications&amp;amp;referringTitle=Home"&gt;Chapter 17 – Load-Testing Web Applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2018%20%u2013%20Stress-Testing%20Web%20Applications&amp;amp;referringTitle=Home"&gt;Chapter 18 – Stress-Testing Web Applications&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Reference
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Glossary&amp;amp;referringTitle=Home"&gt;Glossary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Team
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Core Team: &lt;i&gt;&lt;a href="http://blogs.msdn.com/jmeier" class="externalLink"&gt;J.D. Meier&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Carlos Farre, &lt;a href="http://prashantbansode.blogspot.com/" class="externalLink"&gt;Prashant Bansode&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.perftestplus.com/scott_blog.php" class="externalLink"&gt;Scott Barber&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Dennis Rea&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Contributors%20and%20Reviewers&amp;amp;referringTitle=Home"&gt;Contributors and Reviewers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Related Sites
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.CodePlex.com/PerfTesting" class="externalLink"&gt;patterns &amp;amp; practices Performance Testing Guidance &lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>sbarber</author><pubDate>Sat, 15 Dec 2007 04:50:42 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20071215045042A</guid></item><item><title>UPDATED WIKI: Foreword By Rico Mariani</title><link>http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Foreword By Rico Mariani&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h3&gt;
Foreword By Rico Mariani
&lt;/h3&gt; &lt;br /&gt;It’s hard to imagine anything than is considered a more arcane art than performance tuning – unless perhaps it is performance testing.  &lt;br /&gt;If you were to go door to door between groups just within Microsoft you would find many different approaches with various different degrees of quality or success.  Pretty much everyone will vow that their approach is certainly the one that is best for them – except maybe an honest few, who might say something more modest.  Some have good reason to be confident because they really have studied the space very well.  In my own experience at least, the situation is not altogether different outside of Microsoft than it is inside where I do my work.  It’s a mixed bag, on a good day.&lt;br /&gt;If I had to describe the most common problem I see in this space with one word it would imbalance.  There are many aspects to testing and teams tend to unduly focus on one or another and then sometimes get blindsided by the ones they missed.  Perhaps they’re only thinking about throughput – what about consumption?   Perhaps only latency – what about smooth delivery?  Perhaps only cost  -- what about scalability?  &lt;br /&gt;You get great performance by balancing the key factors, considering them in your designs and then tracking them carefully.  So perhaps the greatest service that a book like Performance Testing Guidance for Web Applications can provide to you is a broader understanding of what all the factors might be so that you have an excellent menu of considerations to choose from in your testing plan.  Luckily, that is just what you’re going to get.&lt;br /&gt;The Guidance that follows provides a great survey of the most important considerations:  From how to understand and quantify your desired end user experience, how to choose key resources for study, to advice on summarizing results in a statistically meaningful way, and how to fit these practices into different software lifecycles.  And even though the focus is squarely on web applications, the teachings are actually much more general and can easily be applied for many different kinds of applications.&lt;br /&gt;Great engineering comes from creating predictable results at predictable costs. In fact, I like to say that if you’re not measuring you’re not engineering.  This volume will provide you with the performance testing fundamentals to give you the ongoing metrics you need to do great engineering.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Rico Mariani&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Chief Architect of Visual Studio&lt;/b&gt; &lt;br /&gt;&lt;b&gt;Microsoft Corporation&lt;/b&gt; &lt;br /&gt;&lt;b&gt;July, 2007&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;i&gt;Rico Mariani began his career at Microsoft in 1988, working on language products beginning with Microsoft&amp;#174; C version 6.0, and contributed there until the release of the Microsoft Visual C++&amp;#174; version 5.0 development system. In 1995, Rico became development manager for what was to become the &amp;quot;Sidewalk&amp;quot; project, which started his 7 years of platform work on various MSN technologies. In the summer of 2002, Rico returned to the Developer Division to as a Performance Architect on the CLR team.  His performance work led to his most recent assignment as Chief Architect of Visual Studio. Rico's interests include compilers and language theory, databases, 3-D art, and good fiction.&lt;/i&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>prashantbansode</author><pubDate>Wed, 29 Aug 2007 20:09:34 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Foreword By Rico Mariani 20070829080934P</guid></item><item><title>UPDATED WIKI: Foreword By Alberto Savoia</title><link>http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Foreword By Alberto Savoia&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h3&gt;
Foreword By Alberto Savoia
&lt;/h3&gt; &lt;br /&gt;Testing the performance of web applications is easy.  It’s easy to design unrealistic scenarios.  Easy to collect and measure irrelevant performance data.  And, even if you manage to design a sound scenario and collect the right data, it’s easy to use the wrong statistical methods to summarize and present the results.&lt;br /&gt; &lt;br /&gt;Starting in the late 90s, through the peak of the Internet bubble and beyond, I spent a lot of time testing the performance of web applications.  During that period, I designed and led several mission-critical web performance and load tests for high-profile Internet companies.  Working with the in-house performance &lt;i&gt;experts&lt;/i&gt; at each company was very revealing – and quite frightening.  Most of the engineers assigned to work on web application performance were smart, hard-working, and dedicated; they invested in expensive software and hardware, read the right books, and followed the &lt;i&gt;best practices&lt;/i&gt; of the day.  But, somehow, the results of their performance measurements and predictions did not match reality.  In some cases the performance tests &lt;i&gt;over&lt;/i&gt;estimated the performance and scalability of the web applications – leading to embarrassing and costly crashes when the web application was deployed.  In other cases, they &lt;i&gt;under&lt;/i&gt;estimated capacity and scalability – leading to unnecessary spending on hardware and infrastructure.  The errors in these tests were not small; some tests overestimated or underestimated actual performance and capacity by an order of magnitude or more! How is this possible?&lt;br /&gt; &lt;br /&gt;Based on my experience, the majority of gross errors in web application performance testing are the result of oversimplification.  More precisely, they are the result oversimplification of user behavior and oversimplification in summarizing and reporting test results.  Imagine a transportation engineer estimating traffic patterns for a proposed stretch of highway by assuming that most drivers will drive at the same average speed, break and accelerate with the same response time and at the same rate, and never change lanes. A simple – but completely worthless – scenario.  Or imagine the same transportation engineer reporting that there are no traffic issues because the average speed is 57mph – without bringing up that during rush-hour the average speed is 25mph. A simple, but very misleading, result.  Unfortunately, most web application performance testers commit errors of oversimplification as bad, or worse, as the ones committed by our hypothetical transportation engineer.&lt;br /&gt; &lt;br /&gt;I am all for simplicity but, as Albert Einstein once said: “Make everything as simple as possible, but not simpler.”  When it comes to testing the performance of web applications, that’s exactly what this remarkable – and much needed – book teaches you.  The authors leverage their passion, experience, and hard-earned knowledge and provide you with the broad, thorough, and extensible foundation you need to tackle web performance testing the right way. &lt;i&gt;Performance Testing Guidance for Web Applications&lt;/i&gt; does not get bogged down with unnecessary details, but it does make sure that you know about – and don’t overlook – the key parameters and variables that you need to take into account in designing, conducting, and analyzing your tests.&lt;br /&gt; &lt;br /&gt;If you are new to web performance testing, this book will get you started on the right path and save you a lot of time and embarrassment.  Even if you are a seasoned web performance testing veteran, I am confident that this book will provide you with new insights and, most likely, have you slap your forehead a few times as you read about some common and familiar mistakes.  In either case, &lt;i&gt;Performance Testing Guidance for Web Applications&lt;/i&gt;, is a must-have for any web performance engineer bookshelf.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Alberto Savoia&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Founder and CTO, Agitar Software Inc.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;July, 2007&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Author of: “&lt;i&gt;The Science and Art of Web Site Load Testing&lt;/i&gt;”, “&lt;i&gt;Web Load Test Planning&lt;/i&gt;”, and “&lt;i&gt;Trade Secrets from a Web Testing Expert&lt;/i&gt;”.&lt;br /&gt;
&lt;/div&gt;</description><author>prashantbansode</author><pubDate>Wed, 29 Aug 2007 20:07:53 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Foreword By Alberto Savoia 20070829080753P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Home&amp;version=17</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
patterns &amp;amp; practices Performance Testing Guidance for Web Applications
&lt;/h2&gt;Welcome to the &lt;b&gt;patterns &amp;amp; practices Performance Testing Guidance for Web Applications&lt;/b&gt;!  This guide shows you an end-to-end approach for implementing performance testing.  Whether you are new to performance testing, or looking for ways to improve your current performance testing approach, you will find insights that you can tailor for your specific scenarios.  This guide is related to our &lt;a href="http://www.CodePlex.com/PerfTesting" class="externalLink"&gt;Performance Testing Guidance Project &lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. - &lt;i&gt;&lt;a href="http://blogs.msdn.com/jmeier" class="externalLink"&gt;J.D. Meier&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Carlos Farre, &lt;a href="http://prashantbansode.blogspot.com/" class="externalLink"&gt;Prashant Bansode&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.perftestplus.com/scott_blog.php" class="externalLink"&gt;Scott Barber&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Dennis Rea&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/PerfTestingGuide/Project/FileDownload.aspx?DownloadId=12962" alt="PerfTestGuide.gif" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Download the Guide
&lt;/h3&gt;The Final Release is Available!  Start using the guide today, while we continue to make improvements.&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Release/ProjectReleases.aspx?ReleaseId=6690" class="externalLink"&gt;Download the Performance Testing Guidance for Web Applications Guide &lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Parts
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Part 1, Introduction to Performance Testing&lt;/li&gt;&lt;li&gt;Part II, Exemplar Performance Testing Approaches&lt;/li&gt;&lt;li&gt;Part III, Identify the Test Environment&lt;/li&gt;&lt;li&gt;Part IV, Identify Performance Acceptance Criteria&lt;/li&gt;&lt;li&gt;Part V, Plan and Design Tests&lt;/li&gt;&lt;li&gt;Part VI, Execute Tests&lt;/li&gt;&lt;li&gt;Part VII, Analyze Results and Report&lt;/li&gt;&lt;li&gt;Part VIII, Performance Testing Techniques&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;
Forewards
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Foreword%20By%20Alberto%20Savoia&amp;amp;referringTitle=Home"&gt;Foreword By Alberto Savoia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Foreword%20By%20Rico%20Mariani&amp;amp;referringTitle=Home"&gt;Foreword By Rico Mariani&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;
Chapters
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Introduction&amp;amp;referringTitle=Home"&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Part 1, Introduction to Performance Testing&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%201%20%u2013%20Fundamentals%20of%20Web%20Application%20Performance%20Testing&amp;amp;referringTitle=Home"&gt;Chapter 1 – Fundamentals of Web Application Performance Testing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%202%20%u2013%20Types%20of%20Performance%20Testing&amp;amp;referringTitle=Home"&gt;Chapter 2 – Types of Performance Testing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%203%20%u2013%20Risks%20Addressed%20Through%20Performance%20Testing&amp;amp;referringTitle=Home"&gt;Chapter 3 – Risks Addressed Through Performance Testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part II, Exemplar Performance Testing Approaches&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%204%20%u2013%20Web%20Application%20Performance%20Testing%20Core%20Activities&amp;amp;referringTitle=Home"&gt;Chapter 4 – Web Application Performance Testing Core Activities&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%205%20%u2013%20Coordinating%20Performance%20Testing%20with%20an%20Iteration-Based%20Process&amp;amp;referringTitle=Home"&gt;Chapter 5 – Coordinating Performance Testing with an Iteration-Based Process&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%206%20%u2013%20Managing%20an%20Agile%20Performance%20Test%20Cycle&amp;amp;referringTitle=Home"&gt;Chapter 6 – Managing an Agile Performance Test Cycle&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%207%20%u2013%20Managing%20the%20Performance%20Test%20Cycle%20in%20a%20Regulated%20%28CMMI%29%20Environment&amp;amp;referringTitle=Home"&gt;Chapter 7 – Managing the Performance Test Cycle in a Regulated (CMMI) Environment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part III, Identify the Test Environment&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%208%20%u2013%20Evaluating%20Systems%20to%20Increase%20Performance-Testing%20Effectiveness&amp;amp;referringTitle=Home"&gt;Chapter 8 – Evaluating Systems to Increase Performance-Testing Effectiveness&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part IV, Identify Performance Acceptance Criteria&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%209%20%u2013%20Determining%20Performance%20Testing%20Objectives&amp;amp;referringTitle=Home"&gt;Chapter 9 – Determining Performance Testing Objectives&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2010%20%u2013%20Quantifying%20End-User%20Response%20Time%20Goals&amp;amp;referringTitle=Home"&gt;Chapter 10 – Quantifying End-User Response Time Goals&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2011%20%u2013%20Consolidating%20Various%20Types%20of%20Performance%20Acceptance%20Criteria&amp;amp;referringTitle=Home"&gt;Chapter 11 – Consolidating Various Types of Performance Acceptance Criteria&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part V, Plan and Design Tests&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2012%20%u2013%20Modeling%20Application%20Usage&amp;amp;referringTitle=Home"&gt;Chapter 12 – Modeling Application Usage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2013%20%u2013%20Determining%20Individual%20User%20Data%20and%20Variances&amp;amp;referringTitle=Home"&gt;Chapter 13 – Determining Individual User Data and Variances&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part VI, Execute Tests&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2014%20%u2013%20Test%20Execution&amp;amp;referringTitle=Home"&gt;Chapter 14 – Test Execution&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part VII, Analyze Results and Report&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2015%20%u2013%20Key%20Mathematic%20Principles%20for%20Performance%20Testers&amp;amp;referringTitle=Home"&gt;Chapter 15 – Key Mathematic Principles for Performance Testers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2016%20%u2013%20Performance%20Test%20Reporting%20Fundamentals&amp;amp;referringTitle=Home"&gt;Chapter 16 – Performance Test Reporting Fundamentals&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part VIII, Performance-Testing Techniques&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2017%20%u2013%20Load-Testing%20Web%20Applications&amp;amp;referringTitle=Home"&gt;Chapter 17 – Load-Testing Web Applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2018%20%u2013%20Stress-Testing%20Web%20Applications&amp;amp;referringTitle=Home"&gt;Chapter 18 – Stress-Testing Web Applications&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Reference
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Glossary&amp;amp;referringTitle=Home"&gt;Glossary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Team
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Core Team: &lt;i&gt;&lt;a href="http://blogs.msdn.com/jmeier" class="externalLink"&gt;J.D. Meier&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Carlos Farre, &lt;a href="http://prashantbansode.blogspot.com/" class="externalLink"&gt;Prashant Bansode&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.perftestplus.com/scott_blog.php" class="externalLink"&gt;Scott Barber&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Dennis Rea&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Contributors%20and%20Reviewers&amp;amp;referringTitle=Home"&gt;Contributors and Reviewers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Related Sites
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.CodePlex.com/PerfTesting" class="externalLink"&gt;patterns &amp;amp; practices Performance Testing Guidance &lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>prashantbansode</author><pubDate>Wed, 29 Aug 2007 20:04:56 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20070829080456P</guid></item><item><title>NEW POST: Capacity Models for Planning Resources</title><link>http://www.codeplex.com/PerfTestingGuide/Thread/View.aspx?ThreadId=14407</link><description>&lt;div class="wikidoc"&gt;
How many hours of test planning does the average web shop plan for when assessing development hours to the amount of resource hours to develop test cases, scripts, execute and provide read out of the end product?  For example, is there some industry average that eCare (account maint functions on the web) for companies such as utility companies use?  This includes the time it takes for the resources to assess the requirements of the project.    &lt;br /&gt;
&lt;/div&gt;</description><author>HamoGirl70</author><pubDate>Tue, 28 Aug 2007 09:56:16 GMT</pubDate><guid isPermaLink="false">NEW POST: Capacity Models for Planning Resources 20070828095616A</guid></item><item><title>UPDATED WIKI: Home</title><link>http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Home&amp;version=16</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
patterns &amp;amp; practices Performance Testing Guidance for Web Applications
&lt;/h2&gt;Welcome to the &lt;b&gt;patterns &amp;amp; practices Performance Testing Guidance for Web Applications&lt;/b&gt;!  This guide shows you an end-to-end approach for implementing performance testing.  Whether you are new to performance testing, or looking for ways to improve your current performance testing approach, you will find insights that you can tailor for your specific scenarios.  This guide is related to our &lt;a href="http://www.CodePlex.com/PerfTesting" class="externalLink"&gt;Performance Testing Guidance Project &lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. - &lt;i&gt;&lt;a href="http://blogs.msdn.com/jmeier" class="externalLink"&gt;J.D. Meier&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Carlos Farre, &lt;a href="http://prashantbansode.blogspot.com/" class="externalLink"&gt;Prashant Bansode&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.perftestplus.com/scott_blog.php" class="externalLink"&gt;Scott Barber&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Dennis Rea&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/PerfTestingGuide/Project/FileDownload.aspx?DownloadId=12962" alt="PerfTestGuide.gif" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Download the Guide
&lt;/h3&gt;The Final Release is Available!  Start using the guide today, while we continue to make improvements.&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Release/ProjectReleases.aspx?ReleaseId=6690" class="externalLink"&gt;Download the Performance Testing Guidance for Web Applications Guide &lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Parts
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Part 1, Introduction to Performance Testing&lt;/li&gt;&lt;li&gt;Part II, Exemplar Performance Testing Approaches&lt;/li&gt;&lt;li&gt;Part III, Identify the Test Environment&lt;/li&gt;&lt;li&gt;Part IV, Identify Performance Acceptance Criteria&lt;/li&gt;&lt;li&gt;Part V, Plan and Design Tests&lt;/li&gt;&lt;li&gt;Part VI, Execute Tests&lt;/li&gt;&lt;li&gt;Part VII, Analyze Results and Report&lt;/li&gt;&lt;li&gt;Part VIII, Performance Testing Techniques&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Chapters
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Introduction&amp;amp;referringTitle=Home"&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Part 1, Introduction to Performance Testing&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%201%20%u2013%20Fundamentals%20of%20Web%20Application%20Performance%20Testing&amp;amp;referringTitle=Home"&gt;Chapter 1 – Fundamentals of Web Application Performance Testing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%202%20%u2013%20Types%20of%20Performance%20Testing&amp;amp;referringTitle=Home"&gt;Chapter 2 – Types of Performance Testing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%203%20%u2013%20Risks%20Addressed%20Through%20Performance%20Testing&amp;amp;referringTitle=Home"&gt;Chapter 3 – Risks Addressed Through Performance Testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part II, Exemplar Performance Testing Approaches&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%204%20%u2013%20Web%20Application%20Performance%20Testing%20Core%20Activities&amp;amp;referringTitle=Home"&gt;Chapter 4 – Web Application Performance Testing Core Activities&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%205%20%u2013%20Coordinating%20Performance%20Testing%20with%20an%20Iteration-Based%20Process&amp;amp;referringTitle=Home"&gt;Chapter 5 – Coordinating Performance Testing with an Iteration-Based Process&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%206%20%u2013%20Managing%20an%20Agile%20Performance%20Test%20Cycle&amp;amp;referringTitle=Home"&gt;Chapter 6 – Managing an Agile Performance Test Cycle&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%207%20%u2013%20Managing%20the%20Performance%20Test%20Cycle%20in%20a%20Regulated%20%28CMMI%29%20Environment&amp;amp;referringTitle=Home"&gt;Chapter 7 – Managing the Performance Test Cycle in a Regulated (CMMI) Environment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part III, Identify the Test Environment&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%208%20%u2013%20Evaluating%20Systems%20to%20Increase%20Performance-Testing%20Effectiveness&amp;amp;referringTitle=Home"&gt;Chapter 8 – Evaluating Systems to Increase Performance-Testing Effectiveness&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part IV, Identify Performance Acceptance Criteria&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%209%20%u2013%20Determining%20Performance%20Testing%20Objectives&amp;amp;referringTitle=Home"&gt;Chapter 9 – Determining Performance Testing Objectives&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2010%20%u2013%20Quantifying%20End-User%20Response%20Time%20Goals&amp;amp;referringTitle=Home"&gt;Chapter 10 – Quantifying End-User Response Time Goals&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2011%20%u2013%20Consolidating%20Various%20Types%20of%20Performance%20Acceptance%20Criteria&amp;amp;referringTitle=Home"&gt;Chapter 11 – Consolidating Various Types of Performance Acceptance Criteria&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part V, Plan and Design Tests&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2012%20%u2013%20Modeling%20Application%20Usage&amp;amp;referringTitle=Home"&gt;Chapter 12 – Modeling Application Usage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2013%20%u2013%20Determining%20Individual%20User%20Data%20and%20Variances&amp;amp;referringTitle=Home"&gt;Chapter 13 – Determining Individual User Data and Variances&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part VI, Execute Tests&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2014%20%u2013%20Test%20Execution&amp;amp;referringTitle=Home"&gt;Chapter 14 – Test Execution&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part VII, Analyze Results and Report&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2015%20%u2013%20Key%20Mathematic%20Principles%20for%20Performance%20Testers&amp;amp;referringTitle=Home"&gt;Chapter 15 – Key Mathematic Principles for Performance Testers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2016%20%u2013%20Performance%20Test%20Reporting%20Fundamentals&amp;amp;referringTitle=Home"&gt;Chapter 16 – Performance Test Reporting Fundamentals&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Part VIII, Performance-Testing Techniques&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2017%20%u2013%20Load-Testing%20Web%20Applications&amp;amp;referringTitle=Home"&gt;Chapter 17 – Load-Testing Web Applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter%2018%20%u2013%20Stress-Testing%20Web%20Applications&amp;amp;referringTitle=Home"&gt;Chapter 18 – Stress-Testing Web Applications&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Reference
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Glossary&amp;amp;referringTitle=Home"&gt;Glossary&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Team
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Core Team: &lt;i&gt;&lt;a href="http://blogs.msdn.com/jmeier" class="externalLink"&gt;J.D. Meier&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Carlos Farre, &lt;a href="http://prashantbansode.blogspot.com/" class="externalLink"&gt;Prashant Bansode&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.perftestplus.com/scott_blog.php" class="externalLink"&gt;Scott Barber&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Dennis Rea&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Contributors%20and%20Reviewers&amp;amp;referringTitle=Home"&gt;Contributors and Reviewers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Related Sites
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.CodePlex.com/PerfTesting" class="externalLink"&gt;patterns &amp;amp; practices Performance Testing Guidance &lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author>prashantbansode</author><pubDate>Mon, 27 Aug 2007 20:24:33 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20070827082433P</guid></item><item><title>UPDATED RELEASE: Performance Testing Guidance - Final Release (Aug 27, 2007)</title><link>http://www.codeplex.com/PerfTestingGuide/Release/ProjectReleases.aspx?ReleaseId=6690</link><description>Performance Testing Guidance for Web Applications - PDF Version.&lt;br /&gt;Click the link below to download the guide.</description><author></author><pubDate>Mon, 27 Aug 2007 20:23:36 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: Performance Testing Guidance - Final Release (Aug 27, 2007) 20070827082336P</guid></item><item><title>CREATED RELEASE: Performance Testing Guidance - Final Release (Aug 27, 2007)</title><link>http://www.codeplex.com/PerfTestingGuide/Release/ProjectReleases.aspx?ReleaseId=6690</link><description>Performance Testing Guidance for Web Applications - PDF Version.&lt;br /&gt;Click the link below to download the guide.</description><author></author><pubDate>Mon, 27 Aug 2007 20:19:42 GMT</pubDate><guid isPermaLink="false">CREATED RELEASE: Performance Testing Guidance - Final Release (Aug 27, 2007) 20070827081942P</guid></item><item><title>UPDATED WIKI: Contributors and Reviewers</title><link>http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Contributors and Reviewers&amp;version=17</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Contributors and Reviewers
&lt;/h2&gt;&lt;h3&gt;
Microsoft Contributors / Reviewers
&lt;/h3&gt;Alan Ridlehoover; Clint Huffman; Edmund Wong; Ken Perilman; Larry Brader; Mark Tomlinson; Paul Williams; Pete Coupland; Rico Mariani&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
External Contributors/Reviewers
&lt;/h3&gt;Alberto Savoia; Ben Simo; Cem Kaner; Chris Loosley; Corey Goldberg; Dawn Haynes; Derek Mead; Karen N. Johnson; Mike Bonar; Pradeep Soundararajan; Richard Leeke; Roland Stens; Ross Collard; Steven Woody&lt;br /&gt;
&lt;/div&gt;</description><author>prashantbansode</author><pubDate>Thu, 23 Aug 2007 19:08:24 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Contributors and Reviewers 20070823070824P</guid></item><item><title>UPDATED WIKI: Chapter 18 – Stress-Testing Web Applications</title><link>http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter 18 %25u2013 Stress-Testing Web Applications&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h3&gt;
Chapter 18 – Stress Testing Web Applications
&lt;/h3&gt;- &lt;i&gt;&lt;a href="http://blogs.msdn.com/jmeier" class="externalLink"&gt;J.D. Meier&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Carlos Farre, &lt;a href="http://prashantbansode.blogspot.com/" class="externalLink"&gt;Prashant Bansode&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.perftestplus.com/scott_blog.php" class="externalLink"&gt;Scott Barber&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Dennis Rea&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Objectives
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Understand the key concepts of stress testing.&lt;/li&gt;&lt;li&gt;Learn how to stress-test a Web application.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Overview
&lt;/h3&gt;&lt;i&gt;Stress testing&lt;/i&gt; is a type of performance testing focused on determining an application’s robustness, availability, and reliability under extreme conditions. The goal of stress testing is to identify application issues that arise or become apparent only under extreme conditions. These conditions can include heavy loads, high concurrency, or limited computational resources. Proper stress testing is useful in finding synchronization and timing bugs, interlock problems, priority problems, and resource loss bugs. The idea is to stress a system to the breaking point in order to find bugs that will make that break potentially harmful. The system is not expected to process the overload without adequate resources, but to behave (e.g., fail) in an acceptable manner (e.g., not corrupting or losing data). &lt;br /&gt; &lt;br /&gt;Stress tests typically involve simulating one or more key production scenarios under a variety of stressful conditions. For example, you might deploy your application on a server that is already running a processor-intensive application; in this way, your application is immediately “starved” of processor resources and must compete with the other application for processor cycles. You can also stress-test a single Web page or even a single item such as a stored procedure or class. &lt;br /&gt; &lt;br /&gt;This chapter presents a high-level introduction to stress-testing a Web application. Stress testing can help you identify application issues that surface only under extreme conditions.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Examples of Stress Conditions
&lt;/h4&gt;Examples of stress conditions include:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Excessive volume in terms of either users or data; examples might include a denial of service (DoS) attack or a situation where a widely viewed news item prompts a large number of users to visit a Web site during a three-minute period.&lt;/li&gt;&lt;li&gt;Resource reduction such as a disk drive failure. &lt;/li&gt;&lt;li&gt;Unexpected sequencing.&lt;/li&gt;&lt;li&gt;Unexpected outages/outage recovery.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h4&gt;
Examples of Stress-Related Symptoms 
&lt;/h4&gt;Examples of stress-related symptoms include:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Data is lost or corrupted.&lt;/li&gt;&lt;li&gt;Resource utilization remains unacceptably high after the stress is removed.&lt;/li&gt;&lt;li&gt;Application components fail to respond.&lt;/li&gt;&lt;li&gt;Unhandled exceptions are presented to the end user.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
How to Use This Chapter
&lt;/h3&gt;Use this chapter to understand the key concepts of stress testing and the steps involved in stress-testing a Web application. To get the most from this chapter:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Use the “Input” and “Output” sections to understand the key inputs for stress-testing a Web application and the key outcomes of this type of testing. &lt;/li&gt;&lt;li&gt;Use the “Approach for Stress Testing” section to get** an overview of the approach for stress-testing a Web application, and as quick reference guide for you and your team.&lt;/li&gt;&lt;li&gt;Use the various steps sections to understand the details of each step involved in stress-testing a Web application.&lt;/li&gt;&lt;li&gt;Use the “Usage Scenario for Stress Testing” section to understand various real-world scenarios where stress testing is employed.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Input
&lt;/h3&gt;To perform stress testing, you are likely to use as reference one or more of the following items:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Results from previous stress tests&lt;/li&gt;&lt;li&gt;Application usage characteristics (scenarios)&lt;/li&gt;&lt;li&gt;Concerns about those scenarios under extreme conditions&lt;/li&gt;&lt;li&gt;Workload profile characteristics&lt;/li&gt;&lt;li&gt;Current peak load capacity (obtained from load testing)&lt;/li&gt;&lt;li&gt;Hardware and network architecture and data&lt;/li&gt;&lt;li&gt;Disaster-risk assessment (e.g., likelihood of blackouts, earthquakes, etc.)&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Output
&lt;/h3&gt;Output from a stress test may include:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Measures of the application under stressful conditions&lt;/li&gt;&lt;li&gt;Symptoms of the application under stress&lt;/li&gt;&lt;li&gt;Information the team can use to address robustness, availability, and reliability  &lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Approach for Stress Testing
&lt;/h3&gt;The following steps are involved in stress-testing a Web application:&lt;br /&gt;&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Step1 - Identify test objectives.&lt;/b&gt;  Identify the objectives of stress testing in terms of the desired outcomes of the testing activity. &lt;/li&gt;&lt;li&gt;&lt;b&gt;Step 2 - Identify key scenario(s).&lt;/b&gt;  Identify the application scenario or cases that need to be stress-tested to identify potential problems.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Step 3 - Identify the workload.&lt;/b&gt;  Identify the workload that you want to apply to the scenarios identified during the “Identify objectives” step. This is based on the workload and peak load capacity inputs.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Step 4 - Identify metrics.&lt;/b&gt;  Identify the metrics that you want to collect about the application’s performance. Base these metrics on the potential problems identified for the scenarios you identified during the “Identify objectives” step.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Step 5 - Create test cases.&lt;/b&gt;  Create the test cases in which you define steps for running a single test, as well as your expected results.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Step 6 - Simulate load.&lt;/b&gt;  Use test tools to simulate the required load for each test case and capture the metric data results.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Step 7 - Analyze results.&lt;/b&gt;  Analyze the metric data captured during the test.&lt;/li&gt;
&lt;/ol&gt; &lt;br /&gt; &lt;br /&gt;These steps are graphically represented below; the following sections discuss each step in detail.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/PerfTestingGuide/Project/FileDownload.aspx?DownloadId=17770" alt="Fig18.1.GIF" /&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;_Figure 18.1&lt;/b&gt; Stress Testing Steps_&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Step 1 - Identify Test Objectives
&lt;/h3&gt;Asking yourself or others the following questions can help in identifying the desired outcomes of your stress testing:&lt;br /&gt;&lt;ol&gt;
&lt;li&gt;&lt;i&gt;Is the purpose of the test to identify the ways the system can possibly fail catastrophically in production?&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Is it to provide information to the team in order to build defenses against catastrophic failures?&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Is it to identify how the application behaves when system resources such as memory, disk space, network bandwidth, or processor cycles are depleted?&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Is it to ensure that functionality does not break under stress?&lt;/i&gt; For example, there may be cases where operational performance metrics meet the objectives, but the functionality of the application is failing to meet them — orders are not inserted in the database, the application is not returning the complete product information in searches, form controls are not being populated properly, redirects to custom error pages are occurring during the stress testing, and so on.&lt;/li&gt;
&lt;/ol&gt; &lt;br /&gt;&lt;h3&gt;
Step 2 - Identify Key Scenario(s)
&lt;/h3&gt;To get the most value out of a stress test, the test needs to focus on the behavior of the usage scenario or scenarios that matter most to the overall success of the application. To identify these scenarios, you generally start by defining a single scenario that you want to stress-test in order to identify a potential performance issue. Consider these guidelines when choosing appropriate scenarios:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Select scenarios based on how critical they are to overall application performance.&lt;/li&gt;&lt;li&gt;Try to test those operations that are most likely to affect performance. These might include operations that perform intensive locking and synchronization, long transactions, and disk-intensive input/output (I/O) operations.&lt;/li&gt;&lt;li&gt;Base your scenario selection on the specific areas of your application identified as potential bottlenecks by load-testing data. Although you should have fine-tuned and removed the bottlenecks after load testing, you should still stress-test the system in these areas to verify how well your changes handle extreme stress levels.&lt;/li&gt;
&lt;/ul&gt;  &lt;br /&gt;Examples of scenarios that may need to be stress tested separately from other usage scenarios for a typical e-commerce application include the following:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;An order-processing scenario that updates the inventory for a particular product. This functionality has the potential to exhibit locking and synchronization problems.&lt;/li&gt;&lt;li&gt;A scenario that pages through search results based on user queries. If a user specifies a particularly wide query, there could be a large impact on memory utilization. For example, memory utilization could be affected if a query returns an entire data table.&lt;/li&gt;
&lt;/ul&gt;  &lt;br /&gt;&lt;h3&gt;
Step 3 - Identify the Workload 
&lt;/h3&gt;The load you apply to a particular scenario should stress the system sufficiently beyond threshold limits to enable you to observe the consequences of the stress condition. One method to determine the load at which an application begins to exhibit signs of stress is to incrementally increase the load and observe the application behavior under various load conditions. The key is to systematically test with various workloads until you create a significant failure. These variations may be accomplished by adding more users, reducing delay times, adding or reducing the number and type of user activities represented, or adjusting test data. &lt;br /&gt; &lt;br /&gt;For example, a stress test could be designed to simulate every registered user of the application attempting to log on during one 30-second period. This would simulate a situation where the application suddenly became available again after a period of downtime and all users were anxiously refreshing their browsers, waiting for the application to come back online. Although this situation does not occur frequently in the real world, it does happen often enough for there to be real value in learning how the application will respond if it does. &lt;br /&gt; &lt;br /&gt;Remember to represent the workload with accurate and realistic test data — type and volume, different user logins, product IDs, product categories, and so on — allowing you to simulate important failures such as deadlocks or resource consumption. &lt;br /&gt; &lt;br /&gt;The following activities are generally useful in identifying appropriate workloads for stress testing:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Identify the distribution of work.&lt;/b&gt;  For each key scenario, identify the distribution of work to be simulated. The distribution is based on the number and type of users executing the scenario during the stress test. &lt;/li&gt;&lt;li&gt;&lt;b&gt;Estimate peak user loads.&lt;/b&gt;  Identify the maximum expected number of users during peak load conditions for the application. Using the work distribution you identified for each scenario, calculate the percentage of user load per key scenario.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Identify the anti-profile.&lt;/b&gt;  As an alternative, you can start by applying an anti-profile to the normal workload. In an &lt;i&gt;anti-profile&lt;/i&gt;, the workload distributions are inverted for the scenario under consideration. For example, if the normal load for the order-processing scenario is 10 percent of the total workload, the anti-profile would be 90 percent of the total workload. The remaining load can be distributed among the other scenarios. Using an anti-profile can serve as a valuable starting point for your stress tests because it ensures that the critical scenarios are subjected to loads beyond the normal load conditions.&lt;/li&gt;
&lt;/ul&gt;  &lt;br /&gt;&lt;h3&gt;
Step 4 - Identify Metrics
&lt;/h3&gt;When identified and captured correctly, metrics provide information about how well or poorly your application is performing as compared to your performance objectives. In addition, metrics can help you identify problem areas and bottlenecks within your application. &lt;br /&gt; &lt;br /&gt;Using the desired performance characteristics identified during the “Identify objectives” step, identify metrics to be captured that focus on potential pitfalls for each scenario. The metrics can be related to both performance and throughput goals as well as providing information about potential problems; for example, custom performance counters that have been embedded in the application. &lt;br /&gt; &lt;br /&gt;When identifying metrics, you will use either direct objectives or indicators that are directly or indirectly related to those objectives. The following table describes performance metrics in terms of related performance objectives.&lt;br /&gt; &lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Performance metrics	&lt;/th&gt;&lt;th&gt;Category&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Base set of metrics	&lt;/th&gt;&lt;th&gt; &lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Processor	&lt;/th&gt;&lt;th&gt; Processor utilization&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Process	&lt;/th&gt;&lt;th&gt; Memory consumption&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Processor utilization&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Process recycles&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Memory	&lt;/th&gt;&lt;th&gt; Memory available&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Memory utilization&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Disk	&lt;/th&gt;&lt;th&gt; Disk utilization&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Network	&lt;/th&gt;&lt;th&gt; Network utilization&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Transactions/business metrics	&lt;/th&gt;&lt;th&gt; Transactions/sec&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Transactions succeeded&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Transactions failed&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Orders succeeded&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Orders failed&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Threading	&lt;/th&gt;&lt;th&gt; Contentions per second&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Deadlocks&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Thread allocation&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Response times	&lt;/th&gt;&lt;th&gt; Transactions times&lt;/th&gt;
&lt;/tr&gt;
&lt;/table&gt;    &lt;br /&gt;&lt;h3&gt;
Step 5 - Create Test Cases 
&lt;/h3&gt;Identifying workload profiles and key scenarios generally does not provide all of the information necessary to implement and execute test cases. Additional inputs for completely designing a stress test include performance objectives, workload characteristics, test data, test environments, and identified metrics. Each test design should mention the expected results and/or the key data of interest to be collected, in such a way that each test case can be marked as a “pass,” “fail,” or “inconclusive” after execution. &lt;br /&gt; &lt;br /&gt;The following is an example of a test case based on the order-placement scenario.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Test 1 – Place Order Scenario
&lt;/h4&gt;&lt;b&gt;Workload:&lt;/b&gt; 1,000 simultaneous users. &lt;br /&gt;&lt;b&gt;Think time:&lt;/b&gt; Use a random think time between 1 and 10 seconds in the test script after each operation. &lt;br /&gt;&lt;b&gt;Test Duration:&lt;/b&gt; Run the test for two days. &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Expected results:&lt;/b&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Application hosting process should not recycle because of deadlock or memory consumption. &lt;/li&gt;&lt;li&gt;Throughput should not fall below 35 requests per second. &lt;/li&gt;&lt;li&gt;Response time should not be greater than 7 seconds for 95 percent of total transactions completed. &lt;/li&gt;&lt;li&gt;“Server busy” errors should not be more than 10 percent of the total response because of contention-related issues. &lt;/li&gt;&lt;li&gt;Order transactions should not fail during test execution. Database entries should match the “Transactions succeeded” count.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Step 6 - Simulate Load
&lt;/h3&gt;After you have completed the previous steps to an appropriate degree, you should be ready to simulate the load executing the stress test. Typically, test execution follows these steps: &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Validate that the test environment matches the configuration that you were expecting and/or designed your test for.&lt;/li&gt;&lt;li&gt;Ensure that both the test and the test environment are correctly configured for metrics collection.  &lt;/li&gt;&lt;li&gt;Before running the test, execute a quick “smoke test” to make sure that the test script and remote performance counters are working correctly.&lt;/li&gt;&lt;li&gt;Reset the system (unless your scenario is to do otherwise) and start a formal test execution.&lt;/li&gt;
&lt;/ol&gt; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; Make sure that the client (a.k.a. load generator) computers that you use to generate load are not overly stressed. Utilization of resources such as processor and memory should remain low enough to ensure that the load-generation environment is not itself a bottleneck.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Step 7 - Analyze Results
&lt;/h3&gt;Analyze the captured data and compare the results against the metric’s accepted level. If the results indicate that your required performance levels have not been attained, analyze and fix the cause of the bottleneck. To address observed issues, you might need to do one or more of the following:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Perform a design review. &lt;/li&gt;&lt;li&gt;Perform a code review.&lt;/li&gt;&lt;li&gt;Run stress tests in environments where it is possible to debug possible causes of failures, during test execution.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;In situations where performance issues are observed, but only under conditions that are deemed to be unlikely enough to warrant tuning at the current time, you may want to consider conducting additional tests to identify an early indicator for the issue in order to avoid unwanted surprises.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Usage Scenarios for Stress Testing
&lt;/h3&gt;The following are examples of how stress testing is applied in practice:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Application stress testing.&lt;/b&gt;  This type of test typically focuses on more than one transaction on the system under stress, without the isolation of components. With application stress testing, you are likely to uncover defects related to data locking and blocking, network congestion, and performance bottlenecks on different components or methods across the entire application. Because the test scope is a single application, it is common to use this type of stress testing after a robust application load-testing effort, or as a last test phase for capacity planning. It is also common to find defects related to race conditions and general memory leaks from shared code or components.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Transactional stress testing.&lt;/b&gt;  Transactional stress tests aim at working at a transactional level with load volumes that go beyond those of the anticipated production operations. These tests are focused on validating behavior under stressful conditions, such as high load with same resource constraints, when testing the entire application. Because the test isolates an individual transaction, or group of transactions, it allows for a very specific understanding of throughput capacities and other characteristics for individual components without the added complication of inter-component interactions that occurs in testing at the application level. These tests are useful for tuning, optimizing, and finding error conditions at the specific component level.   &lt;/li&gt;&lt;li&gt;&lt;b&gt;*Systemic stress testing.*&lt;/b&gt;  In this type of test, stress or extreme load conditions are generated across multiple applications running on the same system, thereby pushing the boundaries of the applications’ expected capabilities to an extreme. The goal of systemic stress testing is to uncover defects in situations where different applications block one another and compete for system resources such as memory, processor cycles, disk space, and network bandwidth. This type of testing is also known as &lt;i&gt;integration stress testing&lt;/i&gt; or &lt;i&gt;consolidation stress testing&lt;/i&gt;. In large-scale systemic stress tests, you stress all of the applications together in the same consolidated environment. Some organizations choose to perform this type of testing in a larger test lab facility, sometimes with the hardware or software vendor’s assistance.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Exploratory Stress Testing
&lt;/h3&gt;&lt;i&gt;Exploratory stress testing&lt;/i&gt; is an approach to subjecting a system, application, or component to a set of unusual parameters or conditions that are unlikely to occur in the real world but are nevertheless possible. In general, exploratory testing can be viewed as an interactive process of simultaneous learning, test design, and test execution. Most often, exploratory stress tests are designed by modifying existing tests and/or working with application/system administrators to create unlikely but possible conditions in the system. This type of stress testing is seldom conducted in isolation because it is typically conducted to determine if more systematic stress testing is called for related to a particular failure mode. The following are some examples of exploratory stress tests to determine the answer to “How will the system respond if…?”&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;All of the users logged on at the same time.&lt;/li&gt;&lt;li&gt;The load balancer suddenly failed.&lt;/li&gt;&lt;li&gt;All of the servers started their scheduled virus scan at the same time during a period of peak load.&lt;/li&gt;&lt;li&gt;The database went offline during peak usage.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Summary
&lt;/h3&gt;Stress testing allows you to identify potential application issues that surface only under extreme conditions. Such conditions range from exhaustion of system resources such as memory, processor cycles, network bandwidth, and disk capacity to excessive load due to unpredictable usage patterns, common in Web applications. &lt;br /&gt; &lt;br /&gt;Stress testing centers around objectives and key user scenarios with an emphasis on the robustness, reliability, and stability of the application. The effectiveness of stress testing relies on applying the correct methodology and being able to effectively analyze testing results. Applying the correct methodology is dependent on the capacity for reproducing workload conditions for both user load and volume of data, reproducing key scenarios, and interpreting the key performance metrics.&lt;br /&gt;
&lt;/div&gt;</description><author>prashantbansode</author><pubDate>Thu, 23 Aug 2007 19:06:51 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Chapter 18 – Stress-Testing Web Applications 20070823070651P</guid></item><item><title>UPDATED WIKI: Chapter 18 – Stress-Testing Web Applications</title><link>http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter 18 %25u2013 Stress-Testing Web Applications&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h3&gt;
Chapter 18 – Stress Testing Web Applications
&lt;/h3&gt;- &lt;i&gt;&lt;a href="http://blogs.msdn.com/jmeier" class="externalLink"&gt;J.D. Meier&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Carlos Farre, &lt;a href="http://prashantbansode.blogspot.com/" class="externalLink"&gt;Prashant Bansode&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.perftestplus.com/scott_blog.php" class="externalLink"&gt;Scott Barber&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Dennis Rea&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Objectives
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Understand the key concepts of stress testing.&lt;/li&gt;&lt;li&gt;Learn how to stress-test a Web application.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Overview
&lt;/h3&gt;&lt;i&gt;Stress testing&lt;/i&gt; is a type of performance testing focused on determining an application’s robustness, availability, and reliability under extreme conditions. The goal of stress testing is to identify application issues that arise or become apparent only under extreme conditions. These conditions can include heavy loads, high concurrency, or limited computational resources. Proper stress testing is useful in finding synchronization and timing bugs, interlock problems, priority problems, and resource loss bugs. The idea is to stress a system to the breaking point in order to find bugs that will make that break potentially harmful. The system is not expected to process the overload without adequate resources, but to behave (e.g., fail) in an acceptable manner (e.g., not corrupting or losing data). &lt;br /&gt; &lt;br /&gt;Stress tests typically involve simulating one or more key production scenarios under a variety of stressful conditions. For example, you might deploy your application on a server that is already running a processor-intensive application; in this way, your application is immediately “starved” of processor resources and must compete with the other application for processor cycles. You can also stress-test a single Web page or even a single item such as a stored procedure or class. &lt;br /&gt; &lt;br /&gt;This chapter presents a high-level introduction to stress-testing a Web application. Stress testing can help you identify application issues that surface only under extreme conditions.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Examples of Stress Conditions
&lt;/h4&gt;Examples of stress conditions include:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Excessive volume in terms of either users or data; examples might include a denial of service (DoS) attack or a situation where a widely viewed news item prompts a large number of users to visit a Web site during a three-minute period.&lt;/li&gt;&lt;li&gt;Resource reduction such as a disk drive failure. &lt;/li&gt;&lt;li&gt;Unexpected sequencing.&lt;/li&gt;&lt;li&gt;Unexpected outages/outage recovery.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h4&gt;
Examples of Stress-Related Symptoms 
&lt;/h4&gt;Examples of stress-related symptoms include:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Data is lost or corrupted.&lt;/li&gt;&lt;li&gt;Resource utilization remains unacceptably high after the stress is removed.&lt;/li&gt;&lt;li&gt;Application components fail to respond.&lt;/li&gt;&lt;li&gt;Unhandled exceptions are presented to the end user.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
How to Use This Chapter
&lt;/h3&gt;Use this chapter to understand the key concepts of stress testing and the steps involved in stress-testing a Web application. To get the most from this chapter:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Use the “Input” and “Output” sections to understand the key inputs for stress-testing a Web application and the key outcomes of this type of testing. &lt;/li&gt;&lt;li&gt;Use the “Approach for Stress Testing” section to get** an overview of the approach for stress-testing a Web application, and as quick reference guide for you and your team.&lt;/li&gt;&lt;li&gt;Use the various steps sections to understand the details of each step involved in stress-testing a Web application.&lt;/li&gt;&lt;li&gt;Use the “Usage Scenario for Stress Testing” section to understand various real-world scenarios where stress testing is employed.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Input
&lt;/h3&gt;To perform stress testing, you are likely to use as reference one or more of the following items:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Results from previous stress tests&lt;/li&gt;&lt;li&gt;Application usage characteristics (scenarios)&lt;/li&gt;&lt;li&gt;Concerns about those scenarios under extreme conditions&lt;/li&gt;&lt;li&gt;Workload profile characteristics&lt;/li&gt;&lt;li&gt;Current peak load capacity (obtained from load testing)&lt;/li&gt;&lt;li&gt;Hardware and network architecture and data&lt;/li&gt;&lt;li&gt;Disaster-risk assessment (e.g., likelihood of blackouts, earthquakes, etc.)&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Output
&lt;/h3&gt;Output from a stress test may include:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Measures of the application under stressful conditions&lt;/li&gt;&lt;li&gt;Symptoms of the application under stress&lt;/li&gt;&lt;li&gt;Information the team can use to address robustness, availability, and reliability  &lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Approach for Stress Testing
&lt;/h3&gt;The following steps are involved in stress-testing a Web application:&lt;br /&gt;&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Step1 - Identify test objectives.&lt;/b&gt;  Identify the objectives of stress testing in terms of the desired outcomes of the testing activity. &lt;/li&gt;&lt;li&gt;&lt;b&gt;Step 2 - Identify key scenario(s).&lt;/b&gt;  Identify the application scenario or cases that need to be stress-tested to identify potential problems.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Step 3 - Identify the workload.&lt;/b&gt;  Identify the workload that you want to apply to the scenarios identified during the “Identify objectives” step. This is based on the workload and peak load capacity inputs.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Step 4 - Identify metrics.&lt;/b&gt;  Identify the metrics that you want to collect about the application’s performance. Base these metrics on the potential problems identified for the scenarios you identified during the “Identify objectives” step.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Step 5 - Create test cases.&lt;/b&gt;  Create the test cases in which you define steps for running a single test, as well as your expected results.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Step 6 - Simulate load.&lt;/b&gt;  Use test tools to simulate the required load for each test case and capture the metric data results.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Step 7 - Analyze results.&lt;/b&gt;  Analyze the metric data captured during the test.&lt;/li&gt;
&lt;/ol&gt; &lt;br /&gt; &lt;br /&gt;These steps are graphically represented below; the following sections discuss each step in detail.&lt;br /&gt; &lt;br /&gt;&lt;span class="unresolved"&gt;Cannot resolve link: &lt;/span&gt;[image:Fig18.1.GIF] &lt;br /&gt; &lt;br /&gt;&lt;b&gt;_Figure 18.1&lt;/b&gt; Stress Testing Steps_&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Step 1 - Identify Test Objectives
&lt;/h3&gt;Asking yourself or others the following questions can help in identifying the desired outcomes of your stress testing:&lt;br /&gt;&lt;ol&gt;
&lt;li&gt;&lt;i&gt;Is the purpose of the test to identify the ways the system can possibly fail catastrophically in production?&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Is it to provide information to the team in order to build defenses against catastrophic failures?&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Is it to identify how the application behaves when system resources such as memory, disk space, network bandwidth, or processor cycles are depleted?&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Is it to ensure that functionality does not break under stress?&lt;/i&gt; For example, there may be cases where operational performance metrics meet the objectives, but the functionality of the application is failing to meet them — orders are not inserted in the database, the application is not returning the complete product information in searches, form controls are not being populated properly, redirects to custom error pages are occurring during the stress testing, and so on.&lt;/li&gt;
&lt;/ol&gt; &lt;br /&gt;&lt;h3&gt;
Step 2 - Identify Key Scenario(s)
&lt;/h3&gt;To get the most value out of a stress test, the test needs to focus on the behavior of the usage scenario or scenarios that matter most to the overall success of the application. To identify these scenarios, you generally start by defining a single scenario that you want to stress-test in order to identify a potential performance issue. Consider these guidelines when choosing appropriate scenarios:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Select scenarios based on how critical they are to overall application performance.&lt;/li&gt;&lt;li&gt;Try to test those operations that are most likely to affect performance. These might include operations that perform intensive locking and synchronization, long transactions, and disk-intensive input/output (I/O) operations.&lt;/li&gt;&lt;li&gt;Base your scenario selection on the specific areas of your application identified as potential bottlenecks by load-testing data. Although you should have fine-tuned and removed the bottlenecks after load testing, you should still stress-test the system in these areas to verify how well your changes handle extreme stress levels.&lt;/li&gt;
&lt;/ul&gt;  &lt;br /&gt;Examples of scenarios that may need to be stress tested separately from other usage scenarios for a typical e-commerce application include the following:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;An order-processing scenario that updates the inventory for a particular product. This functionality has the potential to exhibit locking and synchronization problems.&lt;/li&gt;&lt;li&gt;A scenario that pages through search results based on user queries. If a user specifies a particularly wide query, there could be a large impact on memory utilization. For example, memory utilization could be affected if a query returns an entire data table.&lt;/li&gt;
&lt;/ul&gt;  &lt;br /&gt;&lt;h3&gt;
Step 3 - Identify the Workload 
&lt;/h3&gt;The load you apply to a particular scenario should stress the system sufficiently beyond threshold limits to enable you to observe the consequences of the stress condition. One method to determine the load at which an application begins to exhibit signs of stress is to incrementally increase the load and observe the application behavior under various load conditions. The key is to systematically test with various workloads until you create a significant failure. These variations may be accomplished by adding more users, reducing delay times, adding or reducing the number and type of user activities represented, or adjusting test data. &lt;br /&gt; &lt;br /&gt;For example, a stress test could be designed to simulate every registered user of the application attempting to log on during one 30-second period. This would simulate a situation where the application suddenly became available again after a period of downtime and all users were anxiously refreshing their browsers, waiting for the application to come back online. Although this situation does not occur frequently in the real world, it does happen often enough for there to be real value in learning how the application will respond if it does. &lt;br /&gt; &lt;br /&gt;Remember to represent the workload with accurate and realistic test data — type and volume, different user logins, product IDs, product categories, and so on — allowing you to simulate important failures such as deadlocks or resource consumption. &lt;br /&gt; &lt;br /&gt;The following activities are generally useful in identifying appropriate workloads for stress testing:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Identify the distribution of work.&lt;/b&gt;  For each key scenario, identify the distribution of work to be simulated. The distribution is based on the number and type of users executing the scenario during the stress test. &lt;/li&gt;&lt;li&gt;&lt;b&gt;Estimate peak user loads.&lt;/b&gt;  Identify the maximum expected number of users during peak load conditions for the application. Using the work distribution you identified for each scenario, calculate the percentage of user load per key scenario.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Identify the anti-profile.&lt;/b&gt;  As an alternative, you can start by applying an anti-profile to the normal workload. In an &lt;i&gt;anti-profile&lt;/i&gt;, the workload distributions are inverted for the scenario under consideration. For example, if the normal load for the order-processing scenario is 10 percent of the total workload, the anti-profile would be 90 percent of the total workload. The remaining load can be distributed among the other scenarios. Using an anti-profile can serve as a valuable starting point for your stress tests because it ensures that the critical scenarios are subjected to loads beyond the normal load conditions.&lt;/li&gt;
&lt;/ul&gt;  &lt;br /&gt;&lt;h3&gt;
Step 4 - Identify Metrics
&lt;/h3&gt;When identified and captured correctly, metrics provide information about how well or poorly your application is performing as compared to your performance objectives. In addition, metrics can help you identify problem areas and bottlenecks within your application. &lt;br /&gt; &lt;br /&gt;Using the desired performance characteristics identified during the “Identify objectives” step, identify metrics to be captured that focus on potential pitfalls for each scenario. The metrics can be related to both performance and throughput goals as well as providing information about potential problems; for example, custom performance counters that have been embedded in the application. &lt;br /&gt; &lt;br /&gt;When identifying metrics, you will use either direct objectives or indicators that are directly or indirectly related to those objectives. The following table describes performance metrics in terms of related performance objectives.&lt;br /&gt; &lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Performance metrics	&lt;/th&gt;&lt;th&gt;Category&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Base set of metrics	&lt;/th&gt;&lt;th&gt; &lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Processor	&lt;/th&gt;&lt;th&gt; Processor utilization&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Process	&lt;/th&gt;&lt;th&gt; Memory consumption&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Processor utilization&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Process recycles&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Memory	&lt;/th&gt;&lt;th&gt; Memory available&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Memory utilization&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Disk	&lt;/th&gt;&lt;th&gt; Disk utilization&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Network	&lt;/th&gt;&lt;th&gt; Network utilization&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Transactions/business metrics	&lt;/th&gt;&lt;th&gt; Transactions/sec&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Transactions succeeded&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Transactions failed&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Orders succeeded&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Orders failed&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Threading	&lt;/th&gt;&lt;th&gt; Contentions per second&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Deadlocks&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt; Thread allocation&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;th&gt;Response times	&lt;/th&gt;&lt;th&gt; Transactions times&lt;/th&gt;
&lt;/tr&gt;
&lt;/table&gt;    &lt;br /&gt;&lt;h3&gt;
Step 5 - Create Test Cases 
&lt;/h3&gt;Identifying workload profiles and key scenarios generally does not provide all of the information necessary to implement and execute test cases. Additional inputs for completely designing a stress test include performance objectives, workload characteristics, test data, test environments, and identified metrics. Each test design should mention the expected results and/or the key data of interest to be collected, in such a way that each test case can be marked as a “pass,” “fail,” or “inconclusive” after execution. &lt;br /&gt; &lt;br /&gt;The following is an example of a test case based on the order-placement scenario.&lt;br /&gt; &lt;br /&gt;&lt;h4&gt;
Test 1 – Place Order Scenario
&lt;/h4&gt;&lt;b&gt;Workload:&lt;/b&gt; 1,000 simultaneous users. &lt;br /&gt;&lt;b&gt;Think time:&lt;/b&gt; Use a random think time between 1 and 10 seconds in the test script after each operation. &lt;br /&gt;&lt;b&gt;Test Duration:&lt;/b&gt; Run the test for two days. &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Expected results:&lt;/b&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Application hosting process should not recycle because of deadlock or memory consumption. &lt;/li&gt;&lt;li&gt;Throughput should not fall below 35 requests per second. &lt;/li&gt;&lt;li&gt;Response time should not be greater than 7 seconds for 95 percent of total transactions completed. &lt;/li&gt;&lt;li&gt;“Server busy” errors should not be more than 10 percent of the total response because of contention-related issues. &lt;/li&gt;&lt;li&gt;Order transactions should not fail during test execution. Database entries should match the “Transactions succeeded” count.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Step 6 - Simulate Load
&lt;/h3&gt;After you have completed the previous steps to an appropriate degree, you should be ready to simulate the load executing the stress test. Typically, test execution follows these steps: &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Validate that the test environment matches the configuration that you were expecting and/or designed your test for.&lt;/li&gt;&lt;li&gt;Ensure that both the test and the test environment are correctly configured for metrics collection.  &lt;/li&gt;&lt;li&gt;Before running the test, execute a quick “smoke test” to make sure that the test script and remote performance counters are working correctly.&lt;/li&gt;&lt;li&gt;Reset the system (unless your scenario is to do otherwise) and start a formal test execution.&lt;/li&gt;
&lt;/ol&gt; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; Make sure that the client (a.k.a. load generator) computers that you use to generate load are not overly stressed. Utilization of resources such as processor and memory should remain low enough to ensure that the load-generation environment is not itself a bottleneck.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Step 7 - Analyze Results
&lt;/h3&gt;Analyze the captured data and compare the results against the metric’s accepted level. If the results indicate that your required performance levels have not been attained, analyze and fix the cause of the bottleneck. To address observed issues, you might need to do one or more of the following:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Perform a design review. &lt;/li&gt;&lt;li&gt;Perform a code review.&lt;/li&gt;&lt;li&gt;Run stress tests in environments where it is possible to debug possible causes of failures, during test execution.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;In situations where performance issues are observed, but only under conditions that are deemed to be unlikely enough to warrant tuning at the current time, you may want to consider conducting additional tests to identify an early indicator for the issue in order to avoid unwanted surprises.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Usage Scenarios for Stress Testing
&lt;/h3&gt;The following are examples of how stress testing is applied in practice:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Application stress testing.&lt;/b&gt;  This type of test typically focuses on more than one transaction on the system under stress, without the isolation of components. With application stress testing, you are likely to uncover defects related to data locking and blocking, network congestion, and performance bottlenecks on different components or methods across the entire application. Because the test scope is a single application, it is common to use this type of stress testing after a robust application load-testing effort, or as a last test phase for capacity planning. It is also common to find defects related to race conditions and general memory leaks from shared code or components.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Transactional stress testing.&lt;/b&gt;  Transactional stress tests aim at working at a transactional level with load volumes that go beyond those of the anticipated production operations. These tests are focused on validating behavior under stressful conditions, such as high load with same resource constraints, when testing the entire application. Because the test isolates an individual transaction, or group of transactions, it allows for a very specific understanding of throughput capacities and other characteristics for individual components without the added complication of inter-component interactions that occurs in testing at the application level. These tests are useful for tuning, optimizing, and finding error conditions at the specific component level.   &lt;/li&gt;&lt;li&gt;&lt;b&gt;*Systemic stress testing.*&lt;/b&gt;  In this type of test, stress or extreme load conditions are generated across multiple applications running on the same system, thereby pushing the boundaries of the applications’ expected capabilities to an extreme. The goal of systemic stress testing is to uncover defects in situations where different applications block one another and compete for system resources such as memory, processor cycles, disk space, and network bandwidth. This type of testing is also known as &lt;i&gt;integration stress testing&lt;/i&gt; or &lt;i&gt;consolidation stress testing&lt;/i&gt;. In large-scale systemic stress tests, you stress all of the applications together in the same consolidated environment. Some organizations choose to perform this type of testing in a larger test lab facility, sometimes with the hardware or software vendor’s assistance.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Exploratory Stress Testing
&lt;/h3&gt;&lt;i&gt;Exploratory stress testing&lt;/i&gt; is an approach to subjecting a system, application, or component to a set of unusual parameters or conditions that are unlikely to occur in the real world but are nevertheless possible. In general, exploratory testing can be viewed as an interactive process of simultaneous learning, test design, and test execution. Most often, exploratory stress tests are designed by modifying existing tests and/or working with application/system administrators to create unlikely but possible conditions in the system. This type of stress testing is seldom conducted in isolation because it is typically conducted to determine if more systematic stress testing is called for related to a particular failure mode. The following are some examples of exploratory stress tests to determine the answer to “How will the system respond if…?”&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;All of the users logged on at the same time.&lt;/li&gt;&lt;li&gt;The load balancer suddenly failed.&lt;/li&gt;&lt;li&gt;All of the servers started their scheduled virus scan at the same time during a period of peak load.&lt;/li&gt;&lt;li&gt;The database went offline during peak usage.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Summary
&lt;/h3&gt;Stress testing allows you to identify potential application issues that surface only under extreme conditions. Such conditions range from exhaustion of system resources such as memory, processor cycles, network bandwidth, and disk capacity to excessive load due to unpredictable usage patterns, common in Web applications. &lt;br /&gt; &lt;br /&gt;Stress testing centers around objectives and key user scenarios with an emphasis on the robustness, reliability, and stability of the application. The effectiveness of stress testing relies on applying the correct methodology and being able to effectively analyze testing results. Applying the correct methodology is dependent on the capacity for reproducing workload conditions for both user load and volume of data, reproducing key scenarios, and interpreting the key performance metrics.&lt;br /&gt;
&lt;/div&gt;</description><author>prashantbansode</author><pubDate>Thu, 23 Aug 2007 19:06:15 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Chapter 18 – Stress-Testing Web Applications 20070823070615P</guid></item><item><title>UPDATED WIKI: Chapter 17 – Load-Testing Web Applications</title><link>http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter 17 %25u2013 Load-Testing Web Applications&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h3&gt;
Chapter 17 – Load-Testing Web Applications
&lt;/h3&gt;- &lt;i&gt;&lt;a href="http://blogs.msdn.com/jmeier" class="externalLink"&gt;J.D. Meier&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Carlos Farre, &lt;a href="http://prashantbansode.blogspot.com/" class="externalLink"&gt;Prashant Bansode&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.perftestplus.com/scott_blog.php" class="externalLink"&gt;Scott Barber&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Dennis Rea&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Objectives
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Understand the key concepts of load testing.&lt;/li&gt;&lt;li&gt;Learn how to load-test a Web application.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Overview
&lt;/h3&gt;This chapter explains how to load-test a Web application. Load testing helps to identify the maximum operating capacity of an application as well as any bottlenecks that might interfere with its operating at capacity. The basic approach to performing load testing on a Web application is:&lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Identify the performance-critical scenarios.&lt;/li&gt;&lt;li&gt;Identify the workload profile for distributing the entire load among the key scenarios.&lt;/li&gt;&lt;li&gt;Identify the metrics that you want to collect in order to verify them against your performance objectives.&lt;/li&gt;&lt;li&gt;Design tests to simulate the load.&lt;/li&gt;&lt;li&gt;Use tools to implement the load according to the designed tests, and capture the metrics.&lt;/li&gt;&lt;li&gt;Analyze the metric data captured during the tests. &lt;/li&gt;
&lt;/ol&gt; &lt;br /&gt;By using an iterative testing process, these steps should help you achieve your performance objectives.&lt;br /&gt; &lt;br /&gt;There are many reasons for load-testing a Web application. The most basic type of load testing is used to determine the Web application’s behavior under both normal and anticipated peak load conditions. As you begin load testing, it is recommended that you start with a small number of virtual users and then incrementally increase the load from normal to peak. You can then observe how your application performs during this gradually increasing load condition. Eventually, you will cross a threshold limit for your performance objectives. For example, you might continue to increase the load until the server processor utilization reaches 75 percent, or when end-user response times exceed 8 seconds. &lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
How to Use This Chapter
&lt;/h3&gt;Use this chapter to understand the key concepts of load testing and the steps involved in load-testing Web applications. To get the most from this chapter:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Use the “Input” and “Output” sections to understand the key inputs for load testing a Web application and the key outcomes of doing so. &lt;/li&gt;&lt;li&gt;Use the “Approach for Load Testing” section to get** an overview of the approach for load testing a Web application, and as quick reference guide for you and your team.&lt;/li&gt;&lt;li&gt;Use the various steps sections to understand the details of each step involved in load-testing a Web application.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Input
&lt;/h3&gt;The following are useful inputs for load-testing a Web application:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Performance-critical usage scenarios&lt;/li&gt;&lt;li&gt;Workload models&lt;/li&gt;&lt;li&gt;Performance acceptance criteria&lt;/li&gt;&lt;li&gt;Performance metrics associated with the acceptance criteria&lt;/li&gt;&lt;li&gt;Interview feedback from the designer or developer of the Web application&lt;/li&gt;&lt;li&gt;Interview feedback from end users of the application&lt;/li&gt;&lt;li&gt;Interview feedback from the operations personnel who will maintain and manage the application&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Output
&lt;/h3&gt;The main outcomes that load testing helps you to accomplish are:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Updated test plans and test designs for load and performance testing&lt;/li&gt;&lt;li&gt;Various performance measures such as throughput, response time, and resource utilization&lt;/li&gt;&lt;li&gt;Potential bottlenecks that need to be analyzed in the white-box testing phase&lt;/li&gt;&lt;li&gt;The behavior of the application at various load levels&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Approach for Load Testing
&lt;/h3&gt;The following steps are involved in load-testing a Web application:&lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Step 1 - Identify performance acceptance criteria&lt;/li&gt;&lt;li&gt;Step 2 - Identify key scenarios&lt;/li&gt;&lt;li&gt;Step 3 - Create a workload model&lt;/li&gt;&lt;li&gt;Step 4 - Identify the target load levels&lt;/li&gt;&lt;li&gt;Step 5 - Identify metrics&lt;/li&gt;&lt;li&gt;Step 6 - Design specific tests&lt;/li&gt;&lt;li&gt;Step 7 - Run tests &lt;/li&gt;&lt;li&gt;Step 8 - Analyze the results&lt;/li&gt;
&lt;/ol&gt; &lt;br /&gt;These steps are graphically represented below. The sections that follow discuss each step in detail.&lt;br /&gt; &lt;br /&gt;&lt;img src="http://www.codeplex.com/PerfTestingGuide/Project/FileDownload.aspx?DownloadId=17769" alt="Fig17.1.GIF" /&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;_Figure 17.1&lt;/b&gt; Load Testing Steps_&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Step 1 - Identify Performance Acceptance Criteria
&lt;/h3&gt;Identifying performance acceptance criteria is most valuable when initiated early in the application’s development life cycle. It is frequently valuable to record the acceptance criteria for your application and store them in a place and format that is available to the entire team for review and comment. Criteria are typically determined by balancing your business, industry, technology, competitive, and user requirements.&lt;br /&gt; &lt;br /&gt;Test objectives frequently include the following: &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Response time.&lt;/b&gt;  For example, the product catalog must be displayed in less than 3 seconds.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Throughput.&lt;/b&gt;  For example, the system must support 100 transactions per second.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Resource utilization.&lt;/b&gt;  A frequently overlooked aspect is the amount of resources your application is consuming, in terms of processor, memory, disk input output (I/O), and network I/O.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Maximum user load.&lt;/b&gt;  This test objective determines how many users can run on a specific hardware configuration.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Business related metrics.&lt;/b&gt;  This objective is mapped to business volume at normal and peak values; for example, the number of orders or Help desk calls handled at a given time. &lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Step 2 - Identify Key Scenarios 
&lt;/h3&gt;&lt;i&gt;Scenarios&lt;/i&gt; are anticipated user paths that generally incorporate multiple application activities. Key scenarios are those for which you have specific performance goals, those considered to be high-risk, those that are most commonly used, or those with a significant performance impact. The basic steps for identifying key scenarios are.&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Identify all the scenarios for a Web application. For example, even the most basic e-commerce application must support the following user scenarios:&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Browse catalog&lt;/li&gt;&lt;li&gt;Search for a product&lt;/li&gt;&lt;li&gt;Place an order &lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Identify the activities involved in each of the scenarios. For example, a “Place an Order” scenario will include the following activities:&lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Log on to the application.&lt;/li&gt;&lt;li&gt;Browse the product catalog.&lt;/li&gt;&lt;li&gt;Search for a specific product.&lt;/li&gt;&lt;li&gt;Add items to the shopping cart.&lt;/li&gt;&lt;li&gt;Validate credit card details and place an order. &lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Identify the scenarios that are most commonly executed or most resource-intensive; these will be the key scenarios used for load testing. For example, in an e-commerce application, browsing a catalog may be the most commonly executed scenario, whereas placing an order may be the most resource-intensive scenario because it accesses the database. &lt;/li&gt;&lt;ul&gt;
&lt;li&gt; The most commonly executed scenarios for an existing Web application can be determined by examining the log files.&lt;/li&gt;&lt;li&gt;The most commonly executed scenarios for a new Web application can be obtained from market research, historical data, market trends, and so on.&lt;/li&gt;&lt;li&gt;Resource-intensive scenarios can be identified by using design documents or the actual code implementation. The primary resources are: &lt;/li&gt;&lt;ul&gt;
&lt;li&gt;Processor&lt;/li&gt;&lt;li&gt;Memory&lt;/li&gt;&lt;li&gt;Disk I/O&lt;/li&gt;&lt;li&gt;Network I/O&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;Once they have been identified, you will use these key scenarios to create workload profiles and to design load tests. &lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Step 3 - Create a Workload Model
&lt;/h3&gt;When defining workload distribution, consider the following key points for determining the characteristics for user scenarios:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;A user scenario is defined as a navigational path, including intermediate steps or activities, taken by the user to complete a task. This can also be thought of as a user session. &lt;/li&gt;&lt;li&gt;A user will typically pause between pages during a session. This is known as &lt;i&gt;user delay&lt;/i&gt; or &lt;i&gt;think time&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;A session will have an average duration when viewed across multiple users. It is important to account for this when defining the load levels that will translate into concurrent usage, overlapping users, or user sessions per unit of time.&lt;/li&gt;&lt;li&gt;Not all scenarios can be performed by a new user, a returning user, or either; know who you expect your primary users to be and test accordingly.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Step 4 - Identify Target Load Levels
&lt;/h3&gt;Identify the load levels to be applied to the workload distribution(s) identified during the previous step. The purpose of identifying target load levels is to ensure that your tests can be used to predict or compare a variety of production load conditions. The following are common inputs used for determining target load levels:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Business volume (both current and projected) as it relates to your performance objectives&lt;/li&gt;&lt;li&gt;Key scenarios&lt;/li&gt;&lt;li&gt;Distribution of work&lt;/li&gt;&lt;li&gt;Session characteristics (navigational path, duration, percentage of new users)&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;By combining the items above, you can determine the remaining details necessary to implement the workload model under a particular target load. &lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Step 5 - Identify Metrics
&lt;/h3&gt;There is a virtually unlimited number of metrics that can be collected during a performance test execution. However, collecting too many metrics can make analysis unwieldy as well as negatively impact the application’s actual performance. For these reasons, it is important to identify the metrics that are most relevant to your performance objectives and those that you anticipate will help you to identify bottlenecks. Only well-selected metrics that are analyzed correctly and contextually provide information of value.  &lt;br /&gt; &lt;br /&gt;The following are a few suggestions for identifying the metrics that will provide the most valuable information to your project:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Define questions related to your application performance that can be easily tested.&lt;/b&gt;  For example, what is the checkout response time when placing an order? How many orders are placed in a minute? These questions have definite answers.&lt;/li&gt;&lt;li&gt;&lt;b&gt;With the answers to these questions, determine quality goals for comparison against external expectations.&lt;/b&gt;  For example, checkout response time should be 30 seconds, and a maximum of 10 orders should be placed in a minute. The answers are based on market research, historical data, market trends, and so on. &lt;/li&gt;&lt;li&gt;&lt;b&gt;Identify the metrics.&lt;/b&gt;  Using your list of performance-related questions and answers, identify the metrics that provide information related to those questions and answers. &lt;/li&gt;&lt;li&gt;&lt;b&gt;Identify supporting metrics.&lt;/b&gt;  Using the same approach, you can identify lower-level metrics that focus on measuring the performance and identifying the bottlenecks in the system. When identifying low-level metrics, most teams find it valuable to determine a baseline for those metrics under single-user and/or normal load conditions. This helps you determine the acceptable load levels for your application. Baseline values help you analyze your application performance at varying load levels and serve as a starting point for trend analysis across builds or releases. &lt;/li&gt;&lt;li&gt;&lt;b&gt;Reevaluate the metrics to be collected regularly.&lt;/b&gt;  Goals, priorities, risks, and current issues are bound to change over the course of a project. With each of these changes, different metrics may provide more value than the ones that have previously been identified. &lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;Additionally, to evaluate the performance of your application in more detail and to identify potential bottlenecks, it is frequently useful to monitor metrics in the following categories:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Network-specific metrics.&lt;/b&gt;  This set of metrics provides information about the overall health and efficiency of your network, including routers, switches, and gateways.&lt;/li&gt;&lt;li&gt;&lt;b&gt;System-related metrics.&lt;/b&gt;  This set of metrics helps you identify the resource utilization on your server. The resources being utilized are processor, memory, disk I/O, and network I/O.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Platform-specific metrics.&lt;/b&gt;  Platform-specific metrics are related to software that is used to host your application, such as the Microsoft .NET Framework common language runtime (CLR) and ASP.NET-related metrics.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Application-specific metrics.&lt;/b&gt;  These include custom performance counters inserted in your application code to monitor application health and identify performance issues. You might use custom counters to determine the number of concurrent threads waiting to acquire a particular lock, or the number of requests queued to make an outbound call to a Web service.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Service-level metrics.&lt;/b&gt;  These metrics can help to measure overall application throughput and latency, or they might be tied to specific business scenarios.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Business metrics.&lt;/b&gt;  These metrics are indicators of business-related information, such as the number of orders placed in a given timeframe.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Step 6 - Design Specific Tests
&lt;/h3&gt;Using your scenarios, key metrics, and workload analysis, you can now design specific tests to be conducted. Each test will generally have a different purpose, collect different data, include different scenarios, and have different target load levels. The key is to design tests that will help the team collect the information it needs in order to understand, evaluate, or tune the application. &lt;br /&gt; &lt;br /&gt;Points to consider when designing tests include:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Do not change your test design because the design is difficult to implement in your tool. &lt;/li&gt;&lt;li&gt;If you cannot implement your test as designed, ensure that you record the details pertaining to the test that you do implement.&lt;/li&gt;&lt;li&gt;Ensure that the model contains all of the supplementary data needed to create the actual test.&lt;/li&gt;&lt;li&gt;Consider including invalid data in your performance tests. For example, include some users who mistype their password on the first attempt but get it correct on a second try. &lt;/li&gt;&lt;li&gt;First-time users usually spend significantly more time on each page or activity than experienced users.&lt;/li&gt;&lt;li&gt;The best possible test data is test data collected from a production database or log file.&lt;/li&gt;&lt;li&gt;Think about nonhuman system users and batch processes as well as end users. For example, there might be a batch process that runs to update the status of orders while users are performing activities on the site. In this situation, you would need to account for those processes because they might be consuming resources.&lt;/li&gt;&lt;li&gt;Do not get overly caught up in striving for perfection, and do not fall into the trap of oversimplification. In general, it is a good idea to start executing tests when you have a reasonable test designed and then enhance the design incrementally while collecting results.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Step 7 - Run Tests
&lt;/h3&gt;Poor load simulations can render all of the work in the previous activities useless. To understand the data collected from a test execution, the load simulation must reflect the test design. When the simulation does not reflect the test design, the results are prone to misinterpretation. Consider the following steps when preparing to simulate load:&lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Configure the test environment in such a way that it mirrors your production environment as closely as possible, noting and accounting for all differences between the two.&lt;/li&gt;&lt;li&gt;Ensure that performance counters relevant for identified metrics and resource utilization are being measured and are not interfering with the accuracy of the simulation.&lt;/li&gt;&lt;li&gt;Use appropriate load-generation tools to create a load with the characteristics specified in your test design.&lt;/li&gt;&lt;li&gt;Using the load-generation tool(s), execute tests by first building up to the target load specified in your test design, in order to validate the correctness of the simulation. Some things to consider during test execution include:&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;Begin load testing with a small number of users distributed against your user profile, and then incrementally increase the load. It is important to allow time for the system to stabilize between increases in load while evaluating the correctness of the simulation. &lt;/li&gt;&lt;li&gt;Consider continuing to increase the load and record the behavior until you reach the threshold for the resources identified in your performance objectives, even if that load is beyond the target load specified in the test design. Information about when the system crosses identified thresholds is just as important as the value of the metrics at the target load of the test. &lt;/li&gt;&lt;li&gt;Similarly, it is frequently valuable to continue to increase the number of users until you run up against the service-level limits beyond which you would be violating your SLAs for throughput, response time, and resource utilization.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;  Make sure that the client computers (agents) you use to generate load are not overly stressed. Resource utilization such as processor and memory must remain well below the utilization threshold values to ensure accurate test results.&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Step 8 - Analyze the Results
&lt;/h3&gt;You can analyze the test results to find performance bottlenecks between each test run or after all testing has been completed. Analyzing the results correctly requires training and experience with graphing correlated response time and system data. &lt;br /&gt; &lt;br /&gt;The following are the steps for analyzing the data:&lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Analyze the captured data and compare the results against the metric’s accepted level to determine whether the performance of the application being tested shows a trend toward or away from the performance objectives. &lt;/li&gt;&lt;li&gt;Analyze the measured metrics to diagnose potential bottlenecks. Based on the analysis, if required, capture additional metrics in subsequent test cycles. For example, suppose that during the first iteration of load tests, the process shows a marked increase in memory consumption, indicating a possible memory leak. In the subsequent iterations, additional memory counters related to generations can be captured to study the memory allocation pattern for the application.&lt;/li&gt;
&lt;/ol&gt; &lt;br /&gt;&lt;h3&gt;
Summary
&lt;/h3&gt;Load testing helps to identify the maximum operating capacity of the application and any bottlenecks that might be degrading performance. &lt;br /&gt; &lt;br /&gt;The basic methodology for performing load testing on a Web application is to identify the performance-critical key scenarios; identify the workload profile for distributing all the load among the key scenarios; identify metrics that you want to collect in order to verify them against your performance objectives; create test cases that will be used to simulate the load test; use tools to simulate the load according to the test cases and capture the metrics; and finally, analyze the metrics data captured during the tests.&lt;br /&gt;
&lt;/div&gt;</description><author>prashantbansode</author><pubDate>Thu, 23 Aug 2007 18:49:14 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Chapter 17 – Load-Testing Web Applications 20070823064914P</guid></item><item><title>UPDATED WIKI: Chapter 17 – Load-Testing Web Applications</title><link>http://www.codeplex.com/PerfTestingGuide/Wiki/View.aspx?title=Chapter 17 %25u2013 Load-Testing Web Applications&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h3&gt;
Chapter 17 – Load-Testing Web Applications
&lt;/h3&gt;- &lt;i&gt;&lt;a href="http://blogs.msdn.com/jmeier" class="externalLink"&gt;J.D. Meier&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Carlos Farre, &lt;a href="http://prashantbansode.blogspot.com/" class="externalLink"&gt;Prashant Bansode&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.perftestplus.com/scott_blog.php" class="externalLink"&gt;Scott Barber&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;, Dennis Rea&lt;/i&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
Objectives
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Understand the key concepts of load testing.&lt;/li&gt;&lt;li&gt;Learn how to load-test a Web application.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Overview
&lt;/h3&gt;This chapter explains how to load-test a Web application. Load testing helps to identify the maximum operating capacity of an application as well as any bottlenecks that might interfere with its operating at capacity. The basic approach to performing load testing on a Web application is:&lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Identify the performance-critical scenarios.&lt;/li&gt;&lt;li&gt;Identify the workload profile for distributing the entire load among the key scenarios.&lt;/li&gt;&lt;li&gt;Identify the metrics that you want to collect in order to verify them against your performance objectives.&lt;/li&gt;&lt;li&gt;Design tests to simulate the load.&lt;/li&gt;&lt;li&gt;Use tools to implement the load according to the designed tests, and capture the metrics.&lt;/li&gt;&lt;li&gt;Analyze the metric data captured during the tests. &lt;/li&gt;
&lt;/ol&gt; &lt;br /&gt;By using an iterative testing process, these steps should help you achieve your performance objectives.&lt;br /&gt; &lt;br /&gt;There are many reasons for load-testing a Web application. The most basic type of load testing is used to determine the Web application’s behavior under both normal and anticipated peak load conditions. As you begin load testing, it is recommended that you start with a small number of virtual users and then incrementally increase the load from normal to peak. You can then observe how your application performs during this gradually increasing load condition. Eventually, you will cross a threshold limit for your performance objectives. For example, you might continue to increase the load until the server processor utilization reaches 75 percent, or when end-user response times exceed 8 seconds. &lt;br /&gt; &lt;br /&gt;&lt;h3&gt;
How to Use This Chapter
&lt;/h3&gt;Use this chapter to understand the key concepts of load testing and the steps involved in load-testing Web applications. To get the most from this chapter:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Use the “Input” and “Output” sections to understand the key inputs for load testing a Web application and the key outcomes of doing so. &lt;/li&gt;&lt;li&gt;Use the “Approach for Load Testing” section to get** an overview of the approach for load testing a Web application, and as quick reference guide for you and your team.&lt;/li&gt;&lt;li&gt;Use the various steps sections to understand the details of each step involved in load-testing a Web application.&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Input
&lt;/h3&gt;The following are useful inputs for load-testing a Web application:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Performance-critical usage scenarios&lt;/li&gt;&lt;li&gt;Workload models&lt;/li&gt;&lt;li&gt;Performance acceptance criteria&lt;/li&gt;&lt;li&gt;Performance metrics associated with the acceptance criteria&lt;/li&gt;&lt;li&gt;Interview feedback from the designer or developer of the Web application&lt;/li&gt;&lt;li&gt;Interview feedback from end users of the application&lt;/li&gt;&lt;li&gt;Interview feedback from the operations personnel who will maintain and manage the application&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Output
&lt;/h3&gt;The main outcomes that load testing helps you to accomplish are:&lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Updated test plans and test designs for load and performance testing&lt;/li&gt;&lt;li&gt;Various performance measures such as throughput, response time, and resource utilization&lt;/li&gt;&lt;li&gt;Potential bottlenecks that need to be analyzed in the white-box testing phase&lt;/li&gt;&lt;li&gt;The behavior of the application at various load levels&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h3&gt;
Approach for Load Testing
&lt;/h3&gt;The following steps are involved in load-testing a Web application:&lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Step 1 - Identify performance acceptance criteria&lt;/li&gt;&lt;li&gt;Step 2 