2016-5-19昨日,Jmeter又更新了新版本。

  那么新版本有哪些新特性呢?

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:

  • IfController
  • JSR223 Test elements with javascript language selected
  • __javaScript function

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:

  • APDEX (Application Performance Index) table that computes the APDEX based on configurable values for tolerated and satisfied thresholds
  • A request summary graph showing the Success and failed transaction percentage:
  • A Statistics table providing in one table a summary of all metrics per transaction including 3 configurable percentiles :
  • An error table providing a summary of all errors and their proportion in the total requests :
  • Zoomable chart where you can check/uncheck every transaction to show/hide it for:
    • Response times Over Time :
    • Bytes throughput Over Time :
    • Latencies Over Time :
    • Hits per second :
    • Response codes per second :
    • Transactions per second :
    • Response Time vs Request per second :
    • Latency vs Request per second :
    • Response times percentiles :
    • Active Threads Over Time :
    • Times vs Threads :
    • Response Time Distribution :

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:

  • Support of recent RFC like HTTP State Management Mechanism RFC-6265 for Cookies, you should use now HC4CookieHandler in HTTP Cookie Manager component and select standard Cookie policy
  • Server Name Indication (SNI) support for HttpClient4 implementation
  • Improved and better performing validation mechanism for Stale connections and Keep-Alive management, see properties httpclient4.validate_after_inactivity and httpclient4.time_to_live
  • Many bug fixes since previous version 4.2.6 used in JMeter 2.13, see HttpClient 4.5.X release notes
  • Better support of HTTP RFC 2616 / RFC 7230 and fixes to issues with deflate compression management

Parallel Downloads is now realistic and scales much better:

  • Parsing of CSS imported files (through @import) or embedded resources (background, images, …)
  • Lazy initialization of SSL context: For 15 Threads 138% more sampling in 5 minutes for HTTP only tests. Gain increases as number of threads increases
  • Rework of Connection management for Parallel Download: This better simulates current browser behaviour and improves throughput. For 15 Threads 135% extra samples in 5 minutes.
  • Reuse of Threads used for Parallel downloads through a ThreadPool: This improves throughput and increases JMeter scalability for such tests
  • Total of 750% more throughput found on test with 15 threads, the more threads you have the more the gain
  • You can now compute and store just the MD5 of embedded resources instead of storing the entire response, this can be done by setting the property httpsampler.embedded_resources_use_md5=true

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

  • Add most used elements
    (Ctrl + 0

    Ctrl + 9),
    configurable through gui.quick_XXX properties
  • Shortcuts to expand nodes

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

  • Migration to Java7 source code and use of its syntactic sugar
  • Major code cleanups
  • Full review of documentation and improvement both in content and presentation

Improvements to unit tests

  • Migration of many tests to JUnit 4
  • Better management of Headless tests
  • More Unit Tests

Dependencies refresh

Deprecated Libraries dropped or replaced by up to date ones:

  • Excalibur replaced by commons-dbcp
  • htmllexer, htmlparser removed
  • soap removed
  • jdom removed

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

  • Since version 3.0, Groovy-2.4.6 is bundled with JMeter (lib folder), ensure you remove old version or referenced versions through properties search_paths or user.classpath
  • Since version 3.0, jmeter.save.saveservice.assertion_results_failure_message
    property value is true, meaning CSV file for results will contain an
    additional column containing assertion result response message, see Bug
    58978
  • Since version 3.0, jmeter.save.saveservice.print_field_names property value is true, meaning CSV file for results will contain field names as first line in CSV, see Bug
    58991
  • Since version 3.0, jmeter.save.saveservice.idle_time
    property value is true, meaning CSV/XML result files will contain an
    additional column containing idle time between samplers, see Bug
    57182
  • In RandomTimer class, protected instance timer field has been replaced by getTimer() protected method, this is related to Bug
    58100
    . This may impact 3rd party plugins.
  • Since version 3.0, you can use Nashorn Engine (default
    javascript engine is Rhino) under Java8 for Elements that use Javascript
    Engine (__javaScript, IfController). If you want to use it, use property javascript.use_rhino=false, see Bug
    58406
    .

     
    Note: in a future
    version, we will switch to Nashorn by default. Users are encouraged to
    report any issue related to using Nashorn instead of Rhino.
  • Since version 3.0, JMS Publisher will reload contents of file if Message source is "From File" and the "Filename" field changes (e.g. if it uses a variable that has changed)
  • org.apache.jmeter.gui.util.ButtonPanel has been removed, if you use it in your 3rd party plugin or custom development ensure you update your code. See Bug
    58687
  • Property jmeterthread.startearlier has been removed. See Bug
    58726
  • Property jmeterengine.startlistenerslater has been removed. See Bug
    58728
  • Property jmeterthread.reversePostProcessors has been removed. See Bug
    58728
  • Property jmeter.toolbar.display has been removed, the toolbar is now always displayed. See Bug
    59236
  • Property jmeter.errorscounter.display has been removed, the errors/warnings counter is now always displayed. See Bug
    59236
  • Property xml.parser has been removed, it is not used anymore as org.apache.jmeter.util.JMeterUtils#getXMLParser has been deprecated and is not used either. See Bug
    59236
  • Summariser listener now shows the duration in the format HH:mm:ss (Hour:Minute:Second), it previously showed the duration in seconds. See Bug
    58776
  • org.apache.jmeter.protocol.http.visualizers.RequestViewHTTP.getQueryMap signature has changed, if you use it ensure you update your code. See Bug
    58845
  • JMS Subscriber will consider a sample to be an error if the
    number of received messages is not equal to expected number of messages.
    It previously considered a sample OK if at least 1 message was
    received. See Bug
    58980
  • Since version 3.0, HTTP(S) Test Script recorder defaults to using port 8888 (as configured when using Recording Template). See Bug
    59006
  • Since version 3.0, the parser for embedded resources (replaced
    since 2.10 by Lagarto based implementation) which relied on the
    htmlparser library (HtmlParserHTMLParser) has been dropped along with
    its dependencies.
  • Since version 3.0, support for reading old Avalon format JTL (result) files has been removed, see Bug
    59064
  • Since version 3.0, the default property value for http.java.sampler.retries has been changed to 0 (no retry by default) to align it with the behaviour of HttpClient4.
     
    Note also that its meaning has changed: before 3.0, http.java.sampler.retries=1 meant No Retry (i.e. total tries = 1), since 3.0 http.java.sampler.retries=1 means 1 retry.
    (Note: this only applies to the Java HTTP Sampler)
     

    See Bug
    59103

  • Since 3.0, the following deprecated classes have been dropped
    • org.apache.jmeter.protocol.http.modifier.UserParameterXMLContentHandler
    • org.apache.jmeter.protocol.http.modifier.UserParameterXMLErrorHandler
    • org.apache.jmeter.protocol.http.modifier.UserParameterXMLParser
  • httpsampler.await_termination_timeout has been replaced by httpsampler.parallel_download_thread_keepalive_inseconds which is now the keep alive time for the parallel download threads (in seconds).
  • JDBC Request has been updated to use commons-dbcp2, since then
    the behaviour is slightly different, ensure you have a correct
    "Validation Query" for your database. See Bug
    58786
  • The following jars have been removed:
  • Maximum number of redirects allowed by JMeter is now 20, it was previously 5. This can be changed with the property httpsampler.max_redirects. See Bug
    59382

Deprecated and removed elements

  • MongoDB elements (MongoDB Source Config, MongoDB Script) have
    been deprecated and will be removed in the next version of JMeter. They
    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. See Bug
    58772
  • WebService(SOAP) Request and HTML Parameter Mask which were deprecated in 2.13 version, have now been removed following our deprecation strategy.
    Classes and properties which were only used by those elements have been dropped:

    • org.apache.jmeter.protocol.http.util.DOMPool
    • org.apache.jmeter.protocol.http.util.WSDLException
    • org.apache.jmeter.protocol.http.util.WSDLHelper
    • Property soap.document_cache
    • JAR soap-2.3.1 has been also removed
  • __jexl function (i.e. JEXL 1) has been deprecated and will be removed in next version. See Bug
    58903
  • Spline Visualizer listener and Distribution Graph listener have
    been deprecated and will be removed in the next version of JMeter. They
    do not appear anymore in the menu, if you need them modify not_in_menu property. JMeter team advises not to use them anymore. See Bug
    58791

Improvements

HTTP Samplers and Test Script Recorder

  • Bug
    57696

    -
    HTTP Request : Improve responseMessage when resource download fails.
    Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug
    57995

    -
    Use FileServer for HTTP Request files. Implemented by Andrey Pokhilko
    (andrey at blazemeter.com) and contributed by BlazeMeter Ltd.
  • Bug
    58843

    -
    Improve the usable space in the HTTP sampler GUI. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58852

    -
    Use less memory for PUT requests. The uploaded data will no longer be stored in the Sampler.
    This is the same behaviour as with POST requests.
  • Bug
    58860

    -
    HTTP Request : Add automatic variable generation in HTTP parameters
    table by right click. Contributed by Benoit Wiart (benoit dot wiart at
    gmail.com)
  • Bug
    58923

    -
    normalize URIs when downloading embedded resources.
  • Bug
    59005

    -
    HTTP Sampler : Added WebDAV verb (SEARCH).
  • Bug
    59006

    -
    Change Default proxy recording port to 8888 to align it with Recording Template. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug
    58099

    -
    Performance : Lazily initialize HttpClient SSL Context to avoid its initialization even for HTTP only scenarios
  • Bug
    57577

    -
    HttpSampler : Retrieve All Embedded Resources, add property "httpsampler.embedded_resources_use_md5" to only compute md5 and not keep response data. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    59023

    -
    HttpSampler UI : rework the embedded resources labels and change default number of parallel downloads to 6. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    59028

    -
    Use SystemDefaultDnsResolver singleton. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    59036

    -
    FormCharSetFinder : Use JSoup instead of deprecated HTMLParser
  • Bug
    59034

    -
    Parallel downloads connection management is not realistic. Contributed
    by Benoit Wiart (benoit dot wiart at gmail.com) and Philippe Mouawad
  • Bug
    59060

    -
    HTTP Request GUI : Move File Upload to a new Tab to have more space
    for parameters and prevent incompatible configuration. Contributed by
    Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    59103

    -
    HTTP Request Java Implementation: Change default "http.java.sampler.retries" to align it on HttpClient behaviour and make the name meaningful
  • Bug
    59083

    -
    HTTP Request : Make Method field editable so that additional methods (WebDAV) can be added easily
  • Bug
    59118

    -
    Add comment in recorded think time by proxy recorder. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug
    59116

    -
    Add the possibility to setup a prefix to sampler name recorded by
    proxy. Partly based on a patch by Antonio Gomes Rodrigues (ra0077 at
    gmail.com)
  • Bug
    59129

    -
    HTTP Request : Simplify GUI with simple/advanced Tabs
  • Bug
    59033

    -
    Parallel Download : Rework Parser classes hierarchy to allow plug-in parsers for different mime types
  • Bug
    52073

    -
    Embedded Resources Parallel download : Improve performances by
    avoiding shutdown of ThreadPoolExecutor at each sample. Contributed by
    Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    59190

    -
    HTTP(S) Test Script Recorder : Suggested excludes should ignore case.
    Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug
    59140

    -
    Parallel Download : Add CSS Parsing to extract links from CSS files
  • Bug
    59249

    -
    Http Request Defaults : Add "Source address" and "Save responses as MD5"
  • Bug
    59382

    -
    More realistic default value for httpsampler.max_redirects

Other samplers

  • Bug
    57928

    -
    Add ability to define protocol (http/https) to AccessLogSampler GUI. Contributed by Jérémie Lesage (jeremie.lesage at jeci.fr)
  • Bug
    58300

    -
    Make existing Java Samplers implement Interruptible
  • Bug
    58160

    -
    JMS Publisher : reload file content if file name changes. Based partly
    on a patch contributed by Maxime Chassagneux (maxime.chassagneux at
    gmail.com)
  • Bug
    58786

    -
    JDBC Sampler : Replace Excalibur DataSource by more up to date library commons-dbcp2
  • Bug
    59205

    -
    TCP Sampler: Set connect time in sampler when connection is established.
  • Bug
    59381

    -
    JMSPublisher : FileChooserDialog filter does not work for browser
    buttons. Based partly on a patch contributed by Antonio Gomes Rodrigues
    (ra0077 at gmail.com)

Controllers

  • Bug
    58406

    -
    IfController : Allow use of Nashorn Engine if available for JavaScript evaluation
  • Bug
    58281

    -
    RandomOrderController : Improve randomization algorithm performance. Contributed by Graham Russell (jmeter at ham1.co.uk)
  • Bug
    58675

    -
    Module controller : error message can easily be missed. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58673

    -
    Module controller : when the target element is disabled the default
    jtree icons are displayed. Contributed by Benoit Wiart (benoit dot wiart
    at gmail.com)
  • Bug
    58674

    -
    Module controller : it should not be possible to select more than one
    node in the tree. Contributed by Benoit Wiart (benoit dot wiart at
    gmail.com)
  • Bug
    58680

    -
    Module Controller : ui enhancement. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58989

    -
    Record controller gui : add a button to clear all the recorded
    samples. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)

Listeners

  • Bug
    58041

    -
    Tree View Listener should show sample data type
  • Bug
    58122

    -
    GraphiteBackendListener : Add Server Hits metric. Partly based on a patch from Amol Moye (amol.moye at thomsonreuters.com)
  • Bug
    58681

    -
    GraphiteBackendListener : Don't send data if no sampling occurred
  • Bug
    58776

    -
    Summariser should display a more readable duration
  • Bug
    58791

    -
    Deprecate listeners: Distribution Graph (alpha) and Spline Visualizer
  • Bug
    58849

    -
    View Results Tree : Add a search panel to the request http view to be
    able to search in the parameters table. Contributed by Benoit Wiart
    (benoit dot wiart at gmail.com)
  • Bug
    58857

    -
    View Results Tree : the request view http does not allow to resize the
    parameters table first column. Contributed by Benoit Wiart (benoit dot
    wiart at gmail.com)
  • Bug
    58955

    -
    Request view http does not correctly display http parameters in
    multipart/form-data. Contributed by Benoit Wiart (benoit dot wiart at
    gmail.com)
  • Bug
    55597

    -
    View Results Tree: Add a search feature to search in recorded samplers
  • Bug
    59102

    -
    View Results Tree: Better default value for "view.results.tree.max_size"
  • Bug
    59099

    -
    Backend listener : Add the possibility to consider samplersList as a
    Regular Expression. Contributed by Antonio Gomes Rodrigues (ra0077 at
    gmail.com)
  • Bug
    59424

    -
    Visualizer : Add "Clear" in popup menu

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

  • Bug
    58303

    -
    Change usage of bouncycastle api in SMIMEAssertion to get rid of deprecation warnings.
  • Bug
    58515

    -
    New JSON related components : JSON-PATH Extractor and JSON-PATH
    Renderer in View Results Tree. Donated by Ubik Load Pack (support at
    ubikloadpack.com).
  • Bug
    58698

    -
    Correct parsing of auth-files in HTTP Authorization Manager.
  • Bug
    58756

    -
    CookieManager : Cookie Policy select box content must depend on Cookie implementation.
  • Bug
    56358

    -
    Cookie manager supports cross port cookies and RFC6265. Thanks to Oleg Kalnichevski (olegk at apache.org)
  • Bug
    58773

    -
    TestCacheManager : Add tests for CacheManager that use HttpClient 4
  • Bug
    58742

    -
    CompareAssertion : Reset data in TableEditor when switching between different CompareAssertions in gui.
    Based on a patch by Vincent Herilier (vherilier at gmail.com)
  • Bug
    59108

    -
    TableEditor: Allow rows to be moved up and down. Contributed by Vincent Herilier (vherilier at gmail.com)
  • Bug
    58848

    -
    Argument Panel : when adding an argument (add button or from
    clipboard) scroll the table to the new line. Contributed by Benoit Wiart
    (benoit dot wiart at gmail.com)
  • Bug
    58865

    -
    Allow empty default value in the Regular Expression Extractor. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    59156

    -
    XMLAssertion : drop jdom dependency by using XMLReader
  • Bug
    59328

    -
    Better tooltip for Variable Names in CSVDataSet. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)

Functions

  • Bug
    58477

    -
    __javaScript function : Allow use of Nashorn engine for Java8 and later versions
  • Bug
    58903

    -
    Provide __jexl3 function that uses commons-jexl3 and deprecated __jexl (1.1) function

I18N

General

  • Bug
    58736

    -
    Add Sample Timeout support
  • Bug
    57913

    -
    Automated backups of last saved JMX files. Contributed by Benoit Vatan (benoit.vatan at gmail.com)
  • Bug
    57988

    -
    Shortcuts (Ctrl + 1 …
    Ctrl + 9) to quickly add elements into test plan.
    Implemented by Andrey Pokhilko (andrey at blazemeter.com) and contributed by BlazeMeter Ltd.
  • Bug
    58100

    -
    Performance enhancements : Replace Random by ThreadLocalRandom.
  • Bug
    58677

    -
    TestSaveService#testLoadAndSave use the wrong set of files. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58689

    -
    Add shortcuts to expand / collapse a part of the tree. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58696

    -
    Create Ant task to setup Eclipse project
  • Bug
    58653

    -
    New JMeter Dashboard/Report with Dynamic Graphs, Tables to help
    analyzing load test results. Developed by Ubik-Ingenierie and
    contributed by Decathlon S.A. and Ubik-Ingenierie / UbikLoadPack
  • Bug
    58699

    -
    Workbench changes neither saved nor prompted for saving upon close.
    Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58728

    -
    Drop old behavioural properties
  • Bug
    57319

    -
    Upgrade to HttpClient 4.5.2. With the big help from Oleg Kalnichevski
    (olegk at apache.org) and Gary Gregory (ggregory at apache.org).
  • Bug
    58772

    -
    Deprecate MongoDB related elements
  • Bug
    58782

    -
    ThreadGroup : Improve ergonomy
  • Bug
    58165

    -
    Show the time elapsed since the start of the load test in GUI mode.
    Partly based on a contribution from Maxime Chassagneux
    (maxime.chassagneux at gmail.com)
  • Bug
    58814

    -
    JVM no longer recognizes option MaxLiveObjectEvacuationRatio; remove from comments
  • Bug
    58810

    -
    Config Element Counter (and others): Check Boxes Toggle Area Too Big
  • Bug
    56554

    -
    JSR223 Test Element : Generate compilation cache key automatically.
    Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58911

    -
    Header Manager : it should be possible to copy/paste between Header
    Managers. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58864

    -
    Arguments Panel : when moving parameter with up / down, ensure that
    the selection remains visible. Based on a contribution by Benoit Wiart
    (benoit dot wiart at gmail.com)
  • Bug
    58968

    -
    Add a new template to allow to record script with think time included.
    Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug
    58978

    -
    Settings defaults : Switch "jmeter.save.saveservice.assertion_results_failure_message" to true (after 2.13)
  • Bug
    58991

    -
    Settings defaults : Switch "jmeter.save.saveservice.print_field_names" to true (after 2.13)
  • Bug
    57182

    -
    Settings defaults : Switch "jmeter.save.saveservice.idle_time" to true (after 2.13)
  • Bug
    58870

    -
    TableEditor: minimum size is too small. Contributed by Vincent Herilier (vherilier at gmail.com)
  • Bug
    58933

    -
    JSyntaxTextArea : Ability to set font. Contributed by Denis Kirpichenkov (denis.kirpichenkov at gmail.com)
  • Bug
    58793

    -
    Create developers page explaining how to build and contribute
  • Bug
    59046

    -
    JMeter Gui Replace controller should keep the name and the selection.
    Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    59038

    -
    Deprecate HTTPClient 3.1 related elements
  • Bug
    59094

    -
    Drop support of old JMX file format
  • Bug
    59082

    -
    Remove the "TestCompiler.useStaticSet" parameter. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    59093

    -
    Option parsing error message can be 'lost'
  • Bug
    58715

    -
    Feature request: Bundle groovy-all with JMeter
  • Bug
    58426

    -
    Improve display of JMeter on high resolution devices (HiDPI) (part 1 of enhancement)
  • Bug
    59105

    -
    TableEditor : Add ability to paste rows from clipboard and delete
    multiple selection. Contributed by Vincent Herilier (vherilier at
    gmail.com)
  • Bug
    59197

    -
    Thread Group : it should be possible to only run a single threadgroup
    or a selection of threadgroups with a popup menu. Contributed by Benoit
    Wiart (benoit dot wiart at gmail.com)
  • Bug
    59207

    -
    Change the font color of errorsOrFatalsLabel to red when an error occurs. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug
    58941

    -
    Create a new Starter that runs thread groups in validation mode (1 thread only, 1 iteration, no pause all customizable)
  • Bug
    59236

    -
    JMeter Properties : Make some cleanup
  • Bug
    59240

    -
    Introduce a slf4j adapter for Logkit (this allows using slf4j within plugins and core code)
  • Bug
    59153

    -
    Stop test if CSVDataSet is accessing non-existing file. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug
    59320

    -
    Better tooltip in GUI with GenericTestBeanCustomizer (CSV Data Set
    Config, JDBC Connection Configuration, Keystore Configuration, …) .
    Based on a patch by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug
    59171

    -
    Sample Result SaveConfig Dialog is generated in random order
  • Bug
    59425

    -
    Display error about missing help page inside the help pane

Non-functional changes

  • Updated to httpclient, httpmime 4.5.2 (from 4.2.6)
  • Updated to tika-core and tika-parsers 1.12 (from 1.7)
  • Updated to commons-math3 3.6.1 (from 3.4.1)
  • Updated to commons-pool2 2.4.2 (from 2.3)
  • Updated to commons-lang 3.4 (from 3.3.2)
  • Updated to rhino-1.7.7.1 (from 1.7R5)
  • Updated to jodd-3.6.7.jar (from 3.6.4)
  • Updated to jsoup-1.8.3 (from 1.8.1)
  • Updated to rsyntaxtextarea-2.5.8 (from 2.5.6)
  • Updated to slf4j-1.7.12 (from 1.7.10)
  • Updated to xmlgraphics-commons-2.0.1 (from 1.5)
  • Updated to commons-collections-3.2.2 (from 3.2.1)
  • Updated to commons-net 3.4 (from 3.3)
  • Updated to slf4j 1.7.13 (from 1.7.12)
  • Bug
    57981

    -
    Require a minimum of Java 7. Partly contributed by Graham Russell (jmeter at ham1.co.uk)
  • Bug
    58684

    -
    JMeterColor does not need to extend java.awt.Color. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58687

    -
    ButtonPanel should die. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58705

    -
    Make org.apache.jmeter.testelement.property.MultiProperty iterable. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58729

    -
    Cleanup extras folder for maintainability
  • Bug
    57110

    -
    Fixed spelling+grammar, formatting, removed commented out code etc. Contributed by Graham Russell (jmeter at ham1.co.uk)
  • Correct instructions on running JMeter in help.txt. Contributed by Pascal Schumacher (pascalschumacher at gmx.net)
  • Bug
    58704

    -
    Non regression testing : Ant task batchtest fails if tests and run in a non en_EN locale and use a JMX file that uses a CSV DataSet
  • Bug
    58897

    -
    Improve JUnit Test code. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58949

    -
    Cleanup of LDAP code. Based on a patch by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58897

    -
    Improve JUnit Test code. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58967

    -
    Use JUnit categories to exclude tests that need a gui. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    59003

    -
    ClutilTestCase testSingleArg8 and testSingleArg9 are identical
  • Bug
    59064

    -
    Remove OldSaveService which supported very old Avalon format JTL (result) files
  • Bug
    59165

    -
    RSyntaxTextArea not compatible with headless testing
  • Bug
    59021

    -
    Use Double#compare instead of reimplementing it in NumberProperty#compareTo
  • Bug
    59037

    -
    Drop HtmlParserHTMLParser and dependencies on htmlparser and htmllexer
  • Bug
    58465

    -
    JMS Read response field is badly named and documented
  • Bug
    58601

    -
    Change check for modification of saveservice.properties from SVN Revision ID to sha1 sum of the file itself.
  • Bug
    58726

    -
    Remove the jmeterthread.startearlier parameter. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58784

    -
    Make JMeterUtils#runSafe sync/async awt invocation configurable and change the visualizers to use the async version.
  • Bug
    58790

    -
    Issue in CheckDirty and its relation to ActionRouter
  • Bug
    59095

    -
    Remove UserParameterXMLParser that was deprecated eight years ago. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    59262

    -
    Add list of binary jars to LICENSE; use that for unit tests
  • Bug
    59353

    -
    Add "Deprecated and removed elements" in "Incompatible changes" part
    in changes.xml. Contributed by Antonio Gomes Rodrigues (ra0077 at
    gmail.com)

Bug fixes

HTTP Samplers and Test Script Recorder

  • Bug
    57806

    -
    "audio/x-mpegurl" mime type is erroneously considered as binary by ViewResultsTree. Contributed by Ubik Load Pack (support at ubikloadpack.com).
  • Bug
    57858

    -
    Don't call sampleEnd twice in HTTPHC4Impl when a RuntimeException or an IOException occurs in the sample method.
  • Bug
    57921

    -
    HTTP/1.1 without keep-alive "Connection" response header no longer uses infinite keep-alive.
  • Bug
    57956

    -
    The hc.parameters reference in jmeter.properties doesn't work when JMeter is not started in bin.
  • Bug
    58137

    -
    JMeter fails to download embedded URLs that contain illegal characters in URL (it does not escape them).
  • Bug
    58201

    -
    Make usage of port in the host header more consistent across the different http samplers.
  • Bug
    58453

    -
    HTTP Test Script Recorder : NullPointerException when disabling Capture HTTP Headers
  • Bug
    57804

    -
    HTTP Request doesn't reuse cached SSL context when using Client
    Certificates in HTTPS (only fixed for HttpClient4 implementation)
  • Bug
    58800

    -
    proxy.pause default value: fix documentation
  • Bug
    58844

    -
    Buttons enable / disable is broken in the arguments panel. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58861

    -
    When clicking on up, down or detail while in a cell of the argument
    panel, newly added content is lost. Contributed by Benoit Wiart (benoit
    dot wiart at gmail.com)
  • Bug
    57935

    -
    SSL SNI extension not supported by HttpClient 4.2.6
  • Bug
    59044

    -
    Http Sampler : It should not be possible to select the multipart encoding if the method is not POST. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    59008

    -
    Http Sampler: Infinite recursion SampleResult on frame depth limit reached
  • Bug
    58881

    -
    HTTP Request : HTTPHC4Impl shows exception when server uses "deflate" compression
  • Bug
    58583

    -
    HTTP client fails to close connection if server misbehaves by not sending "connection: close", violating HTTP RFC 2616 / RFC 7230
  • Bug
    58950

    -
    NoHttpResponseException when Pause between samplers exceeds keepalive sent by server
  • Bug
    59085

    -
    Http file panel : data lost on browse cancellation. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    56141

    -
    Application does not behave correctly when using HTTP Recorder. With the help of Dan (java.junkee at yahoo.com)
  • Bug
    59079

    -
    "httpsampler.max_redirects" property is not enforced when "Redirect Automatically" is used
  • Bug
    58811

    -
    When pasting arguments between http samplers the column "Encode" and
    "Include Equals" are lost. Contributed by Benoit Wiart (benoit dot wiart
    at gmail.com)

Other Samplers

  • Bug
    58013

    -
    Enable all protocols that are enabled on the default SSLContext for usage with the SMTP Sampler.
  • Bug
    58209

    -
    JMeter hang when testing javasampler because HashMap.put() is called from multiple threads without sync.
  • Bug
    58301

    -
    Use typed methods such as setInt, setDouble, setDate, … for prepared statement #27
  • Bug
    58851

    -
    Add a dependency on hamcrest-core to allow JUnit tests with annotations to work
  • Bug
    58947

    -
    Connect metric is wrong when ConnectException occurs
  • Bug
    58980

    -
    JMS Subscriber will return successful as long as 1 message is
    received. Contributed by Harrison Termotto (harrison dot termotto at
    stonybrook.edu)
  • Bug
    59075

    -
    JMS Publisher: NumberFormatException is thrown if priority or expiration field is empty
  • Bug
    59345

    -
    SMTPSampler connection leak. Based on a patch by Luca Maragnani (luca dot maragnani at gmail dot com)

Controllers

  • Bug
    58600

    -
    Display correct filenames, when they are searched by IncludeController
  • Bug
    58678

    -
    Module Controller : limit target element selection. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58714

    -
    Module controller : it should not be possible to add a timer as child.
    Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    59067

    -
    JMeter fails to iterate over Controllers that are children of a TransactionController having "Generate parent sample" checked after an assertion error occurs on a Thread Group with "Start Next Thread Loop". Contributed by Benoit Wiart(benoit dot wiart at gmail.com)
  • Bug
    59076

    -
    Test should fail if a module controller cannot find its replacement subtree

Listeners

  • Bug
    58033

    -
    SampleResultConverter should note that it cannot record non-TEXT data
  • Bug
    58845

    -
    Request http view doesn't display all the parameters. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58413

    -
    ViewResultsTree : Request HTTP Renderer does not show correctly
    parameters that contain ampersand (&). Contributed by Benoit Wiart
    (benoit dot wiart at gmail.com)
  • Bug
    59172

    -
    SampleResult SaveConfig does not allow some fields to be disabled
  • Bug
    58329

    -
    Response Time Graph and Aggregate Graph : Save graph to file does not
    take into account the settings changed since last click on Graph.
    Contributed by David Coppens (d.l.coppens at gmail.com)

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

  • Bug
    58079

    -
    Do not cache HTTP samples that have a Vary header when using a HTTP CacheManager.
  • Bug
    58912

    -
    Response assertion gui : Deleting more than 1 selected row deletes
    only one row. Contributed by Benoit Wiart (benoit dot wiart at
    gmail.com)

Functions

  • Bug
    57825

    -
    __Random function fails if min value is equal to max value (regression related to Bug
    54453
    )

I18N

General

  • Bug
    54826

    -
    Don't fail on long strings in JSON responses when displaying them as JSON in View Results Tree.
  • Bug
    57734

    -
    Maven transient dependencies are incorrect for 2.13 (Fixed group ids for Commons Pool and Math)
  • Bug
    57731

    -
    TESTSTART.MS has always the value of the first Test started in Server mode in NON GUI Distributed testing
  • Bug
    58016

    -
    Error type casting using external SSL Provider. Contributed by Kirill Yankov (myworkpostbox at gmail.com)
  • Bug
    58293

    -
    SOAP/XML-RPC Sampler file browser generates NullPointerException
  • Bug
    58685

    -
    JDatefield : Make the modification of the date with up/down arrow
    work. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    58693

    -
    Fix "Cannot nest output folder 'jmeter/build/components' inside output folder 'jmeter/build'" when setting up eclipse
  • Bug
    58781

    -
    Command line option "-?" shows Unknown option
  • Bug
    57821

    -
    Command-line option "-X --remoteexit" doesn't work since 2.13 (regression related to Bug
    57500
    )
  • Bug
    58795

    -
    NPE may occur in GuiPackage#getTestElementCheckSum with some 3rd party plugins
  • Bug
    58913

    -
    When closing JMeter should not interpret cancel as "destroy my test plan". Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
  • Bug
    59096

    -
    Search Feature : Case insensitive search is not really case insensitive
  • Bug
    59193

    -
    ant run_gui fails with ClassNotFoundException or IllegalAccessError when accessing classes from dependencies not loaded through Thread.currentThread().getContextClassLoader()
  • Bug
    59225

    -
    Bad display of running indicator icon. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Bug
    56927

    -
    Disable language change during a test
  • Bug
    59391

    -
    In Distributed mode, the client exits abnormally at the end of test
  • Bug
    59397

    -
    build.xml does not make dist.executables executable on Unix systems

Thanks

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

  • Ubik Load Pack
  • Benoit Vatan (benoit.vatan at gmail.com)
  • Jérémie Lesage (jeremie.lesage at jeci.fr)
  • Kirill Yankov (myworkpostbox at gmail.com)
  • Amol Moye (amol.moye at thomsonreuters.com)
  • Samoht-fr (https://github.com/Samoht-fr)
  • Graham Russell (jmeter at ham1.co.uk)
  • Maxime Chassagneux (maxime.chassagneux at gmail.com)
  • Benoit Wiart (benoit.wiart at gmail.com)
  • Decathlon S.A.
  • Ubik-Ingenierie S.A.S.
  • Oleg Kalnichevski (olegk at apache.org)
  • Pascal Schumacher (pascalschumacher at gmx.net)
  • Vincent Herilier (vherilier at gmail.com)
  • Florent Sabbe (f dot sabbe at ubik-ingenierie.com)
  • Antonio Gomes Rodrigues (ra0077 at gmail.com)
  • Harrison Termotto (harrison dot termotto at stonybrook.edu
  • Denis Kirpichenkov (denis.kirpichenkov at gmail.com)
  • Gary Gregory (ggregory at apache.org)
  • David Coppens (d.l.coppens at gmail.com)
  • Luca Maragnani (luca dot maragnani at gmail dot com)
  • Philip Helger (http://www.helger.com) for his CSS Parser and for taking into account our bug reports very rapidly
  • Irek Pastusiak (the.automatic.tester at gmail.com)

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:

  • purnasatyap at gmail dot com for the tests and reports on nightly build
  • Sergey Batalin (sergey_batalin at mail dot ru) for the tests and reports on nightly build
  • Vincent Daburon (vdaburon at gmail dot com) for the tests and reports on nightly build

Apologies if we have omitted anyone else.

Known problems and workarounds

  • The Once Only controller behaves correctly under a Thread Group or Loop Controller,
    but otherwise its behaviour is not consistent (or clearly specified).
  • The numbers that appear to the left of the green box are the number of active threads / total number of threads,
    the total number of threads only applies to a locally run test, otherwise it will show 0 (see Bug
    55510
    ).
  • 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. This issue is fixed since Java 7b05.

  • Note that under some windows systems you may have this WARNING:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.

    The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.

  • With Oracle Java 7 and Mac Book Pro Retina Display, the JMeter GUI may look blurry. This is a known Java bug, see Bug JDK-8000629. A workaround is to use a Java 7 update 40 runtime which fixes this issue.
  • You may encounter the following error:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints

    if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature algorithm using MD2 (like md2WithRSAEncryption) or with a SSL certificate with a size lower than 1024 bits. This error is related to increased security in Java 7 version u16 (MD2) and version u40 (Certificate size lower than 1024 bits), and Java 8 too.
    To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
    the Java jdk.certpath.disabledAlgorithms property. Remove the MD2 value or the constraint on size, depending on your case.

    This property is in this file:

    JAVA_HOME/jre/lib/security/java.security

    See Bug 56357 for details.

  • Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers. This is due to a known Java bug, see Bug JDK-8065373 The fix is to use JDK7_u79, JDK8_u45 or later.
  • View Results Tree may fail to display some HTML code under HTML renderer, see Bug 54586. This is due to a known Java bug which fails to parse "px" units in row/col attributes. See Bug JDK-8031109 The fix is to use JDK9 b65 or later.
  • JTable selection with keyboard (SHIFT + up/down) is totally unusable with JAVA 7 on Mac OSX. This is due to a known Java bug JDK-8025126 The fix is to use JDK 8 b132 or later.

  详情关注这里!http://jmeter.apache.org/changes.html

  关于报表配置,这里边是有些坑的,但是一般人看看文档,摸索一下,就很容易找着门道了。

  要看新报表,要改如下文件:

D:\Program Files\apache-jmeter\bin\saveservice.properties

  官方文档说,默认的配置就是这样,事实并不是这样。需要将这段配置复制过去。

jmeter.save.saveservice.bytes = true
jmeter.save.saveservice.label = true
jmeter.save.saveservice.latency = true
jmeter.save.saveservice.response_code = true
jmeter.save.saveservice.response_message = true
jmeter.save.saveservice.successful = true
jmeter.save.saveservice.thread_counts = true
jmeter.save.saveservice.thread_name = true
jmeter.save.saveservice.time = true
# the timestamp format must include the time and should include the date.
# For example the default, which is milliseconds since the epoch:
jmeter.save.saveservice.timestamp_format = ms
# Or the following would also be suitable
jmeter.save.saveservice.timestamp_format = yyyy/MM/dd HH:mm:ss
不然执行就会报错的。
控制台执行命令如下:
jmeter -n -t E:\PPmoney\PPmoneySOA.jmx -l e:test.csv -e -o e:report

  竟然对中文支持不友好,中文乱码。