After listening to an excellent presentation on Performance Testing with Open Source Tools put on by Goranka Bjedov of Google for the Google London Test Automation Conference (available on Google Video), I decided to take a peek at jMeter. I’d used it briefly in the past, but didn’t have a huge use for it at the time.

After downloading the binaries from the Apache Jakarta Project website (jMeter is completely free) and unzipping the contents, it took me about 30 minutes to read through the tutorial and get a basic test up and running. One of the greatest perks is that it doesn’t have an installation (its a standalone java server/application) so if you don’t have admin rights on your test server, jMeter will still be able to run tests.

I immediately recognized that jMeter is much more than just a performance testing tool. It could be easily adapted for many applications in web testing such as regression testing of large numbers of tests, automated testing of core functionality across large numbers of pages/sites, stress testing and, more generically, as a tool to generate large numbers of semi-random tests to see if you can discover any bugs by testing different usage paths.

There are many excellent features in jMeter:

  1. No scripting is required (its a Java app with a GUI)
  2. It can output very detailed logs of all test data (HTTP responses, response time, header info, deviations of response times, etc)
  3. At its core it has an excellent threading engine to test how your system can handle the same test being executed ‘X’ number of times simultaneously
  4. It has really nice graphs that you can give to customers and users to illustrate the test output

Here are a couple screenshots of what you get out of jMeter as far as output goes. The first is a screenshot of the “View Results in Table” listener object. It can show as much or as little info as you want, easily configured by checkboxes on the Configure page of the object.

Click to View full size:
jMeter table output

Here is what the graph output looks like. Each dot on the graph represents an HTTP request I made for a web page. You can easily see response times, deviation, max response, min response, etc.
jMeter graph output

If you are responsible for testing Web apps, AJAX applications, FTP, XML apps, database applications, etc, you should look into jMeter. It works great out of the box and has the detailed output that is needed to be able to immediately identify problems and share results with the other members of your software Quality Assurance and Engineering teams.