Web压力测试工具,JMeter 2.12 发布

jopen 10年前

当前JMeter 2.12已经兼容Java 8.
 JMeter 是一个流行的用于负载测试的开源工具, 具有许多有用的功能元件,如线程组(thread group), 定时器(timer), 和HTTP 取样 (sampler) 元件。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。 Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器,网络 或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。 

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:

  • CDN (Content Delivery Network)
  • DNS load balancing.
  • Load Balancers like Amazon Elastic Load Balancer



Core Improvements


Smarter Recording of Http Test Plans

Test Script Recorder has been improved in many ways

  • Better matching of Variables in Requests, making Test Script Recorder variabilize your sampler during recording more versatile
  • Ability to filter from View Results Tree the Samples that are excluded from recording, this lets you concentrate on recorded Samplers analysis and not bother with useless Sample Results

  • Better defaults for recording, since this version Recorder will number created Samplers letting you find them much easily in View Results Tree. Grouping of Samplers under Transaction Controller will be smarter making all requests emitted by a web page be children as new Transaction Controller

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 conditionnal 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

  • 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 Java 1.6 and Gnome 3 on Linux systems, the JMeter menu may not work correctly (shift between mouse's click and the menu). This is a known Java bug (see Bug 54477 ). A workaround is to use a Java 7 runtime (OpenJDK or Oracle JDK).
  • 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.


Incompatible changes

  • Since JMeter 2.12, active threads in all thread groups and active threads in current thread group are saved by default to CSV or XML results, see Bug 57025 . This is usually the expected behaviour as you want to have the number of running threads during the test. But if you want to revert to previous behaviour, set property jmeter.save.saveservice.thread_counts=false
  • Since JMeter 2.12, Mail Reader Sampler will show 1 for number of samples instead of number of messages retrieved, see Bug 56539
  • Since JMeter 2.12, when using Cache Manager, if resource is found in cache no SampleResult will be created, in previous version a SampleResult with empty content and 204 return code was returned, see Bug 54778 . You can choose between different ways to handle this case, see cache_manager.cached_resource_mode in jmeter.properties.
  • Since JMeter 2.12, Log Viewer will no more clear logs when closed and will have logs available even if closed. See Bug 56920 . Read Hints and Tips > Enabling Debug logging for details on configuring this component.


Bug fixes

HTTP Samplers and Test Script Recorder

  • Bug 55998 - HTTP recording ? Replacing port value by user defined variable does not work
  • Bug 56178 - keytool error: Invalid escaped character in AVA: - some characters must be escaped
  • Bug 56222 - NPE if jmeter.httpclient.strict_rfc2616=true and location is not absolute
  • Bug 56263 - DefaultSamplerCreator should set BrowserCompatible Multipart true
  • Bug 56231 - Move redirect location processing from HC3/HC4 samplers to HTTPSamplerBase#followRedirects()
  • Bug 56207 - URLs get encoded on redirects in HC3.1 & HC4 samplers
  • Bug 56303 - The width of target controller's combo list should be set to the current panel size, not on label size of the controllers
  • Bug 54778 - HTTP Sampler should not return 204 when resource is found in Cache, make it configurable with new property cache_manager.cached_resource_mode

Other Samplers

  • Bug 55977 - JDBC pool keepalive flooding
  • Bug 55999 - Scroll bar on jms point-to-point sampler does not work when content exceeds display
  • Bug 56198 - JMSSampler : NullPointerException is thrown when JNDI underlying implementation of JMS provider does not comply with Context.getEnvironment contract
  • Bug 56428 - MailReaderSampler - should it use mail.pop3s.* properties?
  • Bug 46932 - Alias given in select statement is not used as column header in response data for a JDBC request.Based on report and analysis of Nicola Ambrosetti
  • Bug 56539 - Mail reader sampler: When Number of messages to retrieve is superior to 1, Number of samples should only show 1 not the number of messages retrieved
  • Bug 56809 - JMSSampler closes InitialContext too early. Contributed by Bradford Hovinen (hovinen at gmail.com)
  • Bug 56761 - JMeter tries to stop already stopped JMS connection and displays "The connection is closed"
  • Bug 57068 - No error thrown when negative duration is entered in Test Action
  • Bug 57078 - LagartoBasedHTMLParser fails to parse page that contains input with no type
  • Bug 57183 - JMSSampler: For input string: "" java.lang.NumberFormatException (for Expiration or Priority fields)

Controllers

  • Bug 56243 - Foreach works incorrectly with indexes on subsequent iterations
  • Bug 56276 - Loop controller becomes broken once loop count evaluates to zero
  • Bug 56160 - StackOverflowError when using WhileController within IfController
  • Bug 56811 - "Start Next Thread Loop" in Result Status Action Handler or on Thread Group and "Go to next Loop iteration" in Test Action behave incorrectly with TransactionController that has "Generate Parent Sampler" checked

Listeners

  • Bug 56706 - SampleResult#getResponseDataAsString() does not use encoding in response body impacting PostProcessors and ViewResultsTree. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 57052 - ArithmeticException: / by zero when sampleCount is equal to 0

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

  • Bug 56162 - HTTP Cache Manager should not cache PUT/POST etc.
  • Bug 56227 - AssertionGUI : NPE in assertion on mouse selection
  • Bug 41319 - URLRewritingModifier : Allow Parameter value to be url encoded

Functions

I18N

  • Bug 56111 - "comments" in german translation is not correct

General

  • Bug 56059 - Older TestBeans incompatible with 2.11 when using TextAreaEditor
  • Bug 56080 - Conversion error com.thoughtworks.xstream.converters.ConversionException with Java 8 Early Access Build
  • Bug 56182 - Can't trigger bsh script using bshclient.jar; socket is closed unexpectedly
  • Bug 56360 - HashTree and ListedHashTree fail to compile with Java 8
  • Bug 56419 - JMeter silently fails to save results
  • Bug 56662 - Save as xml in a listener is not remembered
  • Bug 56367 - JMeter 2.11 on maven central triggers a not existing dependency rsyntaxtextarea 2.5.1, upgrade to 2.5.3
  • Bug 56743 - Wrong mailing list archives on mail2.xml. Contributed by Felix Schumacher (felix.schumacher at internetallee.de)
  • Bug 56763 - Removing the Oracle icons, not used by JMeter (and missing license)
  • Bug 54100 - Switching languages fails to preserve toolbar button states (enabled/disabled)
  • Bug 54648 - JMeter GUI on OS X crashes when using CMD+C (keyboard shortcut or UI menu entry) on an element from the tree
  • Bug 56962 - JMS GUIs should disable all fields affected by jndi.properties checkbox
  • Bug 57061 - Save as Test Fragment fails to clone deeply selected node. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 57075 - BeanInfoSupport.MULTILINE attribute is not processed
  • Bug 57076 - BooleanPropertyEditor#getAsText() must return a value that is in getTags()
  • Bug 57088 - NPE in ResultCollector.testEnded


Improvements

HTTP Samplers and Test Script Recorder

  • Bug 55959 - Improve error message when Test Script Recorder fails due to I/O problem
  • Bug 52013 - Test Script Recorder's Child View Results Tree does not take into account Test Script Recorder excluded/included URLs. Based on report and analysis of James Liang
  • Bug 56119 - File uploads fail every other attempt using timers. Enable idle timeouts for servers that don't send Keep-Alive headers.
  • Bug 56272 - MirrorServer should support query parameters for status and redirects
  • Bug 56772 - Handle IE Conditional comments when parsing embedded resources
  • Bug 57026 - HTTP(S) Test Script Recorder : Better default settings. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 57107 - Patch proposal: Add DAV verbs to HTTP Sampler. Contributed by Philippe Jung (apache at famille-jung.fr)
  • Bug 56357 - Certificates does not conform to algorithm constraints: Adding a note to indicate how to remove of the Java installation these new security constraints

Other samplers

  • Bug 56033 - Add Connection timeout and Read timeout to SMTP Sampler
  • Bug 56429 - MailReaderSampler - no need to fetch all Messages if not all wanted
  • Bug 56427 - MailReaderSampler enhancement: read message header only
  • Bug 56510 - JMS Publisher/Point to Point: Add JMSPriority and JMSExpiration

Controllers

  • Bug 56728 - New Critical Section Controller to serialize blocks of a Test. Based partly on a patch contributed by Mikhail Epikhin(epihin-m at yandex.ru)
  • Bug 57145 - RandomController : Use ThreadLocalRandom instead of Random for better performances

Listeners

  • Bug 56228 - View Results Tree : Improve ergonomy by changing placement of Renderers and allowing custom ordering
  • Bug 56349 - "summary" is a bad name for a Generate Summary Results component, documentation clarified
  • Bug 56769 - Adds the ability for the Response Time Graph listener to save/restore format settings in/from the jmx file
  • Bug 57025 - SaveService : Better defaults, save thread counts by default

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

  • Bug 56691 - Synchronizing Timer : Add timeout on waiting
  • Bug 56701 - HTTP Authorization Manager/ Kerberos Authentication: add port to SPN when server port is neither 80 nor 443. Based on patches from Dan Haughey (dan.haughey at swinton.co.uk) and Felix Schumacher (felix.schumacher at internetallee.de)
  • Bug 56841 - New configuration element: DNS Cache Manager to improve the testing of CDN. Based on patch from Dzmitry Kashlach (dzmitrykashlach at gmail.com), and contributed by BlazeMeter Ltd.
  • Bug 52061 - Allow access to Request Headers in Regex Extractor. Based on patch from Dzmitry Kashlach (dzmitrykashlach at gmail.com), and contributed by BlazeMeter Ltd.

Functions

  • Bug 56708 - __jexl2 doesn't scale with multiple CPU cores. Based on analysis and patch contributed by Mikhail Epikhin(epihin-m at yandex.ru)
  • Bug 57114 - Performance : Functions that only have values as instance variable should not synchronize execute. Based on analysis by Ubik Load Pack support and Vladimir Sitnikov, patch contributed by Vladimir Sitnikov (sitnikov.vladimir at gmail.com)

I18N

General

  • Bug 21695 - Unix jmeter start script assumes it is on PATH, not a link
  • Bug 56292 - Add the check of the Java's version in startup files and disable some options when is Java v8 engine
  • Bug 56298 - JSR223 language display does not show which engine will be used
  • Bug 56455 - Batch files: drop support for non-NT Windows shell scripts
  • Bug 52707 - Make Open File dialog use last opened file folder as start folder. Based on patch from Dzmitry Kashlach (dzmitrykashlach at gmail.com), and contributed by BlazeMeter Ltd.
  • Bug 56807 - Ability to force flush of ResultCollector file. Contributed by Andrey Pohilko (apc4 at ya.ru)
  • Bug 56921 - Templates : Improve Recording template to ignore embedded resources case and URL parameters. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 42248 - Undo-redo support on Test Plan tree modification. Developed by Andrey Pohilko (apc4 at ya.ru) and contributed by BlazeMeter Ltd. Additional contribution by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 56920 - LogViewer : Make it receive all log events even when it is closed. Contributed by Ubik Load Pack (support at ubikloadpack.com)
  • Bug 57083 - simplified the CachedResourceMode enum. Contributed by Graham Russel (graham at ham1.co.uk)
  • Bug 57082 - ComboStringEditor : Added hashCode to an inner class which overwrote equals. Contributed by Graham Russel (graham at ham1.co.uk)
  • Bug 57081 - Updating checkstyle to only check for tabs in java, xml, xsd, dtd, htm, html and txt files (not images!). Contributed by Graham Russell (graham at ham1.co.uk)
  • Bug 56178 - Really replace backslashes in user name before generating proxy certificate. Contributed by Graham Russel (graham at ham1.co.uk)
  • Bug 57084 - Close socket after usage in BeanShellClient. Contributed by Graham Russel (graham at ham1.co.uk)


Non-functional changes

  • Bug 57117 - Increase the default cipher for HTTPS Test Script Recorder from SSLv3 to TLS
  • Updated to commons-lang3 3.3.2 (from 3.1)
  • Updated to commons-codec 1.9 (from 1.8)
  • Updated to commons-logging 1.2 (from 1.1.3)
  • Updated to tika 1.6 (from 1.4)
  • Updated to xercesImpl 2.11.0 (from 2.9.1)
  • Updated to xml-apis 1.4.01 (from 1.3.04)
  • Updated to xstream 1.4.7 (from 1.4.4)
  • Updated to jodd 3.6.1 (from 3.4.10)
  • Updated to rsyntaxtextarea 2.5.3 (from 2.5.1)
  • Updated xalan and serializer to 2.7.2 (from 2.7.1)
  • Updated to jsoup-1.8.1.jar (from 1.7.3)


Thanks

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

  • James Liang (jliang at andera.com)
  • Emmanuel Bourg (ebourg at apache.org)
  • Nicola Ambrosetti (ambrosetti.nicola at gmail.com)
  • Ubik Load Pack
  • Mikhail Epikhin (epihin-m at yandex.ru)
  • Dan Haughey (dan.haughey at swinton.co.uk)
  • Felix Schumacher (felix.schumacher at internetallee.de)
  • Dzmitry Kashlach (dzmitrykashlach at gmail.com)
  • Andrey Pohilko (apc4 at ya.ru)
  • Bradford Hovinen (hovinen at gmail.com)
  • BlazeMeter Ltd.
  • Graham Russell (graham at ham1.co.uk)
  • Philippe Jung (apache at famille-jung.fr)
  • Vladimir Sitnikov (sitnikov.vladimir 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:
  • Oliver LLoyd (email at oliverlloyd.com) for his help on Bug 56119
  • Vladimir Ryabtsev (greatvovan at gmail.com) for his help on Bug 56243 and Bug 56276
  • Adrian Speteanu (asp.adieu at gmail.com) and Matt Kilbride (matt.kilbride at gmail.com) for their feedback and tests on Bug 54648
  • Shmuel Krakower (shmulikk at gmail.com) for his tests and reports on Undo/Redo feature

来自:http://jmeter.apache.org/changes.html