Changes

This page details the changes made in the current version only.
Earlier changes are detailed in the History of Previous Changes.

Version 3.0

Summary

New and Noteworthy

Test plan creation and debugging improvements

New Search Feature in View Results Tree to allow searching for text / regexp in Request/Responses/Headers/Cookies/… This will ease correlation and Test plans creation

New JSON Post Processor to better extract data from JSON content using user friendly JSON-PATH syntax

JSON is now a first class citizen in JMeter with the introduction of a new JSONPath post processor. This post processor is very similar to Regular Expression Post Processor but is well suited for JSON code. It is based on Jayway JSON Path library

New validation feature, in one click run a selection of Thread Groups with 1 user, no pause and 1 iteration

JSR223 Test Elements do not require a Cache Compilation Key anymore

Just check Cache compiled script if available checkbox and the elements (Pre-Processor, Post-Processor, Assertions, Listeners, …) will pre-compile the script and cache the compiled code if the underlying language supports it

Nashorn can now be used as Javascript engine providing better performance and easier usage

To enable Nashorn, you need to set in user.properties:
javascript.use_rhino=false

Nashorn can be used with Java 8 in the following elements:

Jexl3 has been integrated. It provides new scripting features and much better documentation

JEXL3 can now be used thanks to a new function __jexl3. JEXL is a language very similar to JSTL.

Simplified HTTP Request UI

A new "Advanced" tab has been added to HTTP Request to simplify configuration. The file upload feature has been moved into a dedicated tab. This increases the space available for parameters in UI and simplifies the UX.

HTTP Request Defaults improvements

You can now configure Source Address (IP Spoofing like feature) and "Save response as MD5 hash" in Advanced Tab

Reporting improvements

New Reporting Feature generating dynamic Graphs in HTML pages (APDEX, Summary report and Graphs)

A dynamic HTML report can now be generated either at the end of a load test or from a result file whenever you want. See Generating dashboard for more details. This report provides the following metrics:

GraphiteBackendListener has a new Server Hits metric

Summariser displays a more readable duration

Now duration are display in the format hours:minutes:seconds
Generate Summary Results +      1 in 00:00:01 =    1.7/s Avg:     1 Min:     1 Max:     1 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0
Generate Summary Results +    138 in 00:00:09 =   16.2/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%) Active: 9 Started: 9 Finished: 0
Generate Summary Results =    139 in 00:00:09 =   15.3/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%)
Generate Summary Results +    467 in 00:00:10 =   47.0/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%) Active: 19 Started: 19 Finished: 0
Generate Summary Results =    606 in 00:00:19 =   31.9/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%)
⋮
Generate Summary Results +   1662 in 00:00:10 =  166.1/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%) Active: 50 Started: 50 Finished: 0
Generate Summary Results =  28932 in 00:03:19 =  145.4/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%)
Generate Summary Results +   1664 in 00:00:10 =  166.4/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%) Active: 50 Started: 50 Finished: 0
Generate Summary Results =  30596 in 00:03:29 =  146.4/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%)
Generate Summary Results +   1661 in 00:00:10 =  166.1/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%) Active: 50 Started: 50 Finished: 0
Generate Summary Results =  32257 in 00:03:39 =  147.3/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%)

BackendListener now allows you to define sampler list as a regular expression

You can now use a regular expression to select the samplers you want to filter. Use parameter: useRegexpForSamplersList=true and put a regex in pararameter samplersList

Protocols and Load Testing improvements

Migration to HttpClient 4.5.2 has been started. Although not completely finished, it improves many areas in JMeter

Migration to HttpClient 4.5.2 improves the following fields of JMeter:

Parallel Downloads is now realistic and scales much better:

Introduction of Sample Timeout feature

This new Sample Timeout Pre-Processor allows you to apply a Timeout on the elements that are in its scope. In the screenshot below the 10 second timeout applies to the Debug Sampler and HTTP Request elements.

JDBC request now uses DBCP2 pool

JDBC Request and JDBC Connection Configuration have been updated to replace old Excalibur Pool by Apache Commons DBCP2 pool. As a consequence properties have been migrated to equivalent when available and UI has been updated. Note that unlike Excalibur, Commons DBCP uses the validation query when creating the pool. So make sure the query is valid. The default query suits many databases, but not all - for example Oracle requires 'SELECT 1 FROM DUAL' or similar.

UX Improvements:

Better display in HiDPI screens

See JMeter with a HiDPI screen on Linux or Windows in Hints and Tips section in user manual

New Icon look and Logo

JMeter has a new Logo created by Felix Schumacher.
Icons have also been refreshed to give a more modern style and make them more meaningful

Lots of fixes of annoying little bugs

Around 40 UI fixes have been made to either fix buggy, confusing behaviour or simplify usage by not allowing incompatible options to be selected

Improved Thread Group UI and related actions (Start, Start No Timers, Validate)

Creating and testing a Test Plan before Load Test has been much simplified by allowing you to only start a selection of Thread Group, start them without applying Timers (thus gaining time) or start them using a new Validation mode. This validation mode allows you to start a Thread Group (without modifying it) with 1 thread, 1 iteration and without applying timers. This validation mode can be customized.

New shortcuts

Core improvements

Configuration simplification with better defaults

Default values for many properties have been modified to make JMeter configuration optimal Out of the box. Read "Incompatible changes" section for more details.

Apache Groovy bundled with JMeter

Apache Groovy, the well-known JVM scripting language, is now bundled with Apache JMeter in lib folder. This allows you to use it immediately through JSR223 Elements by selecting the Groovy language.

Superflous and old properties removed

Old properties that existed to maintain backward compatibility or to offer some superflous customization have been removed. Read "Incompatible changes" section to see which properties have been removed.

Code and documentation improvements

Improvements to unit tests

Dependencies refresh

Deprecated Libraries dropped or replaced by up to date ones:

Slf4j can now be used within Plugins and core code

You can now use SLF4J logging wrapper in your custom plugins or org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient subclasses.

Incompatible changes

Deprecated and removed elements

Improvements

HTTP Samplers and Test Script Recorder

Other samplers

Controllers

Listeners

Timers, Assertions, Config, Pre- & Post-Processors

Functions

I18N

General

Non-functional changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Controllers

Listeners

Timers, Assertions, Config, Pre- & Post-Processors

Functions

I18N

General

Thanks

We thank all contributors mentioned in bug and improvement sections above:

We also thank bug reporters who helped us improve JMeter.
For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes:

Apologies if we have omitted anyone else.

Known problems and workarounds