The JMeter group just released v1.9.1 of their product and this is a huge improvement over the last 1.8.x release. For the uninitiated, JMeter is a 100% pure Java desktop application written in Swing designed to test your application. I think of it as a poor-man’s regression and load testing tool. You can use JMeter to test web applications written in Java using JSP/Servlets as well as other applications such as Perl scripts, Java Objects, Data Bases and Queries, FTP Servers, LDAP server and more.
You use JMeter by creating a test plan which describes a series of steps JMeter will execute when run. A complete test plan will consist of one or more Thread Groups, logic controllers, sample generating controllers, listeners, timers, assertions, and configuration elements.
JMeter’s full multithreading framework allows concurrent sampling by many threads and simultaneous sampling of different functions by separate thread groups.
I’ll be honest and tell you that I prefer JMeter over a lot of the commercial testing tool, from my developer perspective. I love JMeter as you can create a test plan by hand or use the proxy option to record a test by just navigating through your application. Once the test plan is created or recorded, you can test your application from front to back. I love and use JUnit, and JMeter does not replace JUnit. In fact, JMeter and JUnit complement each other very well. I’ve tried to make everyone in my team use JMeter as the developer’s regression and load test tool. JMeter allows you to either POST or GET to an http source and then apply assertion to the response based on content or time. If it takes too long (and you define the time), the test fails. If the response does not contain a certain keyword, the test fails. That’s the regression part of JMeter – Once the tests are created you can apply load to your application by creating many threads and/or looping forever.
JMeter supports cookies, http POST/GET’s, SSL, URL rewriting and email among many other features. JMeter also runs in a server-mode where you can run many instances of JMeter on remote servers and use a single machine as the JMeter GUI client. This allows for true performance measurement without network bottlenecks of having all the traffic going through the same network interface.
JMeter also offers graphical analysis of performance that plots the response times on a graph. The output of the test results can be saved out as CSV or XML file that can be parsed later for analysis, if needed.
Ok – If you’re still reading this, I hope I’ve convinced you that you need JMeter and must use it. Kudos to the JMeter team on putting out another great release. If you want to download JMeter, point your browser to