5 Key Things You Need to Know About JMeter 3.0
The Apache JMeter team has just released JMeter 3.0, a major new release of the leading open source testing tool. It is loaded (no pun intended) with several new features and improvements.
JMeter’s First New Major Release in More than a Decade
This is the first major release from JMeter in over 12 years, as JMeter 2.0 was released in April 2004 . Rather than JMeter releasing version 2.14, it has jumped to 3.0. What does this mean?
A major release is not merely a revision of the previous version nor simply a series of bug fixes, but rather contains substantial changes such as several new features, a source code rewrite, core improvements, and changes related to compatibility UI changes. Long story short - it’s not just maintaining previous versions, but creating something quite different and new. So the release of JMeter 3.0 is big news.
(For those looking tor how to migrate to and install JMeter 3.0, see detailed instructions at the end of this post.)
Meet JMeter 3.0
Here are five of the most important things you need to know about JMeter 3.0.
1. New UX and UI
The first thing what you will notice when you launch the app is the new Apache logo and that JMeter’s logo was changed as well. You will also see some new icons and elements on the user interface. On the right side of the toolbar you can see a new element that shows the elapsed time of a current test and new icons for existing elements.
The icons in the test plan tree were also changed, now looking more polished and attractive in my opinion.
Here is the screenshot of the test plan tree with the various elements added.
In addition to these changes, JMeter 3.0 includes various UI/UX improvements such as:
about 40 UI bug fixes
an "Advanced" tab introduced in "HTTP Request"
Below is a view of the advanced tab in “HTTP Request” and in “HTTP Request Defaults”:
2. Scripting and Debugging Enhancements
Scripting and debugging JMX files with JMeter 3.0 becomes easier with these new features and enhancements:
Shortcuts to insert elements - this allows for faster scripting for professional JMeter users. Contributed by BlazeMeter, these shortcuts - Ctrl+0 , Ctrl+1 , Ctrl+2…Ctrl+9 - enable you to quickly add elements into the test plan. It binds the Ctrl+ # keys to certain elements in JMeter and with one key press, you get that element
New validation feature - in one click, you can now run a selection of Thread Groups with 1 user, no pause, and 1 iteration. This helps you to debug and build your scripts
New Search Feature in the View Results Tree - this allows you to search for text / regexp in Request/Responses/Headers/Cookies/ - it really helps to debug scripts with the dynamic values correlation
HTTPClient library - the migration to HTTPClient 4.5.2 improves the following fields of JMeter:
the most important change here is improved Cookie handling which helps to overcome several issues in previous JMeter versions
Server Name Indication (SNI) support
Better Keep-Alive and Stale connections handling (less NoHTTPResponseException)
Better support for compressed responses. This is actually a revolutionary change. While there might be some unexpected changes in behavior, it is much better and more modern than previous versions
Additionally, the library upgrade has a really nice impact on JMeter Plugins. Previously, there was a library conflict with Selenium WebDriver testing, while JMeter 3.0 resolves that conflict
Improved embedded resources download (background, images, etc.) - more resources are detected, there are faster parallel downloads
3. JSON Responses Handling
Today, most websites use the JSON format in their AJAX calls, so you can’t avoid using JSON components in your scripts, and we recently published a blog post on how to handle JSON responses in JMeter using third-party JMeter Plugins.
JMeter 3.0 brings the solution for JSON handling into core functionality, introducing the JSONPath Post Processor component. It works quite similarly to the one from the JMeter Plugins, using the same JSONPath syntax used for the expressions. Be sure to read more in our post, Advanced Usage of the JSON Path Extractor in JMeter.
4. Improvements in Reporting
As you know, a major issue in the JMeter 2.x versions was reporting load test results. You had to always generate raw data in CSV or XML formats and upload them to analyze the results. While many other load testing tools offered nice looking HTML reports with charts, these were missing in JMeter. For example Tsung and Gatling has a built-in HTML report generator, but JMeter didn’t support HTML reporting by default, that is until now.
For the 3.0 version, JMeter offers various reporting enhancements such as:
Generating dynamic Graphs in HTML pages (APDEX, Summary report, and Graphs)
Summariser displays a more readable duration
BackendListener supports regular expression for sampler list
HTML Reporting Dashboard
Let’s examine the generating report dashboard, which can be done at the end of testing or anytime from the results file. The Report Dashboard includes an APDEX (Application Performance Index) table, a request summary graph, a statistics table, an error table and various zoomable charts. See below.
If you have ever used the BackendListener, defining samplers was a bit tricky and I have to say that I personally was waiting for current change released in JMeter 3.0 for a long time. While in the JMeter 2.13 samplerList you had to define all samplers individually, now it’s possible to use the regexp pattern to include samplers in the list. I also have to say that the Summarizer's readable duration will be helpful while running JMeter in non-GUI mode as well.
More of the Changes
JMeter 3.0 is really one of the biggest releases, which comes to change load/performance testing drastically. Hopefully, after reading this article you will be able to use all the new features, and decrease the time and budget neeeded for load testing.
As said before, the new version is not just a bugfix release, but rather touches almost all aspects of load testing. For example, the Groovy scripting language library for JSR223 components is now bundled into JMeter package, which is great convenience for heavy JMeter users.
If you are looking for further information about the features and upgrades in JMeter 3.0, you can view the full changes log here.
5. Migrating to JMeter 3.0
Before starting the migration to JMeter 3.0, we recommend checking your existing Java version, as the new JMeter version can be run only with Java 7 or above.
There are two easy ways to check your Java version:
Verifying online - To verify online, open http://www.java.com/en/download/installed.jsp and click the “Verify Java Version” red button. If Java is enabled in your browser settings, you will see a dialog window which asks permission to run the Java applet. Press the “Run” button and you will see the version of your Java installed in your system.
Open your “console/command prompt” and run this command: “java -version”. From the first line of the command output, you can see the Java version and it will look something like Java version "1.7.0_95", where the second number shows the Java version. So if it’s equal or above 7, you can proceed with the next steps.
In case your current version installed is Java 6 or below, you should open the Java official page and follow the installation instructions.
Hopefully, now that you have the compatible Java version, move forward and create a dump of the existing JMeter version. We do not recommend extracting and replacing the new JMeter lib files into the existing JMeter folder because it will cause incompatibility issues. It’s easier and better to keep them separated. Once you have a backup of the existing JMeter, proceed with downloading the new JMeter version.
To download JMeter 3.0, open http://jmeter.apache.org/download_jmeter.cgi and choose apache-jmeter-3.0.zip or apache-jmeter-3.0.tgz archives, which include the compiled JMeter binaries. Once it’s downloaded, extract it to separate folder and execute.
There are still a few more steps left if you have distributed JMeter instances. We recommend you to test your JMX files and all external plugins before deploying JMeter 3.0 into remote servers because some of the plugins might not be compatible with the new version.
Finally, the last step is to enjoy JMeter 3.0!
Want to Learn More About JMeter?
If you are new to JMeter, and you’d like to learn more, please sign up for our free online JMeter training course.
For more experienced JMeter users, you'll want to view the on-demand webcast, How to Create Advanced Load Testing Scenarios with JMeter.
In addition, view our on-demand webcast that includes both a presentation on the changes in JMeter 3.0, as well as a series of questions about JMeter in general from a major JMeter contributor. Sign up now.