6

I am trying to devise a strategy for load/stress testing our web application. JUnit/JCrawler and to a lesser degree Selenium Grid can be used for our HTTP request load/stress testing.

I have not been able to find any software that can handle the nature of AJAX calls. The web application is a records management system, the AJAX calls come into play when performing any CRUD operation on a page. We need to test load/stress for a number of users saving records, deleting records, etc.

I've looked at JMeter, Gatling, JCrawler, The Grinder, FWPTT, and Selenium Grid, and none of them are capable of performing AJAX functions. Is there a tool that is capable of load/stress testing AJAX calls? Open-source is preferable, although commercial solutions are an option.

  • 4
    Can you elaborate on your claim that JMeter and Grinder do not perform AJAX functions? An AJAX request boils down to an HTTP GET or POST request. – user246 Jan 31 '13 at 21:11
  • 1
    As user246 stated, they are just HTTP requests initiated by JavaScript. You can use a tool like fiddler, httpwatch or firebug's network tab to view the requests that get sent and then re-create those requests in jmeter or whatever tool you want to use. – Sam Woods Jan 31 '13 at 22:03
  • @user246 I have not used any of the tools I mentioned hands-on, I have just been researching them and most everything I've read stated the asynchronous nature of AJAX was a terrible fit. I will download the tools and look into them more. thank you – squeemish Feb 1 '13 at 12:51
  • Like Sam and user246 said, the best strategy to use for this is to monitor traffic and capture those requests to create an AJAX request profile. Then take that profile and use another tool to create the load based on it. – maznika Feb 1 '13 at 18:32
2

I agree with sqeemih: The challenge of load testing Ajax calls lies, first in the sending of the requests, and also, and probably mainly, in two other areas :

1) Management of asynchronous requests between the browser and the web server. Ajax calls have two goals: Performing some DOM refresh upon browser decision for a smooth page rendering; and also more and more, giving the server the capacity to update — upon its decision — the content of the DOM on the browser side.

In this technical area, you'll find the ""push"" techniques and also the (long) ""pooling"" techniques for instance.

2) Capacity to measure the time needed for a message from the server to reach the client, and the average time slot needed to reach each client. One functional goal of Ajax is to ensure that at a given instant everyone effectively sees the same information (for example, price, bid, or else).

These two items raise the need in stress testing tools of Ajax-dedicated functions. Just to say that there is a commercial tool that provides real performance testing solution for Ajax (and other HTTP techniques). The tool is NeoLoad by Neotys (the company I'm working for).

Thanks to a graphical interface that can modelize asynchronous calls with forks and loops, NeoLoad has the capacity to stress test advanced Ajax architectures. You can download our stress testing tool for free and try it by yourself.

0

Take a look at LoadBooster(https://www.loadbooster.com). It utilizes headless scriptable browser PhantomJS/CasperJs to test web sites. Phantomjs will parse and render every page, execute the client-side script. The headless browser approach is easier to write test scenarios to support complex AJAX heavy Web 2.0 app,browser navigation, mouse click and keystrokes into the browser or wait until an element exists in DOM. LoadBooster support selenium HTML script too.

Disclaimer: I work for LoadBooster.

0

It depends on how complicated the application is. It is not that most tools cannot record and play AJAX request. The challenge is in getting the correlation right. That means that paramaters send in one request are based om data in a response before or even a JavaScript excecution. Variable numers of parameters, variable parameter names or even variable numbers of request can make this more complicated.

In a tool like JMeter you have to do most correlation manualy, what can cost you a lot of work. A tool like NeoLoad (free for up to 50 virtual users) there is some more support for automatic correlation.

MicroFocus Silk Performer with the Browser driven protocol (only IE) and HPE Loadrunner with the TruClient protocol (both IE and Firefox) are the two tools i know of that are the easiest to make scripts to test AJAX using web-applications. Where most other tools only simulate de network traffic, these two simulate actual browser interactions. Because of the way they work you will nead a lot more loadgenerator capicity and these tools are not cheap. But the extra time it takes to script in other tools can make it cheaper than using that tools.

0

Neolaod can be used to create ajax calls , you can even run your own js library as well as .jar package and cmd terminal in between transactions and pass the extracted value with the payload in subsequent request.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.