Apache JMeter 3.2 released , enjoy the new features

on 30 avril 2017 CI, CONTINUOUS INTEGRATION, DEVOPS, GROOVY, JMETER, JMETER-PLUGINS, LOAD_TESTING, LOW COST, PERFORMANCE, PRODUCTIVITY, TUNING and Étiquettes : , , , with 0 comments

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 Request advanced tab

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.

HTTP(S) Test Script Recorder Basic

Second one which allows you to exclude recorded requests based on different conditions:

HTTP(S) Test Script Recorder Filtering

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.

Core improvements:

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.

Finally, Sonar Qube has been setup for Apache JMeter build process and an important work on code quality and test coverage has been done, you can see the Sonar JMeter report.

Report / Dashboard improvements:

Live Reporting in Influx DB:

In Apache JMeter 3.2, the Backend Listener has been enhanced with a new Backend Listener client that allows writing results into an InfluxDB Backend.

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:

Report statistics

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.

Add think time

Naming policy:

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.

Apply naming policy

Various Improvements in extractors, assertions and samplers

Response Assertion

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

Response Assertion improvements

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.

DNS Cache manager static host table

XPath Assertion

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.

XPath Extractor Match No

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.

NDLR

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.

About author:

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.

About us: