<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Why Load Testing Ajax is Hard</title>
	<atom:link href="http://ajaxian.com/archives/why-load-testing-ajax-is-hard/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaxian.com/archives/why-load-testing-ajax-is-hard</link>
	<description>Cleaning up the web with Ajax</description>
	<lastBuildDate>Thu, 09 Feb 2012 06:55:33 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
	<item>
		<title>By: plightbo</title>
		<link>http://ajaxian.com/archives/why-load-testing-ajax-is-hard/comment-page-1#comment-272260</link>
		<dc:creator>plightbo</dc:creator>
		<pubDate>Mon, 23 Mar 2009 14:34:16 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5537#comment-272260</guid>
		<description>motomlins - I absolutely agree that change is part of the problem. It&#039;s also getting tougher for non-engineers (those who didn&#039;t _write_ Ajax apps) to understand how to test these Ajax apps. There&#039;s definitely a growing gap in education.

But I disagree that traditional load testing support for Ajax has been good. That&#039;s not because they are bad products. I think it&#039;s just because they are the _wrong_ products for this problem.

At the end of the day, LoadRunner can never provide great Ajax support because it doesn&#039;t run a real browser in real time. Today&#039;s Ajax apps are just too complex to get in to the game of simulating the protocol-level traffic. Sure, it can be done with some level of work, but I just don&#039;t believe it&#039;s worth it.</description>
		<content:encoded><![CDATA[<p>motomlins &#8211; I absolutely agree that change is part of the problem. It&#8217;s also getting tougher for non-engineers (those who didn&#8217;t _write_ Ajax apps) to understand how to test these Ajax apps. There&#8217;s definitely a growing gap in education.</p>
<p>But I disagree that traditional load testing support for Ajax has been good. That&#8217;s not because they are bad products. I think it&#8217;s just because they are the _wrong_ products for this problem.</p>
<p>At the end of the day, LoadRunner can never provide great Ajax support because it doesn&#8217;t run a real browser in real time. Today&#8217;s Ajax apps are just too complex to get in to the game of simulating the protocol-level traffic. Sure, it can be done with some level of work, but I just don&#8217;t believe it&#8217;s worth it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mtomlins</title>
		<link>http://ajaxian.com/archives/why-load-testing-ajax-is-hard/comment-page-1#comment-271988</link>
		<dc:creator>mtomlins</dc:creator>
		<pubDate>Thu, 12 Mar 2009 22:04:16 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5537#comment-271988</guid>
		<description>Great post topic - very relevant!  In my observation it may be more appropriate to state that performance testing Ajax applications is DIFFERENT - which means some people think it is hard.  Instead, the equation could be stated as:

                       AJAX + LoadTesting = Change

Rather than testing being hard, it is CHANGE that is hard.  This is especially obvious with individuals who have become comfortable with their traditional testing tools.   I was one of these engineers who had been testing for so long in 2-tier and 3-tier Web 1.0 architectures.  When I first started seeing new client architectures, web services, AJAX and n-tier systems - it was definitely a new challenge, and it meant that I needed to CHANGE.  But this is exciting change - because with change comes learning and growth.

I do disagree on the point that &quot;...even the best traditional load testing tools fall down.&quot; because is simply not true.  It&#039;s not accurate to suggest at the existing testing tools are falling down because these tools have virtual user or driver technologies for Web 1.0 architectures.  We do have those older solutions, of course - but we also have new solutions.  For instance, LoadRunner has had support for AJAX testing for nearly 2 years and that&#039;s with a new driver and new scripting capabilities that seriously innovate the proces.  The &quot;traditional&quot; Web 1.0 solutions in our tool are maintained because it is still useful solution for older Web architectures.  Even the traditional testing tools have new innovations available for customers who are ready for change.</description>
		<content:encoded><![CDATA[<p>Great post topic &#8211; very relevant!  In my observation it may be more appropriate to state that performance testing Ajax applications is DIFFERENT &#8211; which means some people think it is hard.  Instead, the equation could be stated as:</p>
<p>                       AJAX + LoadTesting = Change</p>
<p>Rather than testing being hard, it is CHANGE that is hard.  This is especially obvious with individuals who have become comfortable with their traditional testing tools.   I was one of these engineers who had been testing for so long in 2-tier and 3-tier Web 1.0 architectures.  When I first started seeing new client architectures, web services, AJAX and n-tier systems &#8211; it was definitely a new challenge, and it meant that I needed to CHANGE.  But this is exciting change &#8211; because with change comes learning and growth.</p>
<p>I do disagree on the point that &#8220;&#8230;even the best traditional load testing tools fall down.&#8221; because is simply not true.  It&#8217;s not accurate to suggest at the existing testing tools are falling down because these tools have virtual user or driver technologies for Web 1.0 architectures.  We do have those older solutions, of course &#8211; but we also have new solutions.  For instance, LoadRunner has had support for AJAX testing for nearly 2 years and that&#8217;s with a new driver and new scripting capabilities that seriously innovate the proces.  The &#8220;traditional&#8221; Web 1.0 solutions in our tool are maintained because it is still useful solution for older Web architectures.  Even the traditional testing tools have new innovations available for customers who are ready for change.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: NickTulett</title>
		<link>http://ajaxian.com/archives/why-load-testing-ajax-is-hard/comment-page-1#comment-271348</link>
		<dc:creator>NickTulett</dc:creator>
		<pubDate>Fri, 13 Feb 2009 10:26:50 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5537#comment-271348</guid>
		<description>When I do performance testing, I&#039;m not so much interested in &quot;realistic&quot; loads or timings as in finding out where the bottlenecks are. Does this approach help to do that? For instance, am I seeing a 10 seconds delay from logging in because nothing was cached from the last session, because there are 10,000 elements in the DOM, because the web server is still running in debug - and so on. 

Rather than run an elaborate load test simulation to see if a web app is performing badly, then pick through the code to find out why, I&#039;d rather assume it&#039;s going to be bad (because it always is) and go straight to reading the code...</description>
		<content:encoded><![CDATA[<p>When I do performance testing, I&#8217;m not so much interested in &#8220;realistic&#8221; loads or timings as in finding out where the bottlenecks are. Does this approach help to do that? For instance, am I seeing a 10 seconds delay from logging in because nothing was cached from the last session, because there are 10,000 elements in the DOM, because the web server is still running in debug &#8211; and so on. </p>
<p>Rather than run an elaborate load test simulation to see if a web app is performing badly, then pick through the code to find out why, I&#8217;d rather assume it&#8217;s going to be bad (because it always is) and go straight to reading the code&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: num</title>
		<link>http://ajaxian.com/archives/why-load-testing-ajax-is-hard/comment-page-1#comment-270882</link>
		<dc:creator>num</dc:creator>
		<pubDate>Thu, 29 Jan 2009 21:42:03 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5537#comment-270882</guid>
		<description>I agree that my post is by no means a solution to easily implement and is really a kick start to help hacking a solution. I also fully agree that getting an expert is the best for the majority of companies in need from a cost-benefit standpoint considering how niche this type of testing is. I&#039;ve had great luck contracting out to certain companies to do full on non-serial ajax load testing for a great price. I really see my approach as more a test-suite that should always be part of a project prior to a full &quot;good&quot; test possibly outsourced. I treat it as something almost as important as building unit tests along with development. It&#039;s important to have a good idea how your application is going to handle so that you don&#039;t waste time/money on a good test; it&#039;s always important to have a control in your experiment. Even without a good test, just having a simple idea of what you can expect out of your application to aid in building service standards sometimes will suffice - something to use as the baseline.

I&#039;d be interested to see what self-service products you have seen in this realm...</description>
		<content:encoded><![CDATA[<p>I agree that my post is by no means a solution to easily implement and is really a kick start to help hacking a solution. I also fully agree that getting an expert is the best for the majority of companies in need from a cost-benefit standpoint considering how niche this type of testing is. I&#8217;ve had great luck contracting out to certain companies to do full on non-serial ajax load testing for a great price. I really see my approach as more a test-suite that should always be part of a project prior to a full &#8220;good&#8221; test possibly outsourced. I treat it as something almost as important as building unit tests along with development. It&#8217;s important to have a good idea how your application is going to handle so that you don&#8217;t waste time/money on a good test; it&#8217;s always important to have a control in your experiment. Even without a good test, just having a simple idea of what you can expect out of your application to aid in building service standards sometimes will suffice &#8211; something to use as the baseline.</p>
<p>I&#8217;d be interested to see what self-service products you have seen in this realm&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: loadtester</title>
		<link>http://ajaxian.com/archives/why-load-testing-ajax-is-hard/comment-page-1#comment-270475</link>
		<dc:creator>loadtester</dc:creator>
		<pubDate>Thu, 15 Jan 2009 07:50:36 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5537#comment-270475</guid>
		<description>I&#039;ve done lots of load testing for a variety of companies and I will say that one of the biggest factors that determines a successful test is the skill of the tester(s). 

Countless times I have seen projects where the testing team used a variety of self-service tools and either had problems getting the test to execute at all or executed the test incorrectly (problems setting up dynamic data sets, etc.). 

For this reason, I think testing is best left to seasoned industry experts that know how to design, build and execute a successful test. 

There are lots of self-service tools out there now but they are less expensive for a reason. They don&#039;t come with the expertise and knowledge of how to build and execute a good test.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve done lots of load testing for a variety of companies and I will say that one of the biggest factors that determines a successful test is the skill of the tester(s). </p>
<p>Countless times I have seen projects where the testing team used a variety of self-service tools and either had problems getting the test to execute at all or executed the test incorrectly (problems setting up dynamic data sets, etc.). </p>
<p>For this reason, I think testing is best left to seasoned industry experts that know how to design, build and execute a successful test. </p>
<p>There are lots of self-service tools out there now but they are less expensive for a reason. They don&#8217;t come with the expertise and knowledge of how to build and execute a good test.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: plightbo</title>
		<link>http://ajaxian.com/archives/why-load-testing-ajax-is-hard/comment-page-1#comment-270302</link>
		<dc:creator>plightbo</dc:creator>
		<pubDate>Thu, 08 Jan 2009 22:51:03 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5537#comment-270302</guid>
		<description>Num,
Thanks for leaving a comment. I agree that testing AJAX sites with traditional load testing tools such as JMeter, HTTPPERF, Apache ab, LoadRunner, etc is certainly possible. 

However, I disagree that it&#039;s &quot;easy&quot; for most people. Based on your blog post, you have very deep technical knowledge, going so far as to patch a C library to achieve your goals. That&#039;s fantastic that you have those skills, but I&#039;m not sure the average developers wants to dedicate that level of effort for someone as mundane as testing :)

While it certainly is possible to skip the browser, doing so introduces additional complexity that could have been avoided if a real browser was used in the first place. What I&#039;ve found is that people who are responsible for performance testing (web developers, QA engineers, etc) often have a very hard time simulating browser session traffic, especially when that traffic has complex state embedded in the browser. This article outlines those cases, which a tool like HTTPPERF would still need complex scripting to achieve.

It becomes especially difficult, as I show in the Google Suggest scenario, when there is a need to provide random/parameterized data in to each simulated virtual user. If you aren&#039;t running a browser (or at least a browser emulator, such as HtmlUnit), then your load test scripts will need to duplicate much of the same AJAX logic that effects state.

For those that don&#039;t have the system resources necessary to run real browsers and aren&#039;t interested in my service, HtmlUnit (http://htmlunit.sourceforge.net/) is a decent alternative. It doesn&#039;t consume as many resources, so it can be run in a larger quantity on a single machine. However, it also isn&#039;t a perfect emulator and often chokes on complex JavaScript such as Dojo and jQuery. The team is always working to improve this though, so check with them for the latest status.

Thanks again for checking out the article!

Patrick</description>
		<content:encoded><![CDATA[<p>Num,<br />
Thanks for leaving a comment. I agree that testing AJAX sites with traditional load testing tools such as JMeter, HTTPPERF, Apache ab, LoadRunner, etc is certainly possible. </p>
<p>However, I disagree that it&#8217;s &#8220;easy&#8221; for most people. Based on your blog post, you have very deep technical knowledge, going so far as to patch a C library to achieve your goals. That&#8217;s fantastic that you have those skills, but I&#8217;m not sure the average developers wants to dedicate that level of effort for someone as mundane as testing :)</p>
<p>While it certainly is possible to skip the browser, doing so introduces additional complexity that could have been avoided if a real browser was used in the first place. What I&#8217;ve found is that people who are responsible for performance testing (web developers, QA engineers, etc) often have a very hard time simulating browser session traffic, especially when that traffic has complex state embedded in the browser. This article outlines those cases, which a tool like HTTPPERF would still need complex scripting to achieve.</p>
<p>It becomes especially difficult, as I show in the Google Suggest scenario, when there is a need to provide random/parameterized data in to each simulated virtual user. If you aren&#8217;t running a browser (or at least a browser emulator, such as HtmlUnit), then your load test scripts will need to duplicate much of the same AJAX logic that effects state.</p>
<p>For those that don&#8217;t have the system resources necessary to run real browsers and aren&#8217;t interested in my service, HtmlUnit (<a href="http://htmlunit.sourceforge.net/" rel="nofollow">http://htmlunit.sourceforge.net/</a>) is a decent alternative. It doesn&#8217;t consume as many resources, so it can be run in a larger quantity on a single machine. However, it also isn&#8217;t a perfect emulator and often chokes on complex JavaScript such as Dojo and jQuery. The team is always working to improve this though, so check with them for the latest status.</p>
<p>Thanks again for checking out the article!</p>
<p>Patrick</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: num</title>
		<link>http://ajaxian.com/archives/why-load-testing-ajax-is-hard/comment-page-1#comment-270183</link>
		<dc:creator>num</dc:creator>
		<pubDate>Wed, 31 Dec 2008 19:07:37 +0000</pubDate>
		<guid isPermaLink="false">http://ajaxian.com/?p=5537#comment-270183</guid>
		<description>I&#039;ve had great success using a modified version of the powerful HTTPERF command line program in loadtesting several AJAX applications I&#039;ve built. I made a simple patch to the HTTPERF program to allow for the appropriate AJAX header per-request as well as more custom headers:
&lt;a href=&quot;http://www.overset.com/2008/03/27/load-test-ajax-applications-with-httperf/&quot; rel=&quot;nofollow&quot;&gt;http://www.overset.com/2008/03/27/load-test-ajax-applications-with-httperf/&lt;/a&gt;

My writeup has some serious work to be done - but it show the core of how easy it is to write a test case script in order to load test your AJAX application. Test case script creation is as simple as firebug cut-and-paste of url requests, headers, and post data into a sequential flat file. That and the scripts are so straight forward and simple to read it&#039;s easy to build a template script and simply edit the post arguments to build another test case.

When it comes to if the browser matters or not, it doesn&#039;t. You can script a HTTP test case &quot;session&quot; to download assets on demand. You can even put randomized delays per request. You can simulate a completely non-caching browser or a browser that might cache certain assets at first load. The browser matters when unit testing, regression testing, etc. but not load testing - except just to aid in building test case scripts.

In the case to simulate a non-serial hightraffic environment, it couldn&#039;t be easier to HTTPERF. I usually enlist several simple unix workstations on several networks to run my tests concurrently. This even works great in a unix/xen &quot;cloud&quot; environment. The last quick load test I simply instantiated several Amazon EC2 instances, loaded HTTPERF and all the test scenarios and let her rip. This is of course biased to a single connection - but took all of 10min to setup 3 virtual machines to begin load testing my application. Much more time was spent building the test cases of course.

I&#039;ll polish my horrible blog post a little more to help make this process easier.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve had great success using a modified version of the powerful HTTPERF command line program in loadtesting several AJAX applications I&#8217;ve built. I made a simple patch to the HTTPERF program to allow for the appropriate AJAX header per-request as well as more custom headers:<br />
<a href="http://www.overset.com/2008/03/27/load-test-ajax-applications-with-httperf/" rel="nofollow">http://www.overset.com/2008/03/27/load-test-ajax-applications-with-httperf/</a></p>
<p>My writeup has some serious work to be done &#8211; but it show the core of how easy it is to write a test case script in order to load test your AJAX application. Test case script creation is as simple as firebug cut-and-paste of url requests, headers, and post data into a sequential flat file. That and the scripts are so straight forward and simple to read it&#8217;s easy to build a template script and simply edit the post arguments to build another test case.</p>
<p>When it comes to if the browser matters or not, it doesn&#8217;t. You can script a HTTP test case &#8220;session&#8221; to download assets on demand. You can even put randomized delays per request. You can simulate a completely non-caching browser or a browser that might cache certain assets at first load. The browser matters when unit testing, regression testing, etc. but not load testing &#8211; except just to aid in building test case scripts.</p>
<p>In the case to simulate a non-serial hightraffic environment, it couldn&#8217;t be easier to HTTPERF. I usually enlist several simple unix workstations on several networks to run my tests concurrently. This even works great in a unix/xen &#8220;cloud&#8221; environment. The last quick load test I simply instantiated several Amazon EC2 instances, loaded HTTPERF and all the test scenarios and let her rip. This is of course biased to a single connection &#8211; but took all of 10min to setup 3 virtual machines to begin load testing my application. Much more time was spent building the test cases of course.</p>
<p>I&#8217;ll polish my horrible blog post a little more to help make this process easier.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

