JMeter 5.0 – What’s in the Latest Release?

Seven months after releasing JMeter 4.0, the Apache Software Foundation has announced the public release of JMeter 5.0.  We have been trialling version 5.0 internally to ensure it runs smoothly on our platform before making it available to our customers. We anticipate there will little impact to any customer currently running tests on JMeter 4.0. We maintain multiple versions of all supported tools so if you do have issues, please contact support and we can rollback the version specifically for your account. We are excited to answer all of your questions related to the recent release and what new features are available for you to check out.  Read on below to see our assessment of the latest release.

What versions of Java are supported with JMeter 5.0?

JMeter 5.0 officially requires Java 8 or 9, although later versions may be unofficially compatible. From our internal testing, JMeter will run on Java 11, albeit with some expected warnings such as:

  • All illegal access operations will be denied in a future release
  • Nashorn engine is planned to be removed from a future JDK release

Our guess is that the next major release of JMeter (6.0) will fully support Java 11, which has been marked as the next LTS (Long-Term Support) version after the widely used version 8. For now, we will support Java 8 for consistency across the other tools we support.

What are some new features in JMeter 5.0?

HTTP state reset upon new thread group iteration

This version of JMeter now resets the SSL state as well as the connections made at the beginning of each iteration. This is significant because the increase in traffic to recreate a connection at the start of the iteration of a thread group will also increase response times slightly. If maintaining consistency between versions is an issue, you can always re-baseline your scripts with JMeter 5 or change your user.properties file to include this property:

httpclient.reset_state_on_thread_group_iteration=false, which will revert back to the previous implementation in JMeter 4. You can then upload this properties file along with your script to Flood. Note that we recommend that you change your user.properties file instead of your jmeter.properties file for use with Flood.

Sub-results now included by default in CSV results files

The default format for CSV results files in JMeter has been modified to include data for sub-results. Unfortunately, effectively increasing the number of unique labels per flood does make it difficult to graph everything in real-time, and at Flood we recommend that you stick to 300 unique labels or less in order to be able to see the big picture. For this reason, we will be disabling this new feature by default. However, you’ll be able to override this by modifying user.properties and setting the relevant property to true:

jmeter.save.saveservice.subresults=true

The HTTP Request Sampler bug fix and improvements

  1. Bug fix of Parameters tab: There was an issue identified several JMeter versions ago that prevented parameters from being sent with PUT requests. The known workaround was to use the Body Data tab to add parameters. Luckily, this was fixed in JMeter 5.
  2. Multipart support for PUT and DELETE methods:  While previously only POST requests could send multipart/form-data, the same functionality has now been added to PUT and DELETE.
  3. Content-Type, which previously defaulted to text/plain, can now be defined for POST requests. This allows us to, for example, upload a file in JSON and set its content-type accordingly.

New XPath2 extractor

There is a new XPath2 extractor post-processor that now adds XPath 2.0 support to JMeter. However, there is still no support for XPath 3.0.

What are some UI improvements in JMeter 5.0?

View Results Tree

Everyone’s favorite listener for debugging, View Results Tree, also got a UI improvement this release. The Request/Response header and body now have their own sub-tabs. This is functionally identical to previous versions, but the change does make it a little bit easier to find when wading through a lot of requests.

Flow Control

JMeter 5 has added more UI controls for script looping behavior. Both the Flow Control Action (previously dubbed Test Action) sampler and the Results Status Action Handler post-processor have received new options to break the current loop as well as go to the next iteration of the current loop. The new options are highlighted in orange below:

In addition, there is now a function to get the index of a While Controller, where previously we had to create our own variables to track the index. ${__jm__WhileControllerName__idx} will now save us the trouble.

These changes in flow control could previously be done using code, but they reinforce the trend in the JMeter community towards greater control through the UI.

Recorder

The Recorder has been revamped and now comes with a shiny new dialog box that floats on top of the browser window while recording. The new Recorder will be familiar with anyone who’s used some popular commercial tools.

Selecting Transaction name allows transaction names to be defined during the recording, and selecting Prefix will simply add a prefix to all requests.

Restart JMeter

JMeter can now be restarted via the UI by clicking File > Restart. Simple but welcome!

Search Tree

The Search Tree dialog now has a few more options for finding and modifying elements in scripts: Next, Previous, Replace, and Replace & Find.

Conclusion

Overall, JMeter 5.0 is yet another exciting major release of JMeter that resolves a number of long standing feature requests and issues in the JMeter project. You can see the original release notes from Apache here.

We are excited to offer JMeter 5.0, we are currently testing this in our environment before rolling it out as our default supported version.  If you are looking to run your JMeter 5.0 tests in the cloud with distributed, massive scale, give Flood a try today by unlocking your free trial here: flood.io/sign-up .


Ready to get started?

Sign up or request a demo today.