Apache JMeter 3.2 released:
4 months after the 3.1 release, Apache JMeter 3.2 has been released with another set of very nice features.
We’ll show you in this blog the most important ones.
Apache JMeter 3.2 in few numbers:
Although there is some confusion in the community on JMeter version numbering, version 3.2 is not a minor version.
With 55 enhancements and 41 bug fixes, it is a major version that deserves your attention, and of course upgrading is highly advised.
We’ll see in this blog what features have been brought by Apache JMeter team and the 20 contributors who helped creating this awesome new version.
UI and productivity Improvements:
The UI of JMeter which is often criticized for its complexity has been simplified in many fields. Let’s see some of those improvements.
Simplified HTTP Request UI:
Basic Tab for most used properties:
Advanced Tab for expert properties:
HTTP(s) Test script Recorder:
UI has been split into 2 tabs.
First one for most common properties and particularly the « Prefix » which allows you to name each transaction during recording.
Second one which allows you to exclude recorded requests based on different conditions:
Search / Replace feature
A new feature that’s very useful for correlation has been introduced which allows replacing some data by variables for example.
It is important to know that « ReplaceAll » is a first shot, and for now does not do replacement on all elements, it does it on most frequent use cases when correlating:
- In HeaderManager element: Replacement in header values
- Http Request element: Replacement in Arguments, Path and Host
Also note that search feature give you now the number of matches for the search.
This feature will be enhanced in future versions of JMeter.
Apache JMeter 3.2 is also a major version as migration to Java 8 has been done with a tons of code improvements taking advantage of Java 8 great features (Lambdas, Streams, …).
Thanks to the contribution of Woonsan Ko, logging has been migrated from LogKit to SLF4J and Apache Log4j2 bringing standard and easier configuration of logging as it now relies on 2 major logging frameworks. This will also improve logging performances as it relies on one of the fastest logging frameworks (Apache Log4j2 benchmark). This migration allowed the drop of 4 outdated libraries.
Now configuration of Logging is done in log4j2.xml file located in jmeter/bin folder.
In another field, the old commons-httpclient library has been dropped as Preemptive Basic Authentication has been implemented for HTTPClient4. This both simplifies configuration for JMeter users and eases maintainability of the project by reducing code base and dropping another deprecated library.
Report / Dashboard improvements:
Live Reporting in Influx DB:
This improves existing feature in 2 ways:
- Implementation uses Asynchronous HTTP Client API which makes it more efficient
- Implementation uses Influx DB HTTP API which simplifies InfluxDB configuration as you don’t need to configure Graphite Connector anymore. It also allows you to send annotations to Graphite which gives you nice graphs with custom meta-data to better describe your load test
Web Report improvements:
This new feature introduced in version 3.0 continues to improve in Apache JMeter 3.2. With this version, in the APDEX table, you’ll be able to customize per transaction the values of:
- Satisfied response time threshold
- Frustrated response time threshold
This feature was really needed because those 2 thresholds always vary depending on type of transaction concerned, for example, for an e-commerce website, a user will accept to wait more during a payment transaction than when doing a search. So this needed to be reflected in the APDEX computation.
Another improvement on report is the reorganization of Statistics table:
Better scripting experience:
Add think times in one click:
Apache JMeter 3.2 continues to improve Think Time experience with a new menu that now allows you to add Think Time between children of a node in one click.
When you have a lot of scripts to maintain, having a Naming policy for scripts can help a lot. JMeter 3.2 proposes a default one that you can customize by implementing your own policy.
Various Improvements in extractors, assertions and samplers
This highly used components has many improvements:
- Introduction of OR combination to allow testing different possible texts in a response without regular expressions
- Ability to assert on Request Headers for example to validate that a Header or Cookie has been created and transmitted
- A better cell renderer which allows faster interaction and to see clearly when a new line has been introduced in assertion which can make it fail
DNS Cache Manager
This component which gives more control on DNS resolution, Apache JMeter 3.2 has been improved with a new « Static host table » feature.
Say, you have a test server, that you want to reach with a name, that is not (yet) set up in your DNS servers. For our example, this would be www.example.com for the server name, which you want to reach at the IP « 127.0.0.1″. Then thanks to below configuration, all requests will be sent to 127.0.0.1 using « www.example.com » in all headers mimicking production situation.
In Apache JMeter 3.2, this very useful component has been aligned on other extractors to allow more control on extraction of text matching XPath. You can now extract easily a random match, a particular match or all matches. This is particularly useful with UbikLoadPack JavaSerialization and GWTRPC plugins.
It is also very interesting to see that the core keeps improving with enhancements in many fields:
- Many improvements in JMS field:
- Reconnection on error
- Variables support for all types of messages
- Better handling of CSS Parsing with a Caching of parsing result to improve performances
- Dependencies upgrades with major performance improvements in the critical JODD library used by JMeter. We’re happy at Ubik-Ingenierie to have contributed to some of JODD performance improvements.
As you can see, JMeter continues to innovate and improve in all fields thanks to the work of its core committers, a growing community of contributors and users, and a lot of commercial and Cloud solutions built around it.
Read Apache JMeter 3.2 full release notes here.
So download it and start playing.
And if you need training, support or third party plugins, contact us.
Philippe Mouawad works as an Architect and technical expert for Ubik-Ingenierie where he leads among other things the development of UbikLoadPack a set of Commercial Plugins for Apache JMeter allowing to load test different protocols like MPEG-DASH, Http Live Streaming, GWT, JavaSerialization.
Philippe is a committer on the Apache JMeter project and member of the PMC since October 2011.
Finally he is a co-author of a french book on JMeter called Maîriser JMeter: Du test de charge à Devops.
- Ubik Load Pack is a JMeter based solution for complex protocols.
- Follow us on Twitter and StackOverflow.
- Follow Apache JMeter on Twitter
- JMeter on github
- Using HLS and MPEG DASH for Flexible Streaming Videos 18 mai 2017
- Load Testing Java Serialization performance 17 mai 2017
- Load Testing Smooth Streaming Video with JMeter 12 mai 2017