History of Previous Changes

This page details the changes made in previous versions only.
Current changes are detailed in Changes.

Changes sections are chronologically ordered from top (most recent) to bottom (least recent)

Version 5.6.2

Summary

Bug fixes

General

Thanks

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

We also thank bug reporters who helped us improve JMeter.

Apologies if we have omitted anyone else.

Known problems and workarounds

Version 5.6.1

Summary

New and Noteworthy

Improvements

HTTP Samplers and Test Script Recorder

Non-functional changes

Other Samplers

Bug fixes

Thread Groups

Other Samplers

Thanks

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

We also thank bug reporters who helped us improve JMeter.

Apologies if we have omitted anyone else.

Known problems and workarounds

Version 5.6

Summary

New and Noteworthy

Improvements

Thread Groups

HTTP Samplers and Test Script Recorder

Other samplers

General

Non-functional changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Listeners

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

Report / Dashboard

Documentation

General

Thanks

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

We also thank bug reporters who helped us improve JMeter.

Apologies if we have omitted anyone else.

Known problems and workarounds

Version 5.5

Summary

New and Noteworthy

JMeter now supports Java 17

JMeter 5.5 ships with log4j2 2.17.2

Open Model Thread Group

New component: Open Model Thread Group allows creating load profiles with variable load.

For example, if you need to gradually increase load from 0/sec to 10/sec during minute you could previously use Thread Group + Timer combinations. However, then you need to compute the expected number of threads, ensure they are created only when needed, and so on.

With Open Model Thread Group you can configure the same load profile as rate(0/sec) random_arrivals(1 minute) rate(10/sec). The thread group would spawn threads as needed to drive the configured load. The load profile can use properties, so you can launch the same script with slightly different load levels, however, the profile can't be updated while the test is running.

The new thread group is experimental in JMeter 5.5, so please feel free to submit your feedback.

Open Model Thread Group sample
Open Model Thread Group sample

Preparing the deprecation of Oro Regex usage

Another experimental feature in JMeter 5.5 is the ability to replace the Oro based Regex implementation by the built-in Java based one. To choose the Java based one, set the JMeter property jmeter.regex.engine to the value java.

Core improvements

Kotlin language is now used in some core classes and tests (e.g. Open Model Thread Group). JMeter is compiled with apiTarget=1.5, and it ships with kotlin-stdlib 1.6.

lets-plot-kotlin charting library is added, so it will be easier to refine and create new charts in UI in the future.

Improvements

Thread Groups

HTTP Samplers and Test Script Recorder

Other samplers

Controllers

Listeners

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

Report / Dashboard

General

Non-functional changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

Documentation

General

Thanks

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

We also thank bug reporters who helped us improve JMeter.

Apologies if we have omitted anyone else.

Known problems and workarounds

Version 5.4.3

Summary

This version is a fix release against the vulnerability CVE-2021-45105: Apache Log4j2 versions 2.0-alpha1 through 2.16.0 (excluding 2.12.3) did not protect from uncontrolled recursion from self-referential lookups. This allows an attacker with control over Thread Context Map data to cause a denial of service when a crafted string is interpreted.

Non-functional changes

Known problems and workarounds

Version 5.4.2

Summary

This version is a fix release against the vulnerability CVE-2021-44228: Apache Log4j2 JNDI features do not protect against attacker controlled LDAP and other JNDI related endpoints.

Non-functional changes

Known problems and workarounds

Version 5.4.1

Summary

Incompatible changes

Improvements

General

Non-functional changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Listeners

Documentation

General

Thanks

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

We also thank bug reporters who helped us improve JMeter.

Apologies if we have omitted anyone else.

Known problems and workarounds

Version 5.4

Summary

New and Noteworthy

UX improvements

Bug 62179, Bug 64658 – The splash screen is now application-modal rather than system-modal, so it does not block other applications when JMeter is starting up.

Incompatible changes

Improvements

HTTP Samplers and Test Script Recorder

Other samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

General

Non-functional changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

Documentation

General

Thanks

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

We also thank bug reporters who helped us improve JMeter.

Apologies if we have omitted anyone else.

Known problems and workarounds

Version 5.3

Summary

New and Noteworthy

UX improvements

Added Darklaf look and feel that improves several components.

Tree indentation level is easier to follow:

JMeter tree with Darklaf Darcula theme
JMeter tree with Darklaf Darcula theme
JMeter tree with Darklaf IntelliJ theme
JMeter tree with Darklaf IntelliJ theme

New look and feel themes. Light: IntellJ, Solarized Light, HighContrast Light. Dark: OneDark, Solarized Dark, HighContrast Dark.

When an element in tree is disabled, all its descendants are shown in gray. For instance, While Contoller is disabled in the following tree, so its children are gray. It is purely a UI change, and the behavior is not altered.

While controller is disabled, so its children are gray
While controller is disabled, so its children are gray

Tree context menu is shown even in case the node selection is changed. Previously the popup did disappear and it was required to select a node first and only then launch popup.

Look and feel can now be updated without a restart

Use CTRL + ALT + wheel for zooming fonts. Previous shortcut was CTRL + SHIFT + wheel, however, it conflicted with horizontal scrolling.

In-app zoom is more consistent (e.g. sometimes not all the labels or even panels were scaled). For instance: log viewer, JSR223 code editor were not previously scaled with zoom-in/out feature

Tree context menu is shown for the full row, not for the label only

Undo and redo support for editable fields. Keystrokes are CTRL + Z / CTRL + SHIFT + Z, or CMD + Z/ CMD + SHIFT + Z depending on the operating system. Undo is implemented on a field level basis (each fields has its own history), and the history is invalidated when tree selection changes.

Mark the currently selected language in the options menu.

Mark the currently selected log level in the options menu.

Rework of many Test Element UI (JUnit Request, ForEach Controller, If Controller, Throughput Controller, WhileController, Counter Config, XPath2 Extractor, Function Helper Dialog, Search popup, JMS Elements)

Incompatible changes

Improvements

HTTP Samplers and Test Script Recorder

Other samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

General

Non-functional changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

Documentation

General

Thanks

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

We also thank bug reporters who helped us improve JMeter.

Apologies if we have omitted anyone else.

Known problems and workarounds

Version 5.2.1

Summary

New and Noteworthy

This release is a minor bugfix release. Please see the Changes history page to view the last release notes of version 5.2.

Incompatible changes

Improvements

HTTP Samplers and Test Script Recorder

Other samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

General

Non-functional changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

Documentation

General

Thanks

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

We also thank bug reporters who helped us improve JMeter.

Apologies if we have omitted anyone else.

Known problems and workarounds

Version 5.2

Summary

New and Noteworthy

This release is a major release. Please see the Changes history page to view the last release notes of version 5.1.1.

Incompatible changes

Improvements

HTTP Samplers and Test Script Recorder

Other samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

General

Non-functional changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

Documentation

General

Thanks

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

We also thank bug reporters who helped us improve JMeter.

Apologies if we have omitted anyone else.

Known problems and workarounds

Version 5.1.1

Summary

New and Noteworthy

This release is mainly a bugfix release. Please see the Changes history page to view the last major behaviors with the version 5.1.

Live Reporting and Web Report

A new menu entry has been added to the Tools menu. It's allow to generate a results report from a previous CSV/JTL file.


Incompatible changes

Improvements

HTTP Samplers and Test Script Recorder

Other samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

General

Non-functional changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

Documentation

General

Thanks

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

We also thank bug reporters who helped us improve JMeter.

Apologies if we have omitted anyone else.

Known problems and workarounds

Version 5.1

Summary

New and Noteworthy

Core improvements

JDBC testing has been improved with ability to set init SQL statements and add compatibility with JDBC drivers that do not support QueryTimeout

UX improvements

Templates can provide parameters that are filled in on test plan generation, Recording template uses this feature

A new Tools menu has been introduced to collect those entries, that are used for general usage around JMeter, like:

Test Plan

Ability to create a Test plan from a cURL command.

Scripting / Debugging enhancements

Live Reporting and Web Report

Incompatible changes

Improvements

HTTP Samplers and Test Script Recorder

Other samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

General

Non-functional changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

Documentation

General

Thanks

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

We also thank bug reporters who helped us improve JMeter.

Apologies if we have omitted anyone else.

Known problems and workarounds

Version 5.0

Summary

New and Noteworthy

Core improvements

Rest support has been improved in many fields

In distributed testing, JMeter now automatically prefixes thread names with engine host and port, this makes the counting of threads correct in the HTML report without any other configuration as it was required before

XPath 2.0 is supported in a new element called XPath2 extractor providing easier XML namespaces handling, up to date XPath syntax and better performances

Upgrade to HTTP Components 4.6 last APIs has been completed and JMeter does not rely anymore on deprecated APIs of this library

It is now possible to control in an easier way Loop breaking and Loop switching to next iteration. This is available in Flow Control Action and Result Status Action Handler elements

While Controller now exports a variable containing its current index named __jm__<Name of your element>__idx. So for example, if your While Controller is named WC, then you can access the looping index through ${__jm__WC__idx}

Scripting / Debugging enhancements

Search feature has been improved to allow you to iterate in the tree over search results and do necessary replacements through Next/Previous/Replace/Replace/Find buttons

In View Results Tree, the request and response headers/body are clearly separated to allow you to better inspect requests and responses. You can also search in all those tabs for a particular value

Recording feature has been improved to provide a popup that is always on top when you navigate in browser allowing you to name transactions while you navigate in your application.

You can now restart JMeter from menu File → Restart

Live Reporting and Web Report

Reporting feature has been enhanced

A new Graph Total Transactions per second has been added to the HTML Web Report

It is now possible to graph over time custom metrics available as JMeter Variables through sample_variables. Those custom metrics graphs will be available in the HTML Report in Custom Graphs section

Hits per second graph now takes into account the embedded resources

In Live reporting, the sent and received bytes are now sent to Backends (InfluxDB or Graphite)

Functions

A New function __threadGroupName has been introduced to obtain ThreadGroup name.

Incompatible changes

Improvements

HTTP Samplers and Test Script Recorder

Other samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

General

Non-functional changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

Documentation

General

Thanks

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

We also thank bug reporters who helped us improve JMeter.

Apologies if we have omitted anyone else.

Known problems and workarounds

Version 4.0

Summary

New and Noteworthy

Core improvements

JMeter now supports JAVA 9.

New Boundary Extractor element available which provides easy extraction with better performances

New JSON Assertion element available to assert on JSON responses.

New Precise Throughput Timer element available which produces Poisson arrivals with given constant throughput.

JMS Point-to-Point sampler has been enhanced with read, browse, clear options.

Best property values are now selected on many Test Elements to ensure best practices are the defaults:

Loop controller and ForEach Controller now expose their current iteration as a variable named __jm__<Name of your element>__idx that you can use like this for example for a Loop Controller named MyLoopController:

${__jm__MyLoopController__idx}
. See Bug 61802

Cookies are now shown in View Results Tree during recording. They were previously always shown as empty.

Response Assertion now allows you to customize assertion message and assert on Request Data.

UX improvements

JMeter now uses Darcula LAF by default

Workbench has been dropped from UI, you can now use Non Test Elements as immediate children of Test Plan.

Menu UX have been improved to make most used elements available more rapidly.

HTTP(S) Test Script Recorder now allows you to name your transactions while recording in a more human readable way.

UX improvements made on, among the most notable :

Functions

New Function __digest provides easy computing of SHA-XXX, MDX hashes:

${__digest(MD5,Apache JMeter 4.0 rocks !,,,)}
will return 0e16c3ce9b6c9971c69ad685fd875d2b

New Function __dateTimeConvert provides easy conversion between date formats:

${__dateTimeConvert(01 Jan 2017,dd MMM yyyy,dd/MM/yyyy,)}
will return 01/01/2017

New Function __changeCase provides ability to switch to Upper / Lower / Capitalized cases

${__changeCase(Avaro omnia desunt\, inopi pauca\, sapienti nihil,UPPER,)}
will return AVARO OMNIA DESUNT, INOPI PAUCA, SAPIENTI NIHIL

New Functions __isVarDefined and __isPropDefined provide testing of properties and variables availability

${__isPropDefined(START.HMS)}
will return true
${__isVarDefined(JMeterThread.last_sample_ok)}
will return true

Scripting and Plugin Development

You can now call SampleResult#setIgnore() if you don't want your sampler to be visible in results

JavaSamplerContext used by AbstractJavaSamplerClient has been enhanced with new methods to easy plugin development.

JMeter now distributes additional Maven sources and javadoc artifacts into Maven repository

Plugins can now register listeners to be notified when a Test Plan is opened/closed

Live Reporting and Web Report

InfluxDB backend listener now allows you to add custom tags by adding them with prefix TAG_, see Bug 61794

In Web Report responseTime distribution graph is more precise

Some bugfixes have been made on report generation, see Bug 61900, Bug 6190061956, Bug 61899. Graphs Latency Vs Request and Response Time Vs Request did not exceed 1000 RPS due to Bug 61962

Configuration of JMeter environment

JVM settings for the JMeter start scripts can be placed in a separate file (bin/setenv.sh on Unix and bin\setenv.bat on Windows), that gets called on startup. The startup script itself does not have to be edited anymore.

Incompatible changes

Improvements

HTTP Samplers and Test Script Recorder

Other samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

General

Non-functional changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

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

Version 3.3

Summary

New and Noteworthy

JMeter does not yet support JAVA 9, next JMeter version will support it, you can help and follow progress on this item in Bug 61529.
Using last minor version of JAVA 8 is advised to avoid facing any JDK bug.

Core improvements

HTTP Sampler now supports Brotli decompression.

CacheManager now completely supports Vary header.

InfluxDB BackendListener now supports sending results to InfluxDB through UDP protocol.

It has also been enhanced to send number of errors by response code and message for each transaction

TCP Sampler now computes latency, see Bug 60156

Upgraded dependencies to last available versions bringing performance improvements and bug fixes

Continued to improve the quality of our code and tests coverage. See Quality report

UX improvements

More work has been done to better support HiDPI.

Some bugs, that crept in with the work on lowering the memory usage of View Results Tree, were fixed.

The constant DEFAULT_IMPLEMENTATION was removed from CookieManager, as it lost it purpose with the removal of the alternate HTTP Client implementation in the last release

JDBC Sampler UX has been improved by adding select boxes for drivers and validation queries.

If Controller and While Controller UX have been improved

Report/Dashboard improvements

A new Help menu item has been added to simplify configuration of report generation.

Documentation improvements

Incorporated feedback about unclear documentation.

Functions

Function Helper Dialog: a new field that shows execution result has been added.

New functions:

Incompatible changes

Removed elements or functions

Improvements

HTTP Samplers and Test Script Recorder

Other samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

General

Non-functional changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

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

Version 3.2

Summary

New and Noteworthy

IMPORTANT CHANGES

JMeter now requires Java 8. Ensure you use the most up to date version.

JMeter logging has been migrated to SLF4J and Log4j 2. This affects configuration and 3rd party plugins, see below "Logging changes".

Starting with JMeter version 3.2 the number of results in View Results Tree is limited by default to 500 entries. If you want more entries, you have to set the property view.results.tree.max_results to a higher value, or to 0, if you don't want to impose any limit. You can set the property in bin/user.properties. More info might be found here.

Core improvements

UX improvements

Report/Dashboard improvements

Documentation improvements

Incompatible changes

Removed elements or functions

Logging changes

JMeter logging has been migrated to SLF4J and Log4j 2. This affects logging configuration and 3rd party plugins (if they use JMeter logging). The following sections describe what changes need to be made.

Setting the logging level and log file

The default logging level can be changed on the command-line using the -L parameter. Likewise the -l parameter can be used to change the name of the log file. However the log_level properties no longer work.

The default logging levels and file name are defined in the log4j2.xml configuration file in the launch directory (usually JMETER_HOME/bin)

If you need to change the level programmatically from Groovy code or Beanshell, you need to do the following:
    import org.apache.logging.log4j.core.config.Configurator;
    ⋮
    final String loggerName = te.getClass().getName(); // te being a JMeter class
    Configurator.setAllLevels(loggerName, Level.DEBUG);
    

Changes to 3rd party plugin logging

3rd party plugins should migrate their logging code from logkit to slf4j. This is fairly easy and can be done by replacing:
        import org.apache.jorphan.logging.LoggingManager;
        import org.apache.log.Logger;
        ⋮
        private static final Logger log = LoggingManager.getLoggerForClass();
    
By:
        import org.slf4j.Logger;
        import org.slf4j.LoggerFactory;
        ⋮
        private static final Logger log = LoggerFactory.getLogger(YourClassName.class);
    

Improvements

HTTP Samplers and Test Script Recorder

Other samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

General

Non-functional changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

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

Version 3.1

Summary

New and Noteworthy

Improve Report/Dashboard

The Dashboard has been improved with 3 new graphs and 1 summary table:

New Metrics

A new sent_bytes metric has been introduced which reports the bytes sent to server.
Another metric connect_time has been enabled by default in this version

Handling Big responses

JMeter is now able to handle in terms of metrics responses bigger than 2GB, limit has been increased to 9223372 TB.
To handle such big responses, it can also now truncate part of the response to avoid overflooding memory. See httpsampler.max_bytes_to_store_per_request property.

New __groovy function

Introduce a new function __groovy that enables Groovy functions. This can be handy, as JavaScript can be quite slow (same for BeanShell), when used in highly concurrent test plans.

Use Groovy as default for JSR-223 elements

Groovy is now set as the default language for JSR-223 elements. If you want to use another of the supported language, you have to make an explicit choice.

By default Cache compiled script if available is not checked by default although we advise you to check it and ensure you don't use ${varName} syntax to access JMeter variables but vars.get("varName") instead.

Formatted HTML source view in Results Tree View

The HTML source code in the Results Tree View can now be viewed formatted. This is extremely useful, if the code of the webpage has been stripped of all superfluous whitespace.

New formatted HTML source view
New formatted HTML source view

Ability to update all timers in Test plan with a new property

A new property timer.factor=1.0f has been introduced which allows you to multiply pause times computed by Gaussian, Uniform and Poisson Timers by it. This allows you to update Think Times from one place and let you gain productivity.

Core improvements

Documentation improvements

Incompatible changes

Deprecated and removed elements or functions

These elements do not appear anymore in the menu, if you need them modify not_in_menu property. The JMeter team advises not to use them anymore and migrate to their replacement.

Improvements

HTTP Samplers and Test Script Recorder

Other samplers

Controllers

Listeners

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

Functions

I18N

Report / Dashboard

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

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 parameter 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.

Superfluous and old properties removed

Old properties that existed to maintain backward compatibility or to offer some superfluous 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

Version 2.13

Summary

New and Noteworthy

New Elements

New Async BackendListener with Graphite implementation

A new Async BackendListener has been added to allow sending result data to a backend listener. JMeter ships with a GraphiteBackendListenerClient that allows sending results to a Graphite server using Pickle or Plaintext protocols. You can implement your own backend by extending AbstractBackendListenerClient. This backend could be a database (JDBC), a Message Oriented Middleware (JMS), a Webservice or anything you want.

This is the kind of Live Dashboard you can obtain using Grafana and InfluxDB
Read this for more details.

Grafana dashboard
Grafana dashboard

Core Improvements

New connect time metric

Starting with this version a new metric called connectTime has been added. It represents the time to establish connection. By default it is not saved to CSV or XML, to have it saved add to user.properties:
jmeter.save.saveservice.connect_time=true

Aggregate Graph and Report

The listeners Aggregate Graph and Aggregate Report previously showed only the 90 percentile (historical behavior), the 95 percentile and the 99 percentile have been added and are customizable. To setup the percentiles value you want, add to user.properties:
aggregate_rpt_pct1=90
aggregate_rpt_pct2=95
aggregate_rpt_pct3=99

HTTP(S) Test Script Recorder

Now component is able to detect authentication schemes and automatically adds a pre-configured HTTP Authorization Manager with the correct Mechanism.

HTTP Request

The CalDAV verbs (Calendar extensions to WebDAV) REPORT and MKCALENDAR have been added in the HTTP Request sampler.

JDBC Request

The ResultSet can be get as a object, this allows to handle more easily the results after in BeanShell, JSR223 scripts, …

Distributed Testing

To allow better usage of Distributed Testing in the cloud, retry behaviour has been added when starting test on servers. Read this for more details.

Distributed Testing performance

Since JMeter 2.13, Stripping modes (StrippingBatch being the default mode) now also strip responses from SubResults improving consumed network bandwidth.

Documentation refresh

A new style for website (responsive and more up to date) has been created by Felix Schumacher. Documentations have been refreshed particularly:

GUI Improvements

Module Controller

The Module Controller now shows the target controller in a tree view (instead of combo list).

Toolbar

JMeter's toolbar has been refreshed for some icons (start, toggle, etc.). Three sizes are now available for the icons: 22x22, 32x32 and 48x48.
The property to define your preferred size is:

jmeter.toolbar.icons.size=value
with the value 22x22 (default size), 32x32 or 48x48.

The toolbar with 22x22 pixels icons

The toolbar with 32x32 pixels icons

The toolbar with 48x48 pixels icons

HTTP(S) Test Script Recorder

If your Test Plan does not contains a Recording Controller, a new warning message will appear if the HTTP(S) Test Script Recorder is configured to send the samples into a Recording Controller.

Incompatible changes

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

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 bugs

Version 2.12

Summary

New and Noteworthy

Java 8 support

Now, JMeter 2.12 is compliant with Java 8.

New Elements

Critical Section Controller

The Critical Section Controller allow to serialize the execution of a section in your tree. Only one instance of the section will be executed at the same time during the test.

DNS Cache Manager

The new configuration element DNS Cache Manager(see Bug 56841) improves the testing of:

Core Improvements

Smarter Recording of Http Test Plans

Test Script Recorder has been improved in many ways

Support of Webdav requests

You can now test against WebDav server using HttpClient4 Implementation of Http Request

Better handling of embedded resources

When download embedded resources is checked, JMeter now uses User Agent header to download or not resources embedded within conditional comments as per About conditional comments.

Ability to customize Cache Manager (Browser cache simulation) handling of cached resources

You can now configure the behaviour of JMeter when a resource is found in Cache, this can be controlled with cache_manager.cached_resource_mode property

JMS Publisher / JMS Point-to-Point

Add JMSPriority and JMSExpiration fields for these samplers.

Mail Reader Sampler

You can now specify the number of messages that want you retrieve (before all messages were retrieved). In addition, you can fetch only the message header now.

SMTP Sampler

Adding the Connection timeout and the Read timeout to the SMTP Sampler.

Synchronizing Timer

Adding a timeout to define the maximum time to waiting of the group of virtual users.

Performance improvements

A big improvement in performances of Functions has been made by lifting useless synchronization. It concerns all functions except __StringFromFile, __XPath and __BeanShell, see Bug 57114

__jexl2 performances have been improved to avoid contention point, see Bug 56708

GUI Improvements

Undo/Redo support

Undo / Redo has been introduced and allows user to undo/redo changes made on Test Plan Tree. This feature (ALPHA MODE) is disabled by default, to enable it set property undo.history.size=25

View Results Tree

Improve the ergonomics of View Results Tree by changing placement of Renderers and allowing custom ordering (with the property view.results.tree.renderers_order).

Response Time Graph

Adding the ability for the Response Time Graph listener to save/restore format its settings in/from the jmx file.

Log Viewer

Starting with this version, the last lines of JMeter's log file (jmeter.log) can be viewed directly in GUI by clicking on Warning icon in the upper right corner. This will unfold the Log Viewer panel and show logs.

File Opening

Now, "Open File dialog" uses last opened file folder as start folder, see Bug 52707

Known bugs

Incompatible changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Controllers

Listeners

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

Functions

I18N

General

Improvements

HTTP Samplers and Test Script Recorder

Other samplers

Controllers

Listeners

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

Functions

I18N

General

Non-functional changes

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.

Version 2.11

Summary

New and Noteworthy

HTTP(S) Test Script Recorder improvements

Following improvements have been made since major changes introduced in JMeter 2.10 on HTTP(S) Test Script Recorder:

JMS Publisher/Point to Point : Add ability to set typed values in JMS header properties

In the samplers JMS Publisher and JMS Point-to-Point, you can now set up the class of values for the JMS header properties. Previously only String was possible.

View Results Tree : Add an XPath Tester

In View Results Tree listener, a new XPath tester can be used to test XPATH expressions.

Ability to choose the client alias for the cert key in JsseSslManager such that Mutual SSL auth testing can be made more flexible

When testing client based certificate authentications you have now better control on certificate you use through a new field "Variable name holding certificate alias", this field lets you select the certificate you want to send to server to authenticate. You can use a CSV Data Set as a holder for the variable value.

Add a "Save as Test Fragment" option

In the file menu, a new option allow to save a group of elements as a Test fragment.

Summariser is be enabled by default in Non GUI mode

When you run JMeter from command line, now JMeter displays some statistics from the Summariser mode.

Transaction Controller:Change default property "Include duration of timer…" for newly created element

Starting from 2.11, Transaction Controller is configured by default to exclude processing time of pre/post processors as long as timers pause.

Known bugs

Incompatible changes

Bug fixes

HTTP Samplers and Test Script Recorder

Other Samplers

Controllers

Listeners

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

Functions

I18N

General

Improvements

HTTP Samplers and Proxy

Other samplers

Controllers

Listeners

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

Functions

I18N

General

Non-functional changes

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.

Version 2.10

Summary

New and Noteworthy

Core Improvements

New Performance improvements

New CSS/JQuery Tester in View Tree Results

A new CSS/JQuery Tester in View Tree Results that makes CSS/JQuery Extractor a first class citizen in JMeter, you can now test your expressions very easily

Many improvements in HTTP(S) Recording have been made

The "HTTP Proxy Server" test element has been renamed as "HTTP(S) Test Script Recorder".

You can now load test MongoDB through new MongoDB Source Config

Kerberos authentication has been added to Auth Manager

Device can now be used in addition to source IP address

You can now do functional testing of MongoDB scripts through new MongoDB Script

Timeout has been added to OS Process Sampler

Query timeout has been added to JDBC Request

New functions (__urlencode and __urldecode) are now available to encode/decode URL encoded chars

Continuous Integration is now eased by addition of a new flag that forces NON-GUI JVM to exit after test end

See jmeter property:

jmeterengine.force.system.exit

HttpSampler now allows DELETE Http Method to have a body (works for HC4 and HC31 implementations). This allows for example to test Elastic Search APIs

2 implementations of HtmlParser have been added to improve Embedded resources parsing

You can choose the implementation to use for parsing Embedded resources in HTML pages: See jmeter.properties and look at property "htmlParser.className".

Distributed testing has been improved

ModuleController has been improved to better handle changes to referenced controllers

Improved class loader configuration, see Bug 55503

Best-practices section has been improved, ensure you read it to get the most out of JMeter

See Best Practices

GUI and ergonomy Improvements

New Templates feature that allows you to create test plan from existing template or merge template into your Test Plan

Workbench can now be saved

Syntax color has been added to scripts elements (BeanShell, BSF, and JSR223), MongoDB and JDBC elements making code much more readable and allowing UNDO/REDO through CTRL+Z/CTRL+Y

BSF Sampler with syntax color

JSR223 Pre Processor with syntax color

Better editors are now available for Test Elements with large text content, like HTTP Sampler, and JMS related Test Element providing line numbering and allowing UNDO/REDO through CTRL+Z/CTRL+Y

JMeter GUI can now be fully Internationalized, all remaining issues have been fixed

Currently French has all its labels translated. Other languages are partly translated, feel free to contribute translations by reading Localisation (Translator's Guide)

Moving elements in Test plan has been improved in many ways

Drag and drop of elements in Test Plan tree is now much easier and possible on multiple nodes

Note that due to this bug in Java, you cannot drop a node after last node. The workaround is to drop it before this last node and then Drag and Drop the last node before the one you just dropped.

New shortcuts have been added to move elements in the tree.

(alt + Arrow Up) and (alt + Arrow Down) move the element within the parent node
(alt + Arrow Left) and (alt + Arrow Right) move the element up and down in the tree depth

Response Time Graph Y axis can now be scaled

JUnit Sampler gives now more details on configuration errors

Known bugs

Incompatible changes

Bug fixes

HTTP Samplers and Proxy

Other Samplers

Controllers

Listeners

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

Functions

I18N

General

Improvements

HTTP Samplers and Proxy

Other samplers

Controllers

Listeners

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

Functions

I18N

General

Non-functional changes

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.

Version 2.9

New and Noteworthy

Core Improvements:

* A new Extractor that uses CSS or jquery-like selector syntax has been introduced, it allows using either JODD or JSOUP implementations

Result: the title of the page in a JMeter variable

* JMeter can now handle different types of documents (PDF, MsOffice files, Apache OpenOffice's files, …) within different elements

* A new Regex User Parameters Pre-Processor that enables injecting input parameter names and values using a reference extracted by Regular Expression Extractor from a previous response

* TCP Sampler: new options

TCP Sampler has been enhanced with new options to allow setting Close Connection, SO_LINGER and End of line(EOL) byte value

* A new function __escapeOroRegexpChars(,) has been introduced quote ORO regexp meta characters

* ForEach Controller: new fields

ForEach Controller has now 2 new fields to control start and end of loop

* Result Status Action Handler now has a new option to "Start next thread loop"

* JMS Publisher: new option

JMS Publisher can now send Bytes Messages

* Memory and performance improvements

Significant improvements have been done in this version on memory usage per Thread and CPU when more than one Post Processor is used as child of a Sampler

JSR223 Elements (enable using Groovy, Scala, … as scripting languages) have been improved to enable caching of Compilation results when scripts are passed in Text area

Some configuration defaults have changed to improve performances by default(see Bug 54412), see description in New and Noteworthy section.

* XPath Assertion now enables using a JMeter variable as input

GUI and ergonomy Improvements:

* Search feature has been improved to search within more internal fields of elements and expand search results

* Copy/paste is now possible between 2 JMeter instances >= 2.9 version

Copy element(s) from one JMeter instance:

Paste element(s) into a second JMeter instance:

* HTTP Header Manager

Allow copy from clipboard to HeaderPanel, headers are supposed to be separated by new line and have the following form name:value

* Module Controller

Module Controller has been improved to better render referenced controller and expand it by clicking on a new button

* HTTP Proxy Server

HTTP Proxy Server now has a button to add a set of default exclusions for URL patterns, this list can be configured through property : proxy.excludes.suggested

* Rendering of target controller has been improved in HTTP Proxy Server

HTTP Proxy Server recording:

* HTTP Proxy Server now automatically uses HTTP Request with Raw Post Body mode for samples that only have one unnamed argument (JSON, XML, GWT, …)

* HTTP Proxy Server does not force user to select the type of Sampler in HTTP Sampler Settings, this allows easier switch between implementations as Sampler do not have this information set anymore

* SamplerCreator interface has been enriched to meet new requirements for plug-in providers

* It is now possible to create binary sampler for x-www-form-urlencoded POST request by modifying proxy.binary.types property to add application/x-www-form-urlencoded

* Improved timestamp format auto-detection when reading CSV files

Known bugs

The Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).

Listeners don't show iteration counts when a If Controller has a condition which is always false from the first iteration (see Bug 52496). A workaround is to add a sampler at the same level as (or superior to) the If Controller. For example a Test Action sampler with 0 wait time (which doesn't generate a sample), or a Debug Sampler with all fields set to False (to reduce the sample size).

Webservice sampler does not consider the HTTP response status to compute the status of a response, thus a response 500 containing a non empty body will be considered as successful, see Bug 54006. To workaround this issue, ensure you always read the response and add a Response Assertion checking text inside the response.

Changing language can break part of the configuration of the following elements (see Bug 53679):

The numbers that appear to the left of the green box are the number of active threads / total number of threads, these only apply to a locally run test; they do not include any threads started on remote systems when using client-server mode, (see Bug 54152).

Note that there is a bug in Java on some Linux systems that manifests itself as the following error when running the test cases or JMeter itself:

 [java] WARNING: Couldn't flush user prefs:
 java.util.prefs.BackingStoreException:
 java.lang.IllegalArgumentException: Not supported: indent-number
This does not affect JMeter operation.

Incompatible changes

JMeter requires now a Java 6 runtime or higher.

Some configuration defaults have changed to improve performances by default (see Bug 54412), see description in New and Noteworthy section.

Webservice sampler now adds to request the headers that are set through Header Manager, these were previously ignored

jdbcsampler.cachesize property has been removed, it previously limited the size of a per connection cache of Map < String, PreparedStatement > , it also limited the size of this map which held the PreparedStatement for SQL queries. This limitation provoked a bug Bug 53995. It has been removed so now size of these 2 maps is not limited anymore. This change changes behaviour as starting from this version no PreparedStatement will be closed during the test.

Starting with this version, there are some important changes on JSR223 Test Elements:

View Results Tree now considers response with missing content type as text.

In remote Test mode, JMeter now exits in error if one of the remote engines cannot be configured, previously it started the test with available engines.

Bug fixes

HTTP Samplers and Proxy

Other Samplers

Controllers

Listeners

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

Functions

I18N

General

Improvements

HTTP Samplers

Other samplers

Controllers

Listeners

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

Functions

I18N

General

Non-functional changes

Version 2.8

New and Noteworthy

Core Improvements:

Thread Group: New Option Delay thread creation until needed

New Option "Delay thread creation until needed" that will create and start threads when needed instead of creating them on Test startup
This new feature allows running tests with a huge number of short lived threads.

HTTP Cookie Manager (IPv6 support)

Add HTTPClient 4 cookie implementation in JMeter.
Cookie Manager has now the default HC3.1 implementation and a new choice HC4 implementation (compliant with IPv6 address)

Memory and performance improvements

Significant improvements have been done in this version on memory usage of JMeterThread

JSR223 Elements (enable using Groovy, scala, … as scripting languages) have been improved to enable:

See JMeter Performances across versions

OS Process Sampler

Allow defining files for stdout/stderr/stdin.

HTTP Request: PATCH verb

Add PATCH verb to HTTP sampler

HTTP Request: HTTPClient 4 is now the default implementation

HTTPClient 4 is now the default HTTP Request implementation (and for Proxy element when generating HTTP requests).
Previously the default was the HTTP Java implementation (i.e. the implementation provided by the JVM)

HTTP Request

Add Embedded URL Filter to HTTP Request Defaults Control (it was already present for HTTP Requests)

Miscellaneous

Reporting Improvements:

Response Time Graph

Add a new visualizer Response Time Graph to draw a line graph showing the evolution of response time for a test

Settings for Response Time Graph

View Results in Table

Add latency to View Result in Table listener

Aggregate Graph

Small improvements: legend at left or right is now on 1 column (instead of 1 large line), …

GUI and ergonomy Improvements:

HTTP Proxy Server simplifications

HTTPS Spoofing options have been removed from Proxy as HTTPS recording is directly available since JMeter 2.4.

HTTP Proxy Server

Allow URL Filters to be pasted from clipboard

Find in JMeter

CTRL + F for the new Find feature

ESC key now closes popups.

User Interface in GNOME 3

Display 'Apache JMeter' title in app title bar in Gnome 3

Known bugs

The Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).

Listeners don't show iteration counts when a If Controller has a condition which is always false from the first iteration (see Bug 52496). A workaround is to add a sampler at the same level as (or superior to) the If Controller. For example a Test Action sampler with 0 wait time (which doesn't generate a sample), or a Debug Sampler with all fields set to False (to reduce the sample size).

Changing language can break part of the configuration of the following elements (see Bug 53679):

Note that there is a bug in Java on some Linux systems that manifests itself as the following error when running the test cases or JMeter itself:

 [java] WARNING: Couldn't flush user prefs:
 java.util.prefs.BackingStoreException:
 java.lang.IllegalArgumentException: Not supported: indent-number
This does not affect JMeter operation.

Incompatible changes

When using CacheManager, JMeter now caches responses for GET queries provided header Cache-Control is different from "no-cache" as described in specification. Furthermore it doesn't put anymore in Cache deprecated entries for "no-cache" responses. See Bug 53521 and Bug 53522

A major change has occurred on JSR223 Test Elements, previously variables set up before script execution where stored in ScriptEngineManager which was created once per execution, now ScriptEngineManager is a singleton shared by all JSR223 elements and only ScriptEngine is created once per execution, variables set up before script execution are now stored in Bindings created on each execution, see Bug 53365.

JSR223 Test Elements using Script file are now Compiled if ScriptEngine supports this feature, see Bug 53520.

Shortcut for Function Helper Dialog is now CTRL+F1 (CMD + F1 for Mac OS), CTRL+F (CMD+F1 for Mac OS) now opens Search Dialog.

By default, the TestCompiler now stores details of which pairs it has seen in Controller instances rather than in a static Set. [ Bug 53796] This gives much better memory behaviour for delayed start test plans, as memory used is proportional to the number of concurrent threads. With the static Set memory usage was proportional to the total thread count. This change is very unlikely to cause a problem. The original behaviour can be restored by setting the property TestCompiler.useStaticSet=true

HTTPS Spoofing options have been removed from Proxy as HTTPS recording is directly available since JMeter 2.4.

Bug fixes

HTTP Samplers and Proxy

Other Samplers

Controllers

Listeners

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

Functions

I18N

General

Improvements

HTTP Samplers

Other samplers

Controllers

Listeners

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

Functions

I18N

General

Non-functional changes

Version 2.7

New and Noteworthy

OS Process Sampler

A new System Sampler that can be used to execute commands on the local machine.

OS Process Sampler results example with DNS lookup command 'dig'

JMS Samplers improvements

Addition of a "Non Persistent Delivery" option to send "Non-Persistent" (Guaranteed to be delivered at most once. Message loss is not a concern.) JMS messages

Support sending of JMS Object Messages to enable sending Objects unmarshalled from XML by XStream

Enable setting JMS Properties through JMS Publisher sampler

Test Action sampler

Allow premature exit from a loop

Webservice Sampler improvements

Add a jmeter property soap.document_cache to control size of Document Cache

Make Maintain HTTP Session configurable

Aggregate graph: Clustered Bar char with average, median, 90% line, min and max columns

Aggregate graph changes to Clustered Bar chart, add more columns (median, 90% line, min, max) and options, fixed some bugs

New settings for aggregate graph

Improvements of HTML report design generated by JMeter Ant task in extras folder

HTML report example

HTML report example with some assertion errors

Mailer Visualizer

New Visual Indicator of number of ERROR/FATAL messages in logs

Indicator shows number of ERROR/FATAL messages in logs, it can be clicked to toggle Log Viewer panel

Dialog box to show detail of a parameter row

Add a detail button on parameters table to show detail of a Row

Detail box example

Plugin writers

New interface org.apache.jmeter.engine.util.ConfigMergabilityIndicator has been introduced to tell whether a ConfigTestElement can be merged in Sampler (see Bug 53042):

public boolean applies(ConfigTestElement configElement);

New interface org.apache.jmeter.protocol.http.proxy.SamplerCreator to allow plugging HTTP based samplers that differ from default HTTP Samplers through Proxy during Recording Phase (see Bug 52674):

public String[] getManagedContentTypes();
public HTTPSamplerBase createSampler(HttpRequestHdr request, Map<String, String> pageEncodings, Map<String, String> formEncodings);
public void populateSampler(HTTPSamplerBase sampler, HttpRequestHdr request, Map<String, String> pageEncodings, Map<String, String> formEncodings) throws Exception;

Known bugs

The Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).

Listeners don't show iteration counts when a If Controller has a condition which is always false from the first iteration (see Bug 52496). A workaround is to add a sampler at the same level as (or superior to) the If Controller. For example a Test Action sampler with 0 wait time (which doesn't generate a sample), or a Debug Sampler with all fields set to False (to reduce the sample size).

Incompatible changes

When doing replacement of User Defined Variables, Proxy will not substitute partial values anymore when "Regexp matching" is used. It will use Perl 5 word matching ("\b")

In User Defined Variables, Test Plan, HTTP Sampler Arguments Table, Java Request Defaults, JMS Sampler and Publisher, LDAP Request Defaults and LDAP Extended Request Defaults, rows with empty Name and Value are no more saved.

JMeter now expands the Test Plan tree to the testplan level and no further and selects the root of the tree. Furthermore default value of onload.expandtree is false.

Graph Full Results Listener has been removed.

When calling "Clear All" command, if Log Viewer is displayed its content will be cleared.

Bug fixes

HTTP Samplers and Proxy

Other Samplers

Controllers

Listeners

Assertions

Functions

I18N

General

Improvements

HTTP Samplers

Other samplers

Controllers

Listeners

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

Functions

I18N

General

Non-functional changes

Version 2.6

New and Noteworthy

Toolbar

A new toolbar on JMeter's main window

JMeter start test button

A new menu option and button allow to start a test ignoring the Pause Timers

JMeter GUI Look and Feel

Allow System or CrossPlatform LAF to be set from options menu

JMeter GUI - duplicate node

Add "duplicate node" in context menu

JMeter tree view - search facility

Functionality to search by keyword in Samplers Tree View

HTTP Request - raw request pane

Improve HTTP Request GUI to better show parameters without name (GWT RPC request or SOAP request for example)

HTTP Request - other changes

HTTP Request - file protocol

Better support for file: protocol in HTTP sampler

Retrieve embedded resources with file: protocol

HTTP Request - Ignore embedded resources failed

Enable "ignore failed" for embedded resources

Parent success with a embedded resource failed

View Results in Table - child sample display

Add option to TableVisualiser to display child samples instead of parent

Key Store - multiple certificates

Allowing multiple certificates (JKS)

Aggregate graph improvements

Some improvements on Aggregate Graph Listener:

Aggregate Graph bar

Counter - new reset option

Add an option to reset counter on each Thread Group iteration

Functions

User Defined Variable improvements

View Results Tree

In View Results Tree rather than showing just a message if the results are to big, show as much of the result as are configured

Controllers - change elements

Add ability to Change Controller elements

JDBC pre- and post-processor

Add JDBC pre- and post-processor

JDBC transaction isolation option

Allow to set the transaction isolation in the JDBC Connection Configuration

Poisson Timer

Add a Poisson based timer

GUI and OS interaction

Support for file Drag and Drop.

Confirm Remove Dialog box

Add a dialog box to confirm removing the element(s) when Remove action is called

The dialogue can be skipped by setting the JMeter property confirm.delete.skip=true

Remote batching support

Use external store to hold samples during distributed testing, Added DiskStore remote sample sender: like Hold, but saves samples to disk until end of test

JMS Subscriber sampler

With JMS Subscriber, ability to use Selectors

New Logger Panel

A new Log Viewer has been added to the GUI and can be enabled from menu Options → Log Viewer:

This Log Viewer shows the jmeter.log file, and useful (for example) to debug BeanShell/BSF scripts:

The menu item Options / Choose Language is now fully functional

The menu item Options / Choose Language now changes all the displayed text to the new language provided all messages are translated. You can help on this by translating into your language.

Legacy JMX and JTL Avalon format support restored

Support for reading/writing the original Avalon XML format of JMX (script) and JTL (sample result) files was dropped in JMeter version 2.4. JMeter can now read the Avalon format files again, however there is no support for saving files in the old format.

JMeter jars available from Maven repository

JMeter jars are now available from Maven repository.

Known bugs

The Include Controller has some problems in non-GUI mode (see Bugs 40671, 41286, 44973, 50898). In particular, it can cause a NullPointerException if there are two include controllers with the same name.

The Once Only controller behaves correctly under a Thread Group or Loop Controller, but otherwise its behaviour is not consistent (or clearly specified).

Listeners don't show iteration counts when a If Controller has a condition which is always false from the first iteration (see Bug 52496). A workaround is to add a sampler at the same level as (or superior to) the If Controller. For example a Test Action sampler with 0 wait time (which doesn't generate a sample), or a Debug Sampler with all fields set to False (to reduce the sample size).

Incompatible changes

JMeter versions since 2.1 failed to create a container sample when loading embedded resources. This has been corrected; can still revert to the Bug 51939 behaviour by setting the following property: httpsampler.separate.container=false

Mirror server now uses default port 8081, was 8080 before 2.5.1.

TCP Sampler handles SocketTimeoutException, SocketException and InterruptedIOException differently since 2.6, when these occurs, Sampler is marked as failed.

Sample Sender implementations now resolve their configuration on Client side since 2.6. This behaviour can be changed with property sample_sender_client_configured (set it to false).

The HTTP User Parameter Modifier test element has been removed; it has been deprecated for a long time.

Bug fixes

HTTP Samplers and Proxy

Other Samplers

Controllers

Listeners

Assertions

Functions

I18N

General

Improvements

HTTP Samplers

Other samplers

Controllers

Listeners

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

Functions

I18N

General