jmeter 4.0版本更新说明(个人做个记录)总版本更新合集

版本4.0

摘要

新的和值得注意的

核心改进

JMeter现在支持JAVA 9。

提供新的边界提取器元件,提供易于提取和更好的性能

 

可用于在JSON响应上断言的JSON Assertion元素。

 

提供新的精确吞吐量定时器元件,可在给定的恒定吞吐量下产生泊松到达。

 

JMS点对点采样器增强了读取浏览清除选项。

 

现在,在许多测试元素上选择了最佳属性值,以确保最佳实践是默认值:

  • 新添加如果Controller现在默认使用Expression,这是性能最佳的选项。
  • 如果使用的语言提供此功能,则新添加的JSR223测试元素现在默认缓存编译的脚本。

 

回路控制器和 的ForEach控制器 现在暴露自己的当前迭代的命名变量 __jm __ <你的元素的名称> __ IDX,你可以用这样的例如用于回路控制器命名 MyLoopController

$ {__ jm__MyLoopController__idx}

 Bug 61802

 

现在,Cookie会在录制期间显示在“查看结果树”中。他们以前总是显示为空。

响应断言现在允许您自定义断言消息并在请求数据上断言。

 

UX改进

JMeter现在默认使用Darcula LAF

Workbench已从UI中删除,您现在可以使用非测试元素作为测试计划的直接子项。

 

菜单UX已得到改进,可以更快速地使用大多数元素。

 

HTTP(S)测试脚本记录器现在允许您以更易读的方式记录您的交易。

 

 

用户体验改进最明显:

  • 模块控制器通知用户至少需要一个控制器
  • 功能助手对话框(帮助使用和测试功能的向导)在许多领域得到了改进。
  • Switch Controller修剪文本以避免在名称之前/之后引入空格时出现问题
  • 现在,在运行测试计划之前,会保存测试计划

功能

新函数__digest可以轻松计算SHA-XXX,MDX哈希值:

$ {__ digest(MD5,Apache JMeter 4.0 rocks!,,,)}

将返回0e16c3ce9b6c9971c69ad685fd875d2b

 

新函数__dateTimeConvert提供日期格式之间的轻松转换:

$ {__ dateTimeConvert(2017年1月1日,dd MMM yyyy,dd / MM / yyyy,)}

将于01/01/2017返回

 

新函数__changeCase提供切换到上/下/大写情况的功能

$ {__ changeCase(Avaro omnia desunt \,inopi pauca \,sapienti nihil,UPPER,)}

将返回AVARO OMNIA DESUNT,INOPI PAUCA,SAPIENTI NIHIL

 

新函数__isVarDefined 和__isPropDefined提供属性和变量可用性的测试

$ {__ isPropDefined(START.HMS)}

将返回真实

$ {__ isVarDefined(JMeterThread.last_sample_ok)}

将返回真实

 

脚本和插件开发

如果您不希望您的采样器在结果中可见,现在可以调用SampleResult #setIgnore()

JavaSamplerContext通过使用AbstractJavaSamplerClient已得到增强,新的方法,以方便插件开发。

JMeter现在将其他Maven源和javadoc工件分发到Maven存储库

现在,插件可以注册监听器,以便在打开/关闭测试计划时收到通知

实时报告和Web报告

InfluxDB后端监听器现在允许您通过添加前缀TAG_来添加自定义标记,请参阅 错误61794

在Web Report中,responseTime分布图更精确

已对报告生成进行了一些错误修正,请参阅 错误61900 错误61900 61956, 错误61899图表延迟Vs请求响应时间Vs请求由于 错误61962而未超过1000 RPS

配置JMeter环境

JMeter启动脚本的JVM设置可以放在一个单独的文件中(在Unix上为bin / setenv.sh在Windows 上为bin \ setenv.bat),在启动时调用。启动脚本本身不再需要编辑。

不兼容的变化

  • 已删除线程组的开始时间结束日期,请参阅 错误61549
  • 在分布式测试中,模式Hold已被删除。使用替代和更有效的模式
  • 对于3 第三方插件,在下面的方法org.apache.jmeter.gui.tree.JMeterTreeNode已取消了迁移到Java 9( 错误61529
    public Enumeration <JMeterTreeNode> children()
  • 现在,tearDown Thread Group将在默认情况下停止并关闭测试。如果您不想要此行为,请在关闭测试计划元素的主线程后取消选中Run tearDown Thread Groups,请参阅 错误61656
  • 属性sampleresult.getbytes.headers_sizesampleresult.getbytes.body_real_size已被删除,请参阅 错误61587
  • JMeter现在可以在运行时保存测试计划。此行为可以通过属性save_automatically_before_run控制,请参阅 错误61731
  • Workbench元素已被删除,您现在直接添加非测试元素作为测试计划的子项。加载包含元素的测试计划时,JMeter会将镜像服务器属性显示和HTTP(s)测试脚本记录器元素作为测试计划的直接子项移动。对于任何其他元素,它将创建一个名为Workbench Test FragmentTest Fragment元素并移动其中的元素
  • 已删除以下类(org.apache.jmeter.functions.util.ArgumentEncoderorg.apache.jmeter.functions.util.ArgumentDecoder),请参阅 请求#335
  • 在JMS点对点采样器中,将超时设置为0现在意味着无限超时,而之前它将切换为2000 ms,请参阅 错误61829
  • 当断言处于不同的范围时,它们从最外面的一个到最内层的一个执行。 Bug 61846
  • JMeter现在默认使用英语语言环境启动。此更改是由于许多支持的语言中缺少翻译。您可以通过在jmeter和jmeter.bat(或最好是setenv.sh/setenv.bat)中修改JVM_ARGS系统属性值来更改语言环境如果您能用支持的语言提供翻译,我们将非常感激。
  • SwitchController现在默认修剪switch的内容,以避免与不需要的空格相关的问题。 Bug 61771
  • JMeter JVM堆设置已从-Xms512m -Xmx512m更改-Xms1g -Xmx1g

改进

HTTP采样器和测试脚本记录器

  • 请求#316 - 关于空信任库加载的警告。供稿人:Vincent Herilier(https://github.com/vherilier)
  • 错误61639 - HTTP(S)测试脚本记录器:在请求过滤选项卡中,默认取消选中“通知已过滤采样器的子监听器”
  • 错误61672 - HTTP(S)测试脚本记录器:能够选择采样器名称,同时保持只添加前缀的能力
  • 错误53957 - HTTP请求:在“参数”选项卡中,允许粘贴来自Firefox和Chrome的内容(未解析)
  • 错误61587 - 删除属性sampleresult.getbytes.headers_sizesampleresult.getbytes.body_real_size
  • 错误61843 - HTTP(S)测试脚本记录器:将SAN添加到JMeter生成的CA证书。供稿人:Matthew Buckett
  • 错误61901 - 支持https.cipherSuites系统属性。供稿人:Jeremy Arnold(jeremy at arnoldzoo.org)

其他采样器

  • 错误61544 - JMS点对点采样器:通过读取,浏览,清除来增强通信风格。基于Benny van Wijngaarden的贡献(benny at smaragd-it.nl)
  • 错误61829 - JMS点对点:如果接收队列为空并且设置了超时,则不会将其考虑在内。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误61739 - Java Request / JavaSamplerClient:改进org.apache.jmeter.protocol.java.sampler.JavaSamplerContext
  • 错误61762 - 开始下一个线程循环应该在任何地方使用

控制器

  • 错误61675 - 如果Controller:默认情况下使用表达式,并在使用其他模式时添加警告。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误61770 - 模块控制器:在UI中通知用户他需要在他的计划中至少有一个控制器。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误61771 - SwitchController:应该通过安全修剪切换字段

听众

  • 错误57760 - 查看结果树:查看记录器样本结果时,Cookie标头错误地显示为空(无cookie)。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误61769 - 查看结果树:在XPath Tester,JSON Path Tester和CSS / JQuery Tester中使用语法高亮显示器供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误61776 - 查看结果树:扩展添加展开/折叠渲染XML视图中的所有菜单。由Maxime Chassagneux和Graham Russell供稿
  • 错误61852 - 查看结果树:添加边界提取器测试程序
  • 错误61794 - Influxdb后端:添加尽可能多的自定义标记,只需创建新行,并在GUI后端监听器上用“ TAG_ ”作为其名称前缀

定时器,断言,配置,预处理器和后处理器

  • 错误60213 - 新组件:基于边界的提取器
  • 错误61845 - 基于AtlanBH的新组件JSON断言JSON Path Assertion捐赠给JMeter-Plugins并由Artem Fedorov迁移到JMeter核心(artze at blazemeter.com)
  • 错误61931 - 新组件:精确吞吐量计时器,定时器,以给定的恒定吞吐量产生泊松到达。供稿人:Vladimir Sitnikov(来自gmail.com的sitnikov.vladimir)
  • 错误61644 - HTTP缓存管理器:默认情况下应检查“处理GET请求时使用缓存控制/过期标头”
  • 错误61645 - 响应断言:添加在请求数据上断言的功能
  • 错误51140 - 响应断言:添加设置特定错误/失败消息的功能,该消息稍后将显示在断言结果中。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误61534 - 将AssertionError转换为失败的断言,允许用户在其代码中使用assert。修复3.2中引入的回归
  • 错误61756 - 提取器:改进标签名称“参考名称”以明确其内容
  • 错误61758 - 应用于:提取器中的字段,断言:在JMeter变量名称中输入值时,默认情况下应选择单选框JMeter变量名称供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误61846 - Scoped Assertion应遵循与Post Processors相同的评估顺序

功能

  • 错误61724 - 添加__digest函数以提供哈希(SHA-XXX,MDX)的计算。基于orimarko在gmail.com的贡献
  • 错误61735 - 添加__dateTimeConvert函数以提供日期格式转换。基于orimarko在gmail.com的贡献
  • 错误61760 - 添加__isPropDefined__isVarDefined函数以了解属性或变量是否存在。由orimarko在gmail.com提供
  • 错误61759 - 添加__changeCase函数以更改字符串的不同情况。基于orimarko在gmail.com的贡献
  • 错误61561 - 函数帮助器对话框应在结果中显示异常
  • 错误61738 - 功能助手对话框:在生成和澄清标签中添加副本。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误62027 - 帮助:介绍属性help.local,以允许在本地(离线)文档和在线文档之间进行选择
  • 错误61593 - 删除详细信息,添加,从剪贴板添加,删除功能助手GUI中的按钮

国际化

  • 错误61606 - 翻译按钮在某些元素中浏览...(使用FileEditor类)
  • 错误61747 - HTTP(S)测试脚本记录器:将缺少的文档添加到“请求后创建事务(ms)”

报告/仪表板

  • 错误61871 - 将jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity默认值从500ms减少到100ms
  • 错误61879 - 删除HTML报告模板中的无用文件

一般

  • 错误61591 - 从测试树中删除Workbench。由Artem Fedorov(blazemeter.com上的artem)实施,由BlazeMeter Ltd.提供。
  • 错误61549 - 线程组:删除开始和结束日期
  • 错误61529 - 迁移到Java 9.部分由Ubik Load Pack提供(ubikloadpack.com支持)
  • 错误61709 - SampleResult:添加方法setIgnore()以使JMeter忽略SampleResult而不将其发送给侦听器
  • 错误61806 - 允许在后处理器和断言脚本(JSR223元素)中使用SampleResult #setIgnore(
  • 错误61607 - 在所有BeanShell元素中添加浏览按钮以选择BeanShell脚本
  • 错误61627 - 单击警告/错误指示器时,不再清除LogView
  • 错误61629 - 将Think Times添加到Children菜单不应该考虑禁用的元素
  • 错误 61655 - SampleSender:删除HoldSampleSender实现
  • 错误61656 - tearDown线程组应在测试停止或关闭时默认运行
  • 错误61659 - JMeterVariables#get()应该在非字符串对象上应用toString()
  • 错误 61555 - 默认情况下应限制元数据空间
  • 错误61693 - JMeter知道Docker(-XX:+ UnlockExperimentalVMOptions -XX:+ UseCGroupMemoryLimitForHeap
  • 错误61694 - jmeter.bat中添加-server选项
  • 错误61697 - 介绍Darcula外观和感觉,使JMeter UI更具吸引力
  • 错误61704 - 工具栏:改进一点正确的部分
  • 错误61731 - 增强测试计划备份,选项在运行前保存。基于orimarko在gmail.com的贡献
  • 错误61640 - JSR223测试元素:默认启用缓存。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误61785 - 添加帮助  →  有用的链接以创建问题并下载每晚构建
  • 错误61808 - 修复主框架位置。由Artem Fedorov(blazemeter.com上的artem)实施,由BlazeMeter Ltd.提供。
  • 错误61802 - 循环/ ForEach控制器应公开当前迭代的变量。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 拉请求#349 - 添加i18n资源(zh_CN)。供稿人:Helly Guo(https://github.com/hellyguo)
  • 拉请求#351 - 修正了第一个视图中的对话位置。供稿人:Graham Russell(graham at ham1.co.uk)
  • 拉请求#352 - 菜单栏 - 将助记符添加到更多菜单项。供稿人:Graham Russell(graham at ham1.co.uk)
  • 拉请求#353 - 在Spock中重写了一些现有的测试。供稿人:Graham Russell(graham at ham1.co.uk)
  • 错误61919 - UX:重新排序菜单。供稿人:Graham Russell(graham at ham1.co.uk)
  • 错误61920 - 插件:添加听取测试计划加载/关闭的能力。供稿人:Peter Doornbosch(https://bitbucket.org/pjtr/)
  • 错误61935 - 插件:让GUI组件(动态)决定是否可以通过菜单添加。供稿人:Peter Doornbosch(https://bitbucket.org/pjtr/)
  • 错误61969 - 当通过GUI更改LAF时,应通知用户最好重新启动
  • 错误61970 - JMeter现在使用英语作为默认语言环境,以避免在某些语言环境中丢失翻译,使UI看起来很奇怪
  • 错误56368 - 创建和部署源工件到Maven中心
  • 错误61973 - 创建和部署javadoc工件到Maven central
  • 请求#371 - 修复XPath Assertion文档中的示例供稿人:Konstantin Kalinin(hotmail.com中的kkalinin)
  • 错误62039 - 分布式测试:提供使用SSL的能力

非功能性变化

  • 已更新至bsh-2.0b6(来自bsh-2.0b5)
  • 更新为groovy-all-2.4.13(来自groovy-all-2.4.12)
  • 更新至rhino-1.7.7.2(来自rhino-1.7.7.1)
  • 更新为tika-core和tika-parsers 1.17(从1.16开始)
  • 更新为commons-dbcp2-2.2.0(来自2.1.1)
  • 更新为咖啡因2.6.1(从2.5.5开始)
  • 更新为commons-codec-1.11(从1.10开始)
  • 更新为commons-io-2.6(从2.5开始)
  • 更新为commons-lang3-3.7(来自3.6)
  • 更新为commons-pool2-2.5.0(来自2.4.2)
  • 更新为asm-6.0(从5.2开始)
  • 更新到jsoup-1.11.2(从1.10.3开始)
  • 已更新至cglib-nodep-3.2.6(从3.2.5开始)
  • 更新为ph-css 6.0.0(从5.0.4开始)
  • 更新为ph-commons 9.0.0(从8.6.6开始)
  • 更新为log4j2 2.10.0(从2.8.2开始)
  • 更新为httpcore 4.4.9(从4.4.7开始)
  • 更新到httpclient 4.5.5(从4.5.3开始)
  • 更新为jodd 4.1.4(从3.8.6开始)
  • 错误61642 - 改进FTP测试覆盖率
  • 错误61641 - 改进JMS测试覆盖率
  • 错误61651 - 改进TCP测试覆盖率
  • 错误61651 - 改进操作系统测试覆盖率。部分由Aleksei Balan贡献(abalanonline at gmail.com)
  • 拉请求#319 - 删除已注释掉的代码。供稿人:Graham Russell(graham at ham1.co.uk)
  • 拉请求#322 - 常规JavaDoc清理。供稿人:Graham Russell(graham at ham1.co.uk)
  • 拉请求#323 - 提取的方法和使用的流来提高可读性。供稿人:Graham Russell(graham at ham1.co.uk)
  • 拉请求#324 - 保存备份重构。供稿人:Graham Russell(graham at ham1.co.uk)
  • 请求#327 - 使用更现代的Java,简化代码并格式化代码和注释。供稿人:Graham Russell(graham at ham1.co.uk)
  • 拉请求#332 - 为常规单元测试添加spock框架。供稿人:Graham Russell(graham at ham1.co.uk)
  • Pull请求#334 - 使用默认配置从IntelliJ中启用JUnit测试的运行。供稿人:Graham Russell(graham at ham1.co.uk)
  • 拉请求#335 - 删除了functions.util。*,因为它们似乎没有被使用(多年)。供稿人:Graham Russell(graham at ham1.co.uk)
  • 错误61867 - 拉请求#345 - 更新到最新的checkstyle(v8.5),为checkstyle添加了更多规则,包括检查测试文件和更多文件类型。供稿人:Graham Russell(graham at ham1.co.uk)
  • 拉请求#350 - 并行单元测试。供稿人:Graham Russell(graham at ham1.co.uk)
  • 错误61966 - 在jenkins中设置测试结果分析器
  • 拉请求#343 - 减小文档中某些图像的大小。供稿人:Graham Russell(graham at ham1.co.uk)

Bug修复

HTTP采样器和测试脚本记录器

  • 错误61569 - JMS点对点测试计划:回复时的同步问题。供稿人:Igor Panainte(gain上的panainte.i)

其他采样器

  • 错误61698 - 测试操作:选择停止,可以运行测试操作后的采样器
  • 错误61707 - 测试操作:选择暂停时忽略目标,因此应禁用它
  • 错误61827 - JMSPublisher:不要在文件末尾添加新行。供稿人:Graham Russell(graham at ham1.co.uk)

控制器

  • 错误61556 - 澄清在IfController和groovy $ {} var使用的文档性能影响由Justin McCartney供稿(be_strew at yahoo.co.uk)
  • 错误61713 - 测试片段具有更改控制器和插入父项的选项。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误61965 - 模块和包含控制器不应允许在其上下文中添加无意义的元素。
  • 错误62062 - 吞吐量控制器:当吞吐量= 0(总执行次数或执行百分比)时触发StackOverFlowError由Artem Fedorov(artze.fedorov在blazemeter.com)部分实施并由BlazeMeter Ltd.提供。

听众

  • 错误61742 - BackendListener:用于修复默认值backend_graphite.send_interval
  • 错误61878 - BackendListener:NPE如果BackendListenerClient#getDefaultParameters返回null
  • 错误61950 - 查看结果树:Content-Type audio / mpegurl被错误地视为二进制

定时器,断言,配置,预处理器和后处理器

  • 错误61716 - 标题管理器:当从Firefox或Chrome空间粘贴标题时,将引入作为第一个值的字符

功能

  • 错误61588 - 为__RandomDate()函数提供更好的日志消息
  • 错误61619 -在功能帮助对话框中,1 功能不显示默认参数
  • 错误61628 - 如果拆分字符串有空分隔符,则不使用默认分隔符
  • 错误61752 - __RandomDate:函数不允许缺少用于变量名的最后一个参数

国际化

报告/仪表板

  • 错误61807 - Web报告:修复getTop5ErrorMetrics中的错误供稿人:Graham Russell(graham at ham1.co.uk)
  • 错误61900 - 报告生成器:如果分隔符是像|的正则表达式保留字符,则报告生成失败
  • 错误61925 - CsvSampleReader不会在nextSample()中增加行。供稿人:Graham Russell(graham at ham1.co.uk)
  • 错误61956 -报告生成:-f-forceDeleteResultFile选项不起作用。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误61899 - 报告生成:当jmeter.save.saveservice.print_field_names为false且设置sample_variables时,报告生成失败。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误61962 - 延迟Vs请求和响应时间Vs请求图表不超过1000 RPS。供稿人:Ubik Load Pack(ubikloadpack.com支持)

一般

  • 错误61661 -避免由于3启动/关机的问题RD党线程监听器插件抛出的RuntimeException
  • 错误61625 - BeanInfo中使用的文件编辑器在所有LAF下表现奇怪,对CSVDataSet,JSR223,BSF,Beanshell Element有影响
  • 错误61844 - Maven pom.xml:测试中使用的库应该有范围测试
  • 错误61842 - 保存没有更改会导致保存和重复,相同的备份文件

谢谢

我们感谢上面的bug和改进部分中提到的所有贡献者:

  • Igor Panainte(gain上的panainte.i)
  • Emilian Bold(来自apache.org的emi)
  • Ubik Load Pack
  • 贾斯汀麦卡特尼(be_strew at yahoo.co.uk)
  • Vincent Herilier(https://github.com/vherilier)
  • Aleksei Balan(gmail.com的abalanonline)
  • 格雷厄姆罗素(graham at ham1.co.uk)
  • orimarko在gmail.com
  • Artem Fedorov(artze at blazemeter.com)
  • BlazeMeter有限公司
  • Benny van Wijngaarden(在smaragd-it.nl的benny)
  • Matthew Buckett(https://github.com/buckett)
  • Helly Guo(https://github.com/hellyguo)
  • Peter Doornbosch(https://bitbucket.org/pjtr/)
  • Jeremy Arnold(jeremy at arnoldzoo.org)
  • Vladimir Sitnikov(gmail.com的sitnikov.vladimir)
  • Konstantin Kalinin(hotmail.com的kkalinin)

我们也感谢帮助我们改进JMeter的bug记者。
对于此版本,我们要特别感谢以下记者在我们修复后做出的明确报告和测试:

  • Stackoverflow上的user7294900(gmail.com上的orimarko)

如果我们遗漏了其他人,请道歉。

已知问题和解决方法

  • Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。
  • 绿色框左侧显示的数字是活动线程数/线程总数,线程总数仅适用于本地运行的测试,否则将显示0(参见 错误55510)。
  • 请注意,在某些Windows系统下,您可能会遇到以下警告:
    java.util.prefs.WindowsPreferences
    警告:无法在root 0处打开/创建prefs根节点Software \ JavaSoft \ Prefs
    x80000002。Windows RegCreateKeyEx(...)返回错误代码5。
    
    修复是以管理员身份运行JMeter,它将为您创建注册表项,然后您可以作为普通用户重新启动JMeter,您将不再有警告。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException:证书不符合算法约束
    如果您在具有SSL证书(本身或其信任链中的SSL证书之一)的网站上使用MD2(如md2WithRSAEncryption)或大小低于1024位的SSL证书运行HTTPS请求此错误与Java 8+中增强的安全性有关。 
    要允许您执行HTTPS请求,可以通过编辑Java jdk.certpath.disabledAlgorithms属性来降级Java安装的安全性。根据您的情况,删除MD2值或大小约束。 
    此属性在此文件中:
    JAVA_HOME / JRE / lib / security中/ java.security
    有关详细信息,请参阅 错误56357
  • 在Mac OSX下,由于镜像对数字的影响,聚合图表将显示错误的值。这是由于已知的Java bug,请参阅Bug JDK-8065373 。修复方法是使用JDK8_u45或更高版本。
  • 查看结果树可能无法在HTML呈现器下显示某些HTML代码,请参阅 错误54586这是由于已知的Java错误无法解析row / col属性中的“ px ”单位。请参阅Bug JDK-8031109 修复方法是使用JDK9 b65或更高版本。
  • 使用键盘进行JTable选择(SHIFT  +  向上/向下)在Mac OSX上完全无法使用Java 7。这是由于已知的Java错误JDK-8025126 修复是使用JDK 8 b132或更高版本。

版本3.3

摘要

新的和值得注意的

 
JMeter尚不支持JAVA 9,下一个JMeter版本将支持它,您可以在 Bug 61529中帮助并跟踪此项目的进度
 
 
建议使用JAVA 8的最后一个次要版本以避免遇到任何JDK错误。
 

核心改进

HTTP Sampler现在支持Brotli解压缩。

CacheManager现在完全支持Vary标头。

InfluxDB BackendListener现在支持通过UDP协议将结果发送到InfluxDB。

它还得到了增强,可以通过每个事务的响应代码和消息发送错误数

 

TCP Sampler现在可以计算延迟,参见 Bug 60156

将依赖项升级到上一个可用版本,从而带来性能改进和错误修复

继续提高我们的代码质量和测试覆盖率。请参阅质量报告

UX改进

为了更好地支持HiDPI,已经做了更多的工作。

一些在降低View Results Tree的内存使用量方面工作的错误已得到修复。

常量DEFAULT_IMPLEMENTATION已从CookieManager中删除,因为它失去了它的目的,删除了上一版本中的备用HTTP客户端实现

通过为驱动程序和验证查询添加选择框,JDBC Sampler UX得到了改进。

 

如果Controller和While Controller UX已得到改进

 

报告/仪表板改进

添加了一个新的“帮助”菜单项,以简化报告生成的配置。

文档改进

收集有关不清楚文档的反馈。

功能

功能助手对话框:添加了一个显示执行结果的新字段。

 

新功能:

  • __timeShift - 以指定的秒/分钟/小时/天数添加各种格式的日期。
  • __RandomDate - 在特定日期范围内生成随机日期。

不兼容的变化

  • 在InfluxDbBackendListenerClient中,statut属性已重命名为status
  • 在CookieManager中,DEFAULT_POLICYDEFAULT_IMPLEMENTATION常量现在是私有的。
     
    如果您使用ignorecookies与HC3CookieHandler(<3.1的JMeter)的配置将被重置,确保你把它放回去。
  • JMeter不会在默认响应超过10 MB时截断。如果要启用此截断,请参阅属性httpsampler.max_bytes_to_store_per_request
  • org.apache.jmeter.protocol.tcp.sampler.TCPClient.read(InputStream)已被弃用,或者org.apache.jmeter.protocol.tcp.sampler.TCPClient.read(InputStream,SampleResult),确保你更新你的实现能够计算延迟,请参阅 错误60156

删除了元素或功能

改进

HTTP采样器和测试脚本记录器

  • 错误61056 - HTTP:支持brotli解码
  • 错误61135 - CookieManager:Drop Implementation选择框和清理类
  • 错误61492 - HTTP(S)测试脚本记录器:添加在GUI中更改proxy.pause值的可能性

其他采样器

  • 错误61320 - 测试操作:默认情况下将持续时间设置为0
  • 错误61504 - JDBC连接配置:默认情况下,将最大连接数设置为0
  • 错误61505 - JDBC连接配置:默认情况下将“验证查询”设置为以使用JDBC驱动程序的isValid方法
  • 错误61506 - JDBC连接配置:为“验证查询”属性添加主数据库验证查询的列表
  • 错误61507 - JDBC连接配置:为主数据库添加“JDBC驱动程序类”属性的JDBC驱动程序类名称列表
  • 错误61525 - 操作系统进程采样器:向命令和工作目录字段添加浏览器按钮
  • 错误60156 - TCPSampler:未测量TCP采样器的延迟。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误61039 - CSV数据集配置:将“浏览器”按钮添加到“文件名”字段
  • 错误61527 - CSV数据集配置:为文件编码属性添加主文件编码值列表

控制器

  • 错误61131 - IfController和WhileController:改进UX

听众

  • 错误 61167 - InfluxdbBackendListener:按响应代码和每个事务的消息添加错误数
  • 错误61068 - 在启动测试时引入属性resultcollector.action_if_file_exists来控制弹出窗口“文件已存在”
  • 错误61457 - InfluxDB后端监听器客户端:支持通过UDP协议将结果发送到InfluxDB。部分基于 Pull请求#302- 由Junlong Wu(github id mybreeze77)

定时器,断言,配置,预处理器和后处理器

功能

  • 错误61040 - 添加时移功能
  • 错误61126 - 功能助手对话框:添加显示执行结果的字段
  • 错误61508 - 在特定日期范围函数中添加随机日期

国际化

  • 错误61509 - 针对Counter元素的标签start和max的更好的标签/翻译/文档

报告/仪表板

  • 错误61481 - 帮助菜单项导出Web报告的事务

一般

  • ActionRouter中查找类时,回退到jar的位置,从中加载ActionRouter由Emilian Bold提供(emi在apache.org)
  • 错误61510 - 将“最大连接数”设置为0,进入“JDBC负载测试模板”的“JDBC连接配置”
  • 错误61399 - 使一些bin和extras脚本与Shellcheck兼容。供稿人:Wolfgang Wagner(来自hotmail.com的internetwolf2000)

非功能性变化

  • 更新为groovy 2.4.12(从2.4.10开始)
  • 更新为咖啡因2.5.5(从2.4.0开始)
  • 更新为commons-jexl3 3.1(从3.0开始)
  • 更新为ph-css 5.0.4(自5.0.3起)
  • 更新为ph-commons 8.6.6(从8.6.0开始)
  • 更新为log4j2 2.8.2(从2.8.1开始)
  • 更新到xmlgraphics-commons 2.2(从2.1开始)
  • 更新为jodd 3.8.6(从3.8.1开始)
  • 更新到xstream 1.4.10(从1.4.9开始)
  • 更新到Apache Tika 1.16(从1.14开始)
  • 更新到jsoup-1.10.3(从1.10.2开始)
  • 更新为commons-lang3 3.6(来自3.5)
  • 更新到json-path 2.4.0(从2.2.0开始)
  • 更新为httpcore 4.4.7(从4.4.6开始)
  • 错误61438 - 将包的加密签名从sha-1更改为sha-512

Bug修复

HTTP采样器和测试脚本记录器

  • 错误61384 - 不要在封闭的multipart / form-data标头上设置charset 它激怒了一些服务器。
    在重构使用更新的http客户端API时,有时会添加charset。有关 详细信息,请参阅 错误56141
  • 错误61456 - 使用JMeter和奇怪的Basic Auth Authorization标头录制时的java.lang.ArrayIndexOutOfBoundsException
  • 错误61395 - 大型服务器响应截断可能会影响录制

其他采样器

  • 错误60889 - 由于Connection#toString调用响应头,JMeter JDBC示例在使用MySQL JDBC进行测试时调用SELECT USER()
  • 错误61259 - JDBC请求:自JMeter 3.0以来,当JDBC自动提交为false时,每次执行Request时都会发生回滚语句。部分由Liu XP提供(sina.com上的liu_xp2003)
  • 错误61319 - 修复回归:未指定附件时,SMTP采样器无法发送邮件。

控制器

  • 错误61375 - 在解析静态主机表中的条目时,使用系统DNS解析程序作为最后的手段。

听众

  • 错误61005 - 查看结果树 - 浏览器响应数据未清除
  • 错误61121 - InfluxdbBackendListenerClient:只发送所有百分位数,而不是KOOK
  • 错误60961 - 添加新元素时,尝试在“查看结果树”中保持所选元素和扩展元素的状态。
  • 错误61198 - 当包含的脚本还包含Backend Listener时,Backend Listener在主脚本中无法正常工作
  • 错误61493 - 最大/最小线程在Graphite和InfluxDB后端侦听器中互换

定时器,断言,配置,预处理器和后处理器

  • 错误58743 - 请求#293 - 使用两个或更多实例时,无法保存TableEditor。错误修正由Emilian Bold提供(emi at apache.org)
  • 错误61314 - HTTP URL重写修饰符不替换http sampler中的现有jsessionid,但将其添加到最后
  • 错误61336 - BeanShell断言:中文翻译错误

功能

  • 错误61258 - 在函数帮助程序对话框中两次提到StringFromFile函数
  • 错误61260 - 尽管XPath检查程序找到匹配, __ XPath函数返回null
  • 错误58876 - TestPlanName函数为新保存的测试计划返回null,并使用先前打开的测试计划作为新计划

国际化

报告/仪表板

  • 错误61129 - 报告/仪表板:如果响应代码为空但存在failureMessage,则错误和前5个错误不准确。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误61151 - 报告/仪表板:采样器和错误的前5个错误:如果断言包含html代码,则隐藏html部分

一般

  • 错误60743 - 停止/关闭测试可能会因HTTPCORE-446而产生死锁,由HttpCore升级到4.4.7修复
  • 错误60994 - 修复评论或日志消息中的一些拼写错误。 拉请求#289 拉请求#290 -
  • 错误61011 - 替换事件计数不正确(路径和主机替换计数两次)
  • 错误61026 - 无法运行程序“keytool”:在GUI模式下启动JMeter 3.2时,CreateProcess错误= 2
  • 错误61054 - JORPhanUtils中的无限循环#replaceAllWithRegex当替换中包含正则表达式时
  • 错误60995 - HTTP测试脚本记录器:在一些L&F下,端口字段非常小
  • 错误61073 - HTTP(S)测试脚本记录器面板在HiDPI屏幕上有一些不良大小的字段或Linux / XWayland上的GTK + L&F
  • 错误57958 - 如果线程停止/重新启动,则修复未生成的事务样本。由Artem Fedorov(blazemeter.com上的artem)实施,由BlazeMeter Ltd.提供。
  • 错误61050 - 在调用JMeterUtils #getResString时更优雅地处理未初始化的RessourceBundle 
  • 错误61100 - Windows上的GC日志文件名无效
  • 错误57962 - 允许在从属模式下的所有侦听器中使用变量(仅来自用户定义的变量)
  • 错误61270 - 在HiDPI下读取的文本区域中的固定宽度字体太小(用户手册错误)
  • 错误61292 - 使报告中的样本处理更加健壮。
  • 错误61359 - 从Tree中剪切元素时,测试计划未标记为脏
  • 错误61380 - JMeter关闭使用计时器释放雷鸣般的中断采样器群
  • 错误57055 - CheckDirty.doAction应清除SUB_TREE_SAVED的previousGuiItems

谢谢

我们感谢上面的bug和改进部分中提到的所有贡献者:

  • Anass Benomar(umanis.com的abenomar,github的Mithrandir0407)
  • Anthony Kearns(anthony.kearns atrightside.co)
  • Emilian Bold(来自apache.org的emi)
  • Liu XP(sina.com上的liu_xp2003)
  • Ubik Load Pack
  • 沃尔夫冈·瓦格纳(hotww上的internetwolf2000)
  • 吴俊龙(github id mybreeze77)

我们也感谢帮助我们改进JMeter的bug记者。
对于此版本,我们要特别感谢以下记者在我们修复后做出的明确报告和测试:

  • Liu XP(sina.com上的liu_xp2003)
  • Alexander Podelko(yahoo.com上的apodelko)

如果我们遗漏了其他人,请道歉。

已知问题和解决方法

  • Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。
  • 绿色框左侧显示的数字是活动线程数/线程总数,线程总数仅适用于本地运行的测试,否则将显示0(参见 错误55510)。
  • 请注意,在某些Windows系统下,您可能会遇到以下警告:
    java.util.prefs.WindowsPreferences
    警告:无法在root 0处打开/创建prefs根节点Software \ JavaSoft \ Prefs
    x80000002。Windows RegCreateKeyEx(...)返回错误代码5。
    
    修复是以管理员身份运行JMeter,它将为您创建注册表项,然后您可以作为普通用户重新启动JMeter,您将不再有警告。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException:证书不符合算法约束
    如果您在具有SSL证书(本身或其信任链中的SSL证书之一)的网站上使用MD2(如md2WithRSAEncryption)或大小低于1024位的SSL证书运行HTTPS请求此错误与Java 8+中增强的安全性有关。 
    要允许您执行HTTPS请求,可以通过编辑Java jdk.certpath.disabledAlgorithms属性来降级Java安装的安全性。根据您的情况,删除MD2值或大小约束。 
    此属性在此文件中:
    JAVA_HOME / JRE / lib / security中/ java.security
    有关详细信息,请参阅 错误56357
  • 在Mac OSX下,由于镜像对数字的影响,聚合图表将显示错误的值。这是由于已知的Java bug,请参阅Bug JDK-8065373 。修复方法是使用JDK8_u45或更高版本。
  • 查看结果树可能无法在HTML呈现器下显示某些HTML代码,请参阅 错误54586这是由于已知的Java错误无法解析row / col属性中的“ px ”单位。请参阅Bug JDK-8031109 修复方法是使用JDK9 b65或更高版本。
  • 使用键盘进行JTable选择(SHIFT  +  向上/向下)在Mac OSX上完全无法使用Java 7。这是由于已知的Java错误JDK-8025126 修复是使用JDK 8 b132或更高版本。

版本3.2

摘要

新的和值得注意的

重要变更

JMeter现在需要Java 8.确保使用最新版本。

JMeter的日志记录已迁移到SLF4J和Log4j的2这将影响的配置和3 第三方插件,见下面的“日志记录更改”

从JMeter版本3.2开始,查看结果树中的结果数量默认限制为500个条目。如果需要更多条目,则必须将属性view.results.tree.max_results设置为更高的值,如果不想施加任何限制,则必须设置0您可以在bin / user.properties中设置该属性。可在此处找到更多信息

核心改进

    • JMeter现在提供了一个与InfluxDB接口的新BackendListener实现。此实现通过其HTTP API使用异步HTTP调用向InfluxDB发送数据, 并为您提供带注释的以下图形:
    • DNS缓存管理器现在有一个表允许静态主机解析。
    • 现在,JMS Publisher和Subscriber允许在暂停时重新连接错误。
    • 现在,所有类型的消息都支持JMS Publisher中的变量。添加文件的编码类型以解析其内容

  • XPath Extractor现在允许通过索引或所有匹配随机提取。
  • 响应断言现在允许处理请求标头,提供“OR”组合并具有更好的单元格渲染器
  • JMeter现在使用Oracle Nashorn Javascript引擎而不是Rhino。这样可以更快地执行Javascript。
  • HTTP HC4实现现在默认启用抢占式基本身份验证
  • CSS中的嵌入式资源下载已得到改进,以避免无用的重复解析来查找资源
  • 自从Sonar在项目上进行设置以来,已经完成了关于代码质量和代码覆盖率测试的重要工作。你可以在这里看到声纳报告

UX改进

  • 运行测试时,GUI现在响应速度更快,对内存使用的影响更小,这是由于样本结果监听器的数量受到限制以及GUI更新方式的重新设计
  • HTTP请求GUI已经简化,为参数和正文提供了更多的位置。
  • HTTP(S)测试脚本记录器已经简化和澄清。
  • 一个替代的功能已经被添加到搜索功能,允许在某些元素替换。
     
    ReplaceAll不会对所有元素进行替换,它会在
    以下情况下进行替换- HeaderManager:值的替换
    - Http请求:参数,路径和主机中的替换
  • 查看结果树现在提供了一个更新的浏览器渲染器,它需要JavaFX。
  • 您现在可以通过上下文菜单添加思考时间,这将在所选节点的采样器和事务控制器之间添加思考时间。
  • 您现在可以将命名策略应用于事务控制器的子项。存在默认策略,但您可以通过org.apache.jmeter.gui.action.TreeNodeNamingPolicy实现自己的策略 并配置属性naming_policy.impl
  • 每列的排序已添加到表,结束报告,聚合报告和聚合图元素中的查看结果中。

报告/仪表板改进

  • 对统计数据进行了重组以澄清报告:
  • 现在可以根据正则表达式或样本名称自定义每个事务的APDEX阈值。下面的示例将对样本样本(\\ d +),sampleA和scenarioB应用不同的阈值,而不是默认阈值(500和1500表示满足和容忍的阈值):
    jmeter.reportgenerator.apdex_satisfied_threshold = 500
    jmeter.reportgenerator.apdex_tolerated_threshold = 1500
    jmeter.reportgenerator.apdex_per_transaction =样品(\\ d +):1000 | 2000; \
        sampleA:3000 | 4000; \
        scenarioB:5000 | 6000
    

文档改进

  • PDF文档已迁移并更新为HTML用户手册

不兼容的变化

  • JMeter现在至少需要运行Java 8版本。
  • JMeter日志记录已迁移到SLF4J和Log4j 2,这涉及配置完成方式的更改。JMeter现在依赖于log4j2.xml文件中的标准 Log4j 2配置 有关更多详细信息,请参阅下面的“ 记录更改”部分。 
  • 从LogKit迁移到SLF4J后,以下jar已被删除(参见 Bug 60589):
    • ApacheJMeter_slf4j_logkit.jar
    • 阿瓦隆框架-4.1.4.jar
    • 阿瓦隆框架-4.1.4.jar
    • 共享记录-1.2.jar
    • 神剑记录器-1.1.jar
    • logkit-2.0.jar
  • 公地httpclient的-3.1.jar的HC3.1支持下跌后已被删除(见 的Bug 60727
  • JMeter现在通过-Djava.security.egd = file:/ dev / urandom设置安全随机算法
  • 当发生错误时,Process Sampler现在返回错误代码500。它先前返回一个空值。
  • org.apache.jmeter.protocol.http.sampler.HTTPHCAbstractImpl中,两个受保护的静态字段(localhostnonProxyHostSuffixSize)已重命名为(LOCALHOSTNON_PROXY_HOST_SUFFIX_SIZE)以遵循静态字段命名约定
  • JMeter现在默认使用Oracle Nashorn引擎而不是Mozilla Rhino来获得更好的性能。除非您使用某些高级功能,否则不会产生任何影响。您可以通过设置属性javascript.use_rhino = true恢复为Rhino 您可以阅读此迁移指南,了解有关Nashorn的更多详细信息。 Bug 60672
  • 错误60729 - 随机变量配置元素现在允许最小==最大值。以前版本在最小值==最大值时记录错误,并且未设置已配置的变量。
  • 错误60730 - JSON PostProcessor现在设置_ALL变量(假设已经检查了Compute concatenation var),即使JSON路径只匹配一次。在这种情况下,以前的版本没有设置_ALL变量。

删除了元素或功能

  • 作为 Bug 60727的一部分,SOAP / XML-RPC请求已被删除使用HTTP Request元素作为替换。请参阅构建WebService测试计划
  • 错误60423 - 删除监视器结果监听器
  • 删除已弃用的类org.apache.jmeter.protocol.system.NativeCommand
  • 删除已弃用的类org.apache.jmeter.protocol.http.config.gui.MultipartUrlConfigGui
  • 删除已弃用的类org.apache.jmeter.testelement.TestListener
  • 删除已弃用的类org.apache.jmeter.reporters.FileReporter
  • 删除不推荐使用的类org.apache.jmeter.protocol.http.modifier.UserSequence
  • 删除不推荐使用的类org.apache.jmeter.protocol.http.parser.HTMLParseError
  • 删除未使用的方法org.apache.jmeter.protocol.http.control.HeaderManager#getSOAPHeader 和org.apache.jmeter.protocol.http.control.HeaderManager #setSOAPHeader(Object)
  • org.apache.jmeter.protocol.http.util.Base64Encode已被弃用,您可以使用java.util.Base64作为替代

记录更改

JMeter的日志记录已迁移到SLF4J和Log4j的2.这会影响日志配置和3 第三方插件(如果他们使用JMeter的日志记录)。以下部分描述了需要进行哪些更改。

设置日志记录级别和日志文件

可以使用-L参数在命令行上更改缺省日志记录级别同样,-l参数可用于更改日志文件的名称。但是,log_level属性不再起作用。

默认日志记录级别和文件名在启动目录log4j2.xml配置文件中定义(通常为JMETER_HOME / bin

 

 
如果需要以编程方式从Groovy代码或Beanshell更改级别,则需要执行以下操作:
    import org.apache.logging.log4j.core.config.Configurator;
    final String loggerName = te.getClass()。getName(); // te是一个JMeter类
    Configurator.setAllLevels(loggerName,Level.DEBUG); 
    
 

 

更改3 党的插件记录

 

 
第三方插件应该将他们的日志代码从logkit迁移到slf4j。这很容易,可以通过替换:
        import org.apache.jorphan.logging.LoggingManager;
        import org.apache.log.Logger;
        private static final Logger log = LoggingManager.getLoggerForClass();
    
通过:
        import org.slf4j.Logger;
        import org.slf4j.LoggerFactory;
        private static final Logger log = LoggerFactory.getLogger(YourClassName.class);
    
 

 

改进

HTTP采样器和测试脚本记录器

  • 错误59934 - 修复CssParser中的竞争条件。基于Jerome Loisel的补丁(loisel.jerome在gmail.com)
  • 错误60543 - HTTP请求/ Http请求默认UX:移至高级面板超时,实施,代理。由Philippe Mouawad(p.mouawad at ubik-ingenierie.com)实施,由Ubik Load Pack提供(ubikloadpack.com支持)
  • 错误60548 - HTTP请求:允许上面板折叠
  • 错误57242 - HTTP授权不是使用HttpClient4预先设置的
  • 错误60727 - 删除commons-httpclient-3.1和相关元素。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误60790 - HTTP(S)测试脚本记录器:改进证书过期信息,并具有更好的启动/停止UX
  • 错误60888 - HttpRequest:添加选项以允许重试所有请求,包括NON Idempotent HTTP方法
  • 错误60896 - HTTP(S)测试脚本记录器:通过减少屏幕上的属性数量来改善UX

其他采样器

  • 错误60740 - 基于 Pull请求#241 - 支持所有JMS消息(字节,对象,...)和源(文件,文件夹)的变量由Maxime Chassagneux供稿(gime上的maxime.chassagneux)。
  • 错误60585 - JMS Publisher和JMS订阅服务器:允许重新连接错误并在错误之间暂停。基于 Pull请求#240 - 来自Logan Mauzaize(logan.mauzaize at gmail.com)和Maxime Chassagneux(maxime.chassagneux at gmail.com)。
  • 拉请求#259 - - 重构并重新格式化SmtpSampler。供稿人:Graham Russell(graham at ham1.co.uk)

控制器

  • 错误60672 - JavaScript函数/ IfController:默认情况下使用Nashorn引擎

听众

  • 错误60144 - 查看结果树:添加更新的浏览器渲染器以替换旧的渲染
  • 错误60542 - 查看结果树:允许上面板折叠。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误52962 - 允许按列对表,结束报告,聚合报告和聚合图中的查看结果进行排序。基于 Pull请求#245 - 由Logan Mauzaize(logan.mauzaize at gmail.com)和Maxime Chassagneux(maxime.chassagneux at gmail.com)。
  • 错误60590 - BackendListener:将Influxdb BackendListenerClient实现添加到JMeter。部分基于 Pull请求#246 - 由Logan Mauzaize(logan.mauzaize at gmail.com)和Maxime Chassagneux(maxime.chassagneux at gmail.com)。
  • 错误60591 - BackendListener:添加时间盒装采样。基于 Pull请求#237 - 由Logan Mauzaize(logan.mauzaize at gmail.com)和Maxime Chassagneux(maxime.chassagneux at gmail.com)。
  • 错误60678 - 查看结果树:文本渲染器,搜索不应弹出“找不到文本”
  • 错误60691 - 查看结果树:在Renderers(XPath,JSON Path Tester,RegExp Tester和CSS / JQuery Tester)中,下面板有时不可见,因为上面板太大而无法调整大小
  • 错误60687 - 当GUI收到大量事件时,使GUI更具响应性。
  • 错误60791 - 查看结果树:触发搜索搜索功能中的输入键,如果不匹配则显示红色背景
  • 错误60822 - ResultCollector不确保文件HashMap中的唯一文件名条目

定时器,断言,配置,预处理器和后处理器

  • 错误60154 - 用户参数GUI:允许在列表中上下移动行。供稿人:Murdecai777(https://github.com/Murdecai777)。
  • 错误60507 - 在ResponseAssertion中添加了“  ”功能。基于忻隆(qq.com的298015902)的贡献
  • 错误58943 - 创建更好的思考时间体验。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误60602 - XPath Extractor:添加匹配号以允许通过索引或所有匹配随机提取
  • 错误60710 - XPath Extractor:当应用断言的内容不是XML时,在View Results Tree中,提取器标记为Red并命名为SAXParseException。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误60712 - 响应断言:改进模式的渲染器
  • 错误59174 - 将包含静态主机的表添加到DNS缓存管理器。这样可以使用HttpClient4进行更好的虚拟主机测试。

功能

国际化

  • 用法语改进翻译“ save_as ”。基于Maxime Chassagneux  拉出请求#252(gime上的maxime.chassagneux)。
  • 错误60785 - 日语翻译的改进。由Kimono补丁(kimono.outfit.am在gmail.com)。

报告/仪表板

  • 错误60637 - 改进统计表设计
  • 错误60112 - 报告/仪表板:添加为每个事务名称自定义APDEX阈值的功能。供稿人:Stephane Leplus(s.leplus,来自ubik-ingenierie.com)

一般

  • 错误58164 - 在启动loadtest之前,检查ResultCollector侦听器上是否已存在文件
  • 错误54525 - 搜索功能:通过更换功能增强它
  • 错误60530 - 在测试运行时添加API以创建JMeter线程。基于Logan Mauzaize(logan.mauzaize at gmail.com)和Maxime Chassagneux(gime上的maxime.chassagneux)的贡献。
  • 错误60514 - 能够对事务控制器的子项应用命名约定。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误60711 - 改进断言/标题管理器/用户参数GUI的删除按钮行为/排除,包含在HTTP(S)测试脚本记录器中
  • 错误60593 - 切换到G1 GC算法
  • 错误60595 - 在JMeter GUI的开头添加SplashScreen。由Maxime Chassagneux供稿(gime上的maxime.chassagneux)。
  • 错误55258 - 从工具栏中删除“关闭”图标,并在菜单中添加“新建”。部分基于Sanduni Kanishka的贡献(https://github.com/SanduniKanishka)
  • 错误59995 - 允许用户使用两个新菜单项更改字体大小,并使用jmeter.hidpi.scale.factor缩放字体。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误60654 - 验证功能:能够忽略BackendListener。由Maxime Chassagneux供稿(gime上的maxime.chassagneux)。
  • 错误60646 - 工作台:默认保存
  • 错误60684 - 线程组:调度程序提前结束验证,持续时间为0或非常短。由Andrew Burton(grew的andrewburtonatwh)提供。
  • 错误60589 -迁移LogKit到SLF4J -降阿瓦隆,LogKit和Excalibur与3向后兼容性第三党模块。供稿人:Woonsan Ko(来自apache.org的woonsan)
  • 错误60565 - 将LogKit迁移到SLF4J - 优化日志记录语句。例如,消息格式args,throwable args,不必要的if-enabled-logging in simple等等。由Woonsan Ko提供(woonsan at apache.org)
  • 错误60564 - 将LogKit迁移到SLF4J - 用SLF4J替换LogKit记录器并保留当前的LogKit绑定解决方案以向后兼容插件。供稿人:Woonsan Ko(来自apache.org的woonsan)
  • 错误60664 - 添加UI菜单以设置日志级别。供稿人:Woonsan Ko(来自apache.org的woonsan)
  • 拉请求#276 - - 为波兰语区域设置添加了一些翻译。供稿人:Bartosz Siewniak(gart的barteksiewniak)
  • 错误60792 - 创建新的“帮助”菜单项以创建线程转储
  • 错误60813 - JSR223测试元素:考虑JMeterStopTestNowException,JMeterStopTestException和JMeterStopThreadException
  • 错误60814 - 菜单:添加打开最近的菜单项以使最近的文件加载更明显
  • 错误60815 - 从菜单中删除“重置GUI”
  • 错误60886 - 构建改进以更好地在代理背后的环境中启用构建。部分由Michael Osipov提供(michaelo at apache.org)

非功能性变化

  • 错误60415 - 删除对Java 7的支持。
  • 已更新至dnsjava-2.1.8.jar(来自2.1.7)
  • 更新为groovy 2.4.10(来自2.4.7)
  • 更新为httpcore 4.4.6(从4.4.5开始)
  • 更新到httpclient 4.5.3(从4.5.2开始)
  • 更新为jodd 3.8.1(来自3.7.1.jar)
  • 更新到jsoup-1.10.2(从1.10.1开始)
  • 更新为ph-css 5.0.3(来自4.1.6)
  • 更新为ph-commons 8.6.0(来自6.2.4)
  • 更新至slf4j-api 1.7.25(自1.7.21起)
  • 更新为asm 5.2(来自5.1)
  • 更新为rsyntaxtextarea-2.6.1(从2.6.0开始)
  • 更新为commons-net-3.6(从3.5开始)
  • 更新至json-smart-2.3(来自2.2.1)
  • 更新为accessors-smart-1.2(来自1.1)
  • 将旧的pdf教程转换为xml。
  • 请求#255 - - 利用Java 8(和7)功能来整理代码。供稿人:Graham Russell(graham at ham1.co.uk)
  • 错误59435 - JMeterTestCase不再支持JUnit3

Bug修复

HTTP采样器和测试脚本记录器

  • 错误60531 - HTTP Cookie管理器:更改实施不会更新Cookie策略
  • 错误60575 - HTTP GET请求可能有一个没有正文的内容类型标头。
  • 错误60682 - HTTP请求:由于设置了Content-Length标头,Get方法可能在重定向时失败
  • 错误60643 - HTTP(S)测试脚本记录器无法正确处理重启或停止后启动。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误60652 - HTTP PUT请求可能泄漏文件描述符。
  • 错误60689 - httpclient4.validate_after_inactivity没有影响导致使用可能过时/已关闭的连接
  • 错误60690 - “httpclient4.validate_after_inactivity”和“httpclient4.time_to_live”的默认值彼此相等使得验证无用
  • 错误60758 - HTTP(s)测试脚本记录器:数字请求可能会生成重复的数字。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误56939 - OPTIONS HTTP请求不传递参数
  • 错误60778 - Http Java Impl在SampleResult中不显示授权标头,即使它已被发送
  • 错误60837 - 即使httpclient4.retrycount高于0 ,也不会重试GET with body,PUT
  • 错误60842 - 使用基于Lagarto的HTML Parser加载嵌入式资源时修剪提取的URL。
  • 错误60928 - Http请求:当keepalive与嵌入式资源一起使用时连接泄漏

其他采样器

控制器

听众

  • 错误60648 - 如果测试非常短,GraphiteBackendListener可能会在测试结束时丢失一些指标
  • 错误60650 - AbstractBackendListenerClient不会在运行之间重置UserMetric
  • 错误60759 - 查看结果树:搜索功能不在URL中搜索。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误60859 - 保存对文件的响应:具有不同配置的2个元素将重叠

定时器,断言,配置,预处理器和后处理器

  • 错误60438 - 请求#235 - - 在JSON Extractor中提取新变量之前清除旧变量。基于Qi Chen的补丁(qi.chensh at ele.me)
  • 错误60607 - 忽略DNS缓存管理器配置
  • 错误60729 - 随机变量配置元素应允许最小==最大值
  • 错误60730 - 即使JSON路径只匹配一次,JSON PostProcessor也应设置_ALL变量。
  • 错误60747 - 响应断言:向要测试的字段添加请求标头
  • 错误60763 - XMLAssertion不应该将错误泄漏到控制台
  • 错误60797 - 暂停模式下的TestAction可以持续超出配置的测试持续时间

功能

  • 错误60819 - 函数__fileToString在找不到文件时不遵守文档合同

国际化

报告/仪表板

  • 错误60726 - 报告/仪表板:采样器的前5个错误不得考虑系列过滤
  • 错误60919 - 报告/仪表板:延迟与请求和响应时间Vs请求错误,如果粒度不同于1000(1秒)

一般

  • 错误60775 - NamePanel ctor调用可重写方法
  • 错误60428 - 当测试结束且useRegexpForSamplersList设置为true时,JMeter Graphite Backend Listener抛出异常基于Liu XP的补丁(sina.com上的liu_xp2003)
  • 错误60442 - 修复build.xml中的拼写错误(gavin at 16degrees.com.au)
  • 错误60449 - JMeter树:节点名称为空时的恼人行为
  • 错误60494 - 添加声纳分析任务来构建
  • 错误60501 - 搜索功能:检查正则表达式时的性能问题
  • 错误60444 - TestHTTPMirrorThread#testSleep()的间歇性失败供稿人:Thomas Schapitz(ts-nospam12 at online.de)
  • 错误60621 - maven central中的ApacheJMeter_config-3.1.jar缺少“ report-template ”文件夹
  • 错误60744 - 在加载测试计划期间重用时不会清除GUI元素,这可能会导致它们部分初始化为新测试元素的先前状态
  • 错误60812 - JMeterThread不遵守JMeterStopTestNowException的约定
  • 错误60857 - 如果saveservice.properties中未定义_file_encoding,则SaveService将省略XML标头
  • 错误60830 - 由于跨线程共享SimpleDateFormatter,CSV文件中的时间戳可能已损坏

谢谢

我们感谢上面的bug和改进部分中提到的所有贡献者:

  • Jerome Loisel(来自gmail.com的loisel.jerome)
  • Liu XP(sina.com上的liu_xp2003)
  • 齐辰(qi.chensh at ele.me)
  • (加入16degrees.com.au)
  • Thomas Schapitz(ts-nospam12 at online.de)
  • Murdecai777(https://github.com/Murdecai777)
  • Logan Mauzaize(gmail.com的logan.mauzaize)
  • Maxime Chassagneux(gmail.com的maxime.chassagneux)
  • 忻隆(qq.com网站298015902)
  • Ubik Load Pack
  • 格雷厄姆罗素(graham at ham1.co.uk)
  • Sanduni Kanishka(https://github.com/SanduniKanishka)
  • 安德鲁伯顿(andrewburtonatwh在gmail.com)
  • Woonsan Ko(来自apache.org的woonsan)
  • Bartosz Siewniak(barteksiewniak at gmail.com)
  • 和服(kimono.outfit.am在gmail.com)
  • Michael Osipov(apache.org上的michaelo)
  • Stephane Leplus(s.leplus,来自ubik-ingenierie.com)

我们也感谢帮助我们改进JMeter的bug记者。
对于此版本,我们要特别感谢以下记者在我们修复后做出的明确报告和测试:

  • Tuukka Mustonen(tumail.com的tuukka.mustonen)给了我们很多有用的反馈,帮助解决了 Bug 60689Bug 60690
  • Amar Darisa(gmail.com的amar.darisa)帮助我们提供了他对 Bug 60682的反馈

如果我们遗漏了其他人,请道歉。

已知问题和解决方法

  • Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。
  • 绿色框左侧显示的数字是活动线程数/线程总数,线程总数仅适用于本地运行的测试,否则将显示0(参见 错误55510)。
  • 请注意,在某些Windows系统下,您可能会遇到以下警告:
    java.util.prefs.WindowsPreferences
    警告:无法在root 0处打开/创建prefs根节点Software \ JavaSoft \ Prefs
    x80000002。Windows RegCreateKeyEx(...)返回错误代码5。
    
    修复是以管理员身份运行JMeter,它将为您创建注册表项,然后您可以作为普通用户重新启动JMeter,您将不再有警告。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException:证书不符合算法约束
    如果您在具有SSL证书(本身或其信任链中的SSL证书之一)的网站上使用MD2(如md2WithRSAEncryption)或大小低于1024位的SSL证书运行HTTPS请求。此错误与Java 8+中增强的安全性有关。 
    要允许您执行HTTPS请求,可以通过编辑Java jdk.certpath.disabledAlgorithms属性来降级Java安装的安全性。根据您的情况,删除MD2值或大小约束。 
    此属性在此文件中:
    JAVA_HOME / JRE / lib / security中/ java.security
    有关详细信息,请参阅 错误56357
  • 在Mac OSX下,由于镜像对数字的影响,聚合图表将显示错误的值。这是由于已知的Java bug,请参阅Bug JDK-8065373 。修复方法是使用JDK8_u45或更高版本。
  • 查看结果树可能无法在HTML呈现器下显示某些HTML代码,请参阅 错误54586这是由于已知的Java错误无法解析row / col属性中的“ px ”单位。请参阅Bug JDK-8031109 修复程序是使用JDK9 b65或更高版本(但请注意,Java 9尚未经过JMeter认证)。
  • 使用键盘进行JTable选择(SHIFT  +  向上/向下)在Mac OSX上完全无法使用JAVA 7。这是由于已知的Java错误JDK-8025126 修复是使用JDK 8 b132或更高版本。

版本3.1

摘要

新的和值得注意的

改进报告/仪表板

仪表板已经改进,有3个新图表和1个汇总表:

  • 连接时间图表:
  • 随时间变化的响应时间百分比(成功响应)图:
  • 响应时间概述图:
  • 采样表的前5个错误:
  • 有关错误表中错误的更多详细信息
  • 添加到统计表的平均响应时间:
  • Active Threads表现在堆栈线程:

新指标

引入了 一个新的sent_bytes指标,用于报告发送给服务器的字节数。此版本中默认启用了 
另一个度量标准connect_time

处理大回应

JMeter现在能够处理大于2GB的指标响应,限制已增加到9223372 TB。
为了处理如此大的响应,它现在也可以截断部分响应以避免过度内存。请参阅httpsampler.max_bytes_to_store_per_request属性。

新的__groovy功能

介绍一个启用Groovy函数的新函数__groovy这可能很方便,因为当在高度并发的测试计划中使用时,JavaScript可能非常慢(对于BeanShell而言相同)。

使用Groovy作为JSR-223元素的默认值

Groovy现在被设置为JSR-223元素的默认语言。如果要使用其他受支持的语言,则必须做出明确的选择。

 
默认情况下,默认情况下不会检查缓存编译脚本(如果可用),尽管我们建议您检查它并确保不使用$ {varName}语法来访问JMeter变量,而是使用vars.get(“varName”)
 

结果树视图中的格式化HTML源视图

现在可以查看结果树视图中的HTML源代码的格式。如果网页的代码已被删除所有多余的空白,这非常有用。

新格式化的HTML源视图新格式化的HTML源视图

能够使用新属性更新测试计划中的所有计时器

引入了 一个新属性timer.factor = 1.0f,它允许您将高斯,均匀和泊松定时器计算的暂停时间乘以它。这使您可以从一个地方更新Think Times,从而提高工作效率。

核心改进

  • 各种GUI和UX修复程序
  • 内存使用改进
  • JDBC Request现在能够返回Blob / Clob并计算延迟和连接时间
  • 3.0中引入的CSS Parsing已通过引入解析缓存进行了优化
  • HTTP请求现在能够在GET请求中处理正文,这对于弹性搜索请求很有用。

文档改进

  • 文档审查和改进,以便于启动
  • 属性参考文档部分

不兼容的变化

  • 此版本中引入了CSS Parsing of URL缓存,默认情况下已启用。它由属性css.parser.cache.size控制可以通过将其值设置为0来禁用它 Bug 59885
  • ThroughputController默认值已更改。现在默认值是Percent Executions,它是全局的,不再是每个用户。Bug 60023
  • 从版本3.1开始,HTML报告在计算度量时忽略空事务控制器(可能由If Controller吞吐量控制器生成)。这提供了更准确的指标
  • 从版本3.1开始,Summariser 在计算实时统计信息时忽略事务控制器生成的SampleResults ,请参阅 错误60109
  • 自从3.1版本,使用剥离模式时(默认情况下StrippedBatch使用),响应也将被剥离未能SampleResults,你可以通过设置恢复这以前的行为sample_sender_strip_also_on_error =假user.properties,看到 错误60137
  • 从版本3.1开始,jmeter.save.saveservice.connect_time属性值为true,表示结果的CSV文件将包含一个包含连接时间的附加列,请参阅 错误60106
  • 从版本3.1开始,随机定时器子类(高斯随机定时器,统一随机定时器和泊松随机定时器)实现接口org.apache.jmeter.timers.ModifiableTimer
  • 从3.1版开始,如果您没有在JSR223测试元素中选择任何语言,将使用Apache Groovy语言。 Bug 59945
  • 从版本3.1开始,CSV DataSet现在修剪变量名称,以避免在配置CSV DataSet时由于变量名称之间的空格而引起问题。除非您在变量名的开头或结尾使用空格,否则这不会对您产生任何影响。 Bug 60221
  • 从版本3.1开始,HTTP请求能够在使用HttpClient4(默认)实现来处理大于2147483647字节的响应时,即2GB。为了允许这两个属性被引入:
    • httpsampler.max_bytes_to_store_per_request(默认为10MB)将控制内存中的内容。默认情况下,JMeter只会在内存中保留前10MB的响应。如果响应大于此值并使用前10MB之后的断言,则必须增加此值
    • httpsampler.max_buffer_size将控制用于读取数据的缓冲区。以前JMeter使用了一个等于Content-Length头的缓冲区,这可能导致失败并使JMeter对错误应用程序的抵抗力降低,但请注意,如果您的应用程序返回Content-Length标头更高,这可能会影响响应时间并且会产生与先前版本略有不同的结果比当前的默认值(65KB)
     Bug 53039

已弃用和已删除的元素或功能

 

 
这些元素不再出现在菜单中,如果需要,可以修改not_in_menu属性。JMeter团队建议不再使用它们并迁移到他们的替代品。
 

 

改进

HTTP采样器和测试脚本记录器

  • 错误59882 - 减少内存分配以获得更好的吞吐量。供稿人:Benoit Wiart(b.wiart,来自ubik-ingenierie.com)通过 Pull请求#217 Pull请求#228 -
  • 错误59885 - 通过引入缓存优化嵌入式资源下载的CSS解析。供稿人:Benoit Wiart(b.wiart,来自ubik-ingenierie.com)通过 Pull请求#219 -
  • 错误60092 - 查看结果树:将PUT主体的缩短版本添加到采样器结果。
  • 错误60229 - 添加新指标:sent_bytes。由Philippe Mouawad(p.mouawad at ubik-ingenierie.com)实施,由Ubik Load Pack提供(ubikloadpack.com支持)
  • 错误53039 - HTTP请求:能够处理大小超过2147483647字节(即2GB)的响应
  • 错误60265 - HTTP请求:在“文件上载”选项卡中,您无法调整列的大小
  • 错误60318 - 使用ph-css库解析时忽略CSS警告。
  • 错误60358 - Http请求:允许发送HTTP GET请求的正文数据

其他采样器

  • 拉请求#211 - 区分JDBC采样器的时序。使用延迟和连接时间。供稿人:Thomas Peyrard(thure.peyrard,murex.com)
  • 错误59620 - 修复“JMS Publisher→随机文件从下面指定的文件夹”中的按钮操作,以允许选择目录
  • 错误60066 - 处理CLOB和BLOB并在必要时将它们存储在结果采样器中时限制它们。

控制器

  • 错误59351 - 改进IncludeController的日志/错误/消息。部分由Antonio Gomes Rodrigues提供(g00上的ra0077)
  • 错误60023 - 吞吐量控制器:使“执行百分比”和全局默认值。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误60082 - 验证模式:能够强制吞吐量控制器像设置为100%一样运行
  • 错误59349 - 在IncludeController中修改输入文件名中的空格。
  • 错误60081 - 交错控制器:添加一个选项以跨线程交替

听众

  • 错误59953 - GraphiteBackendListener:添加平均指标。部分由Maxime Chassagneux提供(gime上的maxime.chassagneux)
  • 错误59975 - 查看结果树:当内容笨重时,文本渲染器会恼人地向下滚动。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误60109 - Summariser:在其摘要计算中忽略TC生成的SampleResult
  • 错误59948 - 向查看结果树添加格式化且理智的HTML源代码渲染
  • 错误60252 - 将已发送的kbytes / s添加到“聚合报告和摘要”报告中
  • 错误60267 -UX:在查看结果树中,应该可以通过键入escape来关闭“配置”弹出窗口。供稿人:Ubik Load Pack(ubikloadpack.com支持)

定时器,断言,配置,预处理器和后处理器

  • 错误59845 - 在调试级别而不是错误时记录有关JSON路径不匹配的消息
  • 请求#212 - 允许在HTTP授权管理器中进行多项选择和删除。基于Benoit Wiart(b.wiart at ubik-ingenierie.com)的补丁
  • 错误59816 - 请求#213 - 允许在HTTP标头管理器中进行多项选择和删除。基于Benoit Wiart(b.wiart at ubik-ingenierie.com)的补丁
  • 错误59967 - CSS / JQuery Extractor:允许空的默认值。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误59974 - 响应断言:添加“ 从剪贴板添加”按钮供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误60050 - CSV数据集:当线程由于此配置而退出时,在日志中清除它
  • 错误59962 - 当响应代码为304时,缓存管理器不会更新到期日期
  • 错误60018 - 计时器:添加要应用于暂停的因子。部分基于Ubik Load Pack的补丁(ubikloadpack.com支持)
  • 错误60203 - 在XPath断言中为textarea使用更多可用空间。
  • 错误60220 - 将JSON路径后处理器重命名为JSON Extractor
  • 错误60221 - CSV数据集:修剪变量名称
  • 错误59329 - 在CSVDataSet中修改输入文件名中的空格。

功能

  • 错误59963 - 新函数__RandomFromMultipleVars:能够根据一个或多个变量的值计算随机值。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误59991 - 用于评估Groovy脚本的新函数__groovy供稿人:Ubik Load Pack(ubikloadpack.com支持)

国际化

  • 拉请求#214 - 为延迟启动线程添加西班牙语翻译。供稿人:AsierLostalé(openbravo.com的asier.lostale)。
  • 错误60348 - 为“ 另存为”更改中文翻译由XMeter提供(xmeter.net支持)。

报告/仪表板

  • 错误59954 - Web报告/仪表板:添加平均指标
  • 错误59956 - Web报告/仪表板:添加为一系列数据生成图表的功能
  • 错误60065 - 报告/仪表板:通过向“错误类型”添加响应消息来改进仪表板错误摘要。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误60079 - 报告/仪表板:添加新的“响应时间概述”图
  • 错误60080 - 报告/仪表板:添加新的“随时间连接时间”图表。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误60091 - 报告/仪表板:有一个包含最小/最大和百分位图的新报告。
  • 错误60108 - 报告/仪表板:在请求摘要舍入过于激进
  • 错误60098 - 报告/仪表板:减少“ jmeter.reportgenerator.statistic_window ”的默认值以减少内存影响
  • 错误60115 - 将开始/结束日期过滤器的日期格式属性添加到报告生成器中
  • 错误60171 - 报告/仪表板:活动线程随着时间的推移应该堆叠线以给出运行的线程总数
  • 错误60250 - 报告/仪表板:需要在HTML仪表板的统计报告中添加已发送的KB
  • 错误60287 - 报告/仪表板:仪表板中的采样器表有新的Top5错误。由Philippe Mouawad(p.mouawad at ubik-ingenierie.com)实施,由Ubik Load Pack提供(ubikloadpack.com支持)

一般

  • 错误59803 - 如果 JDBC连接配置中给出validationQuery请使用JDBC驱动程序中的isValid()方法
  • 错误57493 - 为属性创建文档页面
  • 错误59924 - 如果是log_level,则XXX的日志级别设置为DEBUG XXXX属性值包含空格,__ log函数也相同
  • 错误59777 - 将SLF4J绑定压缩到自己的jar中,并使其成为JMeter lib。
     
    如果在启动时收到有关多个SLF4J绑定的警告。删除Apache JMeter提供的绑定 lib / ApacheJMeter_slf4j_logkit.jar或所有其他报告的绑定。有关更多信息,您可以查看SLF4J自己的信息页面。
     
  • 错误60085 - 删除准备语句的缓存,因为它不适用于当前的JDBC池实现,当前的JDBC驱动程序应该支持缓存预准备语句本身。
  • 错误60137 - 在使用StrippedXXXX模式的分布式测试中,也会在出错时剥离响应
  • 错误60106 - 设置默认值:将“ jmeter.save.saveservice.connect_time ” 切换为true(3.0之后)
  • 拉请求#229 - 微小的内存分配改进。供稿人:Benoit Wiart(b.wiart,来自ubik-ingenierie.com)
  • 错误59945 - 对于所有JSR223元素,如果未在UI上选择脚本语言,则脚本将被解释为groovy脚本。
  • 错误60266 - 可用性/ UX:不应该关闭/退出/恢复/加载/加载最近的项目或从模板创建JMeter计划或在测试运行时打开新项目
  • 错误57305 -删除的依赖ProxyControlGuiPackage基于jarek102(gmail.com的jarek102)和Wyatt Epp(gmail.com的wyatt.epp)的补丁

非功能性变化

  • 更新到jsoup-1.10.1(从1.8.3开始)
  • 更新为ph-css 4.1.6(来自4.1.4)
  • 更新为tika-core和tika-parsers 1.14(来自1.12)
  • 更新为commons-io 2.5(从2.4开始)
  • 更新为commons-lang3 3.5(来自3.4)
  • 更新为commons-net 3.5(来自3.4)
  • 更新为groovy 2.4.7(从2.4.6开始)
  • 更新为httpcore 4.4.5(从4.4.4开始)
  • 更新至slf4j-api 1.7.21(自1.7.13起)
  • 更新至rsyntaxtextarea-2.6.0(自2.5.8起)
  • 更新到xstream 1.4.9(从1.4.8开始)
  • 更新为jodd 3.7.1(来自3.6.7.jar)
  • 更新到xmlgraphics-commons 2.1(从2.0.1开始)
  • 请求#215 - 使用新添加的方法GuiUtils#cancelEditing减少重复代码供稿人:Benoit Wiart(b.wiart,来自ubik-ingenierie.com)
  • 拉请求#218 - 其他清理。供稿人:Benoit Wiart(b.wiart,来自ubik-ingenierie.com)
  • 拉请求#216 - 尽可能重用模式。供稿人:Benoit Wiart(b.wiart,来自ubik-ingenierie.com)
  • 错误60364 - 文档测试覆盖率。供稿人:Thomas Schapitz(ts-nospam12 at online.de)

Bug修复

HTTP采样器和测试脚本记录器

  • 错误58888 - HTTP(S)测试脚本记录器(ProxyControl)不添加SamplerCreator返回的TestElement#createChildren()
  • 错误59902 - 设置httpclient.socket.https.cps属性时Https握手失败
  • 错误60084 - JMeter 3.0嵌入式资源URL以静默方式编码
  • 错误60376 - Http测试脚本记录器:如果服务器使用deflate,则记录可能会破坏应用程序

其他采样器

  • 错误59113 - JDBC连接配置:如果使用常量而不是数字,则事务隔离级别未正确设置

控制器

  • 错误60361 - ModuleController:如果测试计划包含引用未阻止控制器的模块控制器,则GUI模式下的JMeter将不会停止

听众

  • 错误 59712 - 解码失败时在RequestView中显示原始查询。基于Teemu Vesala(qemine..com上的teemu.vesala)的补丁
  • 错误60278 - 自2.13(以及 错误57514以来,聚合图,摘要报告和聚合报告在保存的文件csv中保存的错误,速率和带宽值中丢失了精度
  • 错误60360 - 查看结果树:请求选项卡不显示DELETE请求的正文

定时器,断言,配置,预处理器和后处理器

  • 错误59964 - JSR223测试元素:缓存编译的脚本(如果可用)未正确重置。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误59609 - 将JSON后处理器中提取的JSON对象格式化为JSON。
  • 错误60332 - 查看结果树:使用Windows LAF,JSON Extractor不显示JSON路径表达式和结果面板

功能

国际化

一般

  • 错误59400 - 在使用-X选项时停止时取消UnmarshalException 
  • 错误59607 - 当读取大型测试计划(大于2GB)时,JMeter崩溃。基于Felix Draxler(sap.com上的felix.draxler)的修复
  • 错误59621 - 报告仪表板中的错误计数是一次性的。
  • 错误59657 - 当设置了属性jsyntaxtextarea.font.family时,仅在JSyntaxTextArea中设置字体
  • 错误59720 - Windows上的批处理测试文件比较失败,因为XML文件生成为EOL = LF
  • 代码清理。格雷厄姆·拉塞尔(格雷厄姆在ham1.co.uk)的补丁
  • 错误59722 - 使用StandardCharsets减少拼写错误的Charset名称的可能性。
  • 错误59723 - 尽可能使用jmeter.properties进行测试
  • 错误59726 - 用于检查CSV标头文本和样本格式是否未意外更改的单元测试
  • 错误59889 - 在仪表板的报告中将编码更改为UTF-8。
  • 错误60053 - 在非GUI模式下,在生成报告时,测试结束时会显示Stacktrace
  • 错误60049 - 使用具有高延迟的定时器或具有低吞吐量的恒定吞吐量定时器时,调度程序可能需要花费大量时间才能退出,对于关闭测试也是如此
  • 错误60089 - 报告/仪表板:字节吞吐量随时间推移已反转已发送和已接收字节。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误60090 - 报告/仪表板:空事务控制器不应计入指标
  • 错误60103 - 报告/仪表板:请求摘要包括导致错误百分比的事务控制器
  • 错误60105 - 报告/仪表板:报告需要检查事务控制器“ 生成父样本 ”选项,修复相关问题
  • 错误60107 - 报告/仪表板:在StatisticSummary中,TransactionController SampleResult使总计行错误
  • 错误60110 - 报告/仪表板:在响应时间百分位数,滑块是无用的
  • 错误60135 - 报告/仪表板:随时间变化的活动线程应处于超时部分
  • 错误60125 - 报告/仪表板:如果默认分隔符为\ t,则无法生成仪表板根据Tamas Szabadi的报告(右侧的tamas.szabadi)
  • 错误59439 - 报告/仪表板:AbstractOverTimeGraphConsumer.createGroupInfos()应该是抽象的
  • 错误59918 - Ant生成的HTML报告已损坏(extras文件夹)
  • 错误60295 - 当只找到一个元素时,JSON Extractor不会索引数组元素。基于Roberto Braga(sociale.it的roberto.braga)的补丁
  • 错误60299 - 带调度程序的线程组:当结束时间过去时出现奇怪的行为

谢谢

我们感谢上面的bug和改进部分中提到的所有贡献者:

  • Felix Draxler(sap.com上的felix.draxler)
  • Antonio Gomes Rodrigues(g00上的ra0077)
  • 格雷厄姆罗素(graham at ham1.co.uk)
  • Teemu Vesala(qentinel.com上的teemu.vesala)
  • AsierLostalé(openbravo.com的asier.lostale)
  • Thomas Peyrard(thure.peyrard在murex.com)
  • Benoit Wiart(b.wiart at ubik-ingenierie.com)
  • Maxime Chassagneux(gmail.com的maxime.chassagneux)
  • Ubik Load Pack
  • Tamas Szabadi(右侧的tamas.szabadi)
  • Roberto Braga(roberto.braga at soziale.it)
  • gmail.com的jarek102
  • Wyatt Epp(wy的wyatt.epp)
  • Thomas Schapitz(ts-nospam12 at online.de)

我们也感谢帮助我们改进JMeter的bug记者。
对于此版本,我们要特别感谢以下记者在我们修复后做出的明确报告和测试:

如果我们遗漏了其他人,请道歉。

已知问题和解决方法

  • Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。
  • 绿色框左侧显示的数字是活动线程数/线程总数,线程总数仅适用于本地运行的测试,否则将显示0(参见 错误55510)。
  • 请注意, 在某些Linux系统上存在Java中的错误,在运行测试用例或JMeter本身时会将其显示为以下错误:
     [java]警告:无法刷新用户首选项:
     java.util.prefs.BackingStoreException:
     java.lang.IllegalArgumentException:不支持:indent-number
    
    这不会影响JMeter操作。自Java 7b05以来,此问题已得到解决。
  • 请注意,在某些Windows系统下,您可能会遇到以下警告:
    java.util.prefs.WindowsPreferences
    警告:无法在root 0处打开/创建prefs根节点Software \ JavaSoft \ Prefs
    x80000002。Windows RegCreateKeyEx(...)返回错误代码5。
    
    修复是以管理员身份运行JMeter,它将为您创建注册表项,然后您可以作为普通用户重新启动JMeter,您将不再有警告。
  • 使用Oracle Java 7和Mac Book Pro Retina Display,JMeter GUI可能看起来很模糊。这是一个已知的Java错误,请参阅Bug JDK-8000629解决方法是使用Java 7 update 40运行时修复此问题。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException:证书不符合算法约束
    如果您在具有SSL证书(本身或其信任链中的SSL证书之一)的网站上使用MD2(如md2WithRSAEncryption)或大小低于1024位的SSL证书运行HTTPS请求。此错误与Java 7版本u16(MD2)和版本u40(证书大小低于1024位)以及Java 8的安全性增加有关。 
    要允许您执行HTTPS请求,可以通过编辑Java jdk.certpath.disabledAlgorithms属性来降级Java安装的安全性。根据您的情况,删除MD2值或大小约束。 
    此属性在此文件中:
    JAVA_HOME / JRE / lib / security中/ java.security
    有关详细信息,请参阅 错误56357
  • 在Mac OSX下,由于镜像对数字的影响,聚合图表将显示错误的值。这是由于已知的Java bug,请参阅Bug JDK-8065373 。修复方法是使用JDK7_u79,JDK8_u45或更高版本。
  • 查看结果树可能无法在HTML呈现器下显示某些HTML代码,请参阅 错误54586这是由于已知的Java错误无法解析row / col属性中的“ px ”单位。请参阅Bug JDK-8031109 修复方法是使用JDK9 b65或更高版本。
  • 使用键盘进行JTable选择(SHIFT  +  向上/向下)在Mac OSX上完全无法使用JAVA 7。这是由于已知的Java错误JDK-8025126 修复是使用JDK 8 b132或更高版本。

版本3.0

摘要

新的和值得注意的

测试计划创建和调试改进

查看结果树中的新搜索功能允许在请求/响应/标题/ Cookies /中搜索文本/正则表达式...这将简化关联和测试计划创建

新的JSON后处理器,可以使用用户友好的JSON-PATH语法更好地从JSON内容中提取数据

JSON现在是JMeter的一等公民,引入了新的JSONPath后处理器。此后处理器与Regular Expression Post Processor非常相似,但非常适合JSON代码。它基于Jayway JSON Path库

新的验证功能,只需单击一次即可运行一组具有1个用户的线程组,无暂停和1次迭代

JSR223测试元素不再需要缓存编译密钥

只需检查Cache编译脚本(如果可用)复选框,元素(预处理器,后处理器,断言,监听器......)将预编译脚本并在基础语言支持时缓存已编译的代码

Nashorn现在可以用作Javascript引擎,提供更好的性能和更简单的使用

要启用Nashorn,您需要在user.properties中设置

javascript.use_rhino = FALSE

Nashorn可以在以下元素中与Java 8一起使用:

  • IfController
  • JSR223 选择javascript语言的测试元素
  • __javaScript函数

Jexl3已经集成。它提供了新的脚本功能和更好的文档

JEXL3现在可以使用多亏了新的功能__jexl3JEXL是一种非常类似于JSTL的语言。

简化的HTTP请求UI

HTTP请求中添加了一个新的“ 高级 ”选项卡以简化配置。文件上载功能已移至专用选项卡。这增加了UI中参数的可用空间并简化了UX。

HTTP请求默认值改进

您现在可以在“高级”选项卡中配置“源地址”(IP欺骗功能)和“ 将响应另存为MD5哈希 ”

报告改进

新报告功能在HTML页面中生成动态图形(APDEX,摘要报告和图形)

现在可以在加载测试结束时生成动态HTML报告,也可以随时从结果文件生成动态HTML报告。有关更多详细信息,请参阅生成仪表板此报告提供以下指标:

  • APDEX(应用程序性能指数)表,根据容许和满足阈值的可配置值计算APDEX
  • 显示成功和失败事务百分比的请求摘要图:
  • 统计表,在一个表中提供每个事务的所有度量标准的摘要,包括3个可配置的百分位数:
  • 一个错误表,提供所有错误的摘要及其在总请求中的比例:
  • Zoomable图表,您可以在其中检查/取消选中每个交易以显示/隐藏它:
    • 响应时间随时间变化:
    • 字节吞吐量随时间变化:
    • 延迟时间:
    • 每秒点击次数:
    • 每秒响应代码:
    • 每秒事务数:
    • 响应时间与每秒请求数:
    • 延迟与每秒请求数:
    • 响应时间百分位数:
    • 活动线程随着时间的推移:
    • 时代与主题:
    • 响应时间分布:

GraphiteBackendListener有一个新的Server Hits指标

Summariser显示更可读的持续时间

现在持续时间以小时:分钟:秒的格式显示

生成摘要结果+ 00:00:01 = 1.7 / s平均:1分钟:1最大值:1错误:0(0.00%)活动:1开始:1完成:0
生成汇总结果+ 00在00:00:09 = 16.2 / s平均值:0最小值:0最大值:1错误:0(0.00%)活动:9开始:9完成:0
生成汇总结果= 00在00:00:09 = 15.3 / s平均值:0最小值:0最大值:1错误:0(0.00%)
生成摘要结果+ 467 00:00:10 = 47.0 / s平均:0最小值:0最大值:1错误:0(0.00%)活动:19开始时间:19结束:0
生成汇总结果= 00:00:00 =时的606 = 31.9 / s平均值:0最小值:0最大值:1误差:0(0.00%)
生成摘要结果+ 1662 00:00:10 = 166.1 / s平均:0最小值:0最大值:1错误:0(0.00%)活动:50开始:50完成:0
生成汇总结果= 28932 00:03:19 = 145.4 / s平均值:0最小值:0最大值:1误差:0(0.00%)
生成摘要结果+ 1664 00:00:10 = 166.4 / s平均:0最小值:0最大值:1错误:0(0.00%)活动:50开始:50完成:0
在00:03:29生成汇总结果= 30596 = 146.4 / s平均值:0最小值:0最大值:1误差:0(0.00%)
生成摘要结果+ 1661在00:00:10 = 166.1 / s平均:0最小值:0最大值:1错误:0(0.00%)活动:50开始:50完成:0
在00:03:39中生成汇总结果= 32257 = 147.3 / s平均值:0最小值:0最大值:1误差:0(0.00%)

BackendListener现在允许您将采样器列表定义为正则表达式

您现在可以使用正则表达式来选择要过滤的采样器。使用参数:useRegexpForSamplersList =真放正则表达式中的参数samplersList

协议和负载测试改进

已启动到HttpClient 4.5.2的迁移。虽然没有完全完成,但它改善了JMeter中的许多领域

迁移到HttpClient 4.5.2改进了JMeter的以下字段:

  • 支持最近的RFC,如用于Cookie的HTTP状态管理机制RFC-6265,您应该在HTTP Cookie管理器组件中使用现在的HC4CookieHandler并选择标准 Cookie策略
  • 服务器名称指示(SNI)支持HttpClient4实现
  • 针对Stale连接和Keep-Alive管理的改进且性能更好的验证机制,请参阅属性httpclient4.validate_after_inactivityhttpclient4.time_to_live
  • 自JMeter 2.13中使用的先前版本4.2.6以来的许多错误修复,请参阅HttpClient 4.5.X发行说明
  • 更好地支持HTTP RFC 2616 / RFC 7230并修复了deflate压缩管理问题

并行下载现在是现实的,并且扩展得更好:

  • 解析CSS导入的文件(通过@import)或嵌入的资源(背景,图像,......)
  • SSL上下文的延迟初始化:对于15个线程,仅对HTTP测试在5分钟内增加138%的采样。随着线程数量的增加,增益会增加
  • 并行下载的连接管理的返工:这更好地模拟了当前的浏览器行为并提高了吞吐量。对于15个螺纹,在5分钟内增加135%的额外样品。
  • 通过ThreadPool重用用于并行下载的线程:这可以提高吞吐量并增加此类测试的JMeter可伸缩性
  • 在15个线程的测试中发现总吞吐量增加了750%,你获得的线程越多,获得的收益就越多
  • 您现在可以只计算和存储嵌入式资源的MD5,而不是存储整个响应,这可以通过设置属性httpsampler.embedded_resources_use_md5 = true来完成

示例超时功能简介

这个新的Sample Timeout预处理器允许您对其范围内的元素应用Timeout。在下面的屏幕截图中,10秒超时适用于Debug SamplerHTTP Request元素。

JDBC请求现在使用DBCP2池

已更新JDBC请求和JDBC连接配置,以通过Apache Commons DBCP2池替换旧的Excalibur池。因此,在可用且已更新UI时,属性已迁移到等效项。请注意,与Excalibur不同,Commons DBCP在创建池时使用验证查询。因此,请确保查询有效。默认查询适合许多数据库,但不是全部 - 例如Oracle要求' SELECT 1 FROM DUAL '或类似数据库。

用户体验改进:

更好地显示HiDPI屏幕

请参阅用户手册中的Linux或Windows上的提示和提示部分的带有HiDPI屏幕的JMeter

新图标外观和徽标

JMeter有一个由Felix Schumacher创建的新Logo。
图标也被刷新,以提供更现代的风格,使它们更有意义

很多烦人的小虫子

通过不允许选择不兼容的选项,已经进行了大约40个UI修复,以修复错误,混乱行为或简化使用

改进的线程组UI和相关操作(启动启动无计时器验证

通过允许您仅启动选择的线程组,启动它们而不应用定时器(从而获得时间)或使用新的验证模式启动它们,可以大大简化负载测试之前的测试计划。此验证模式允许您使用1个线程,1次迭代并且不应用定时器来启动线程组(无需修改)。此验证模式可以自定义。

新的快捷方式

  • 添加最常用的元素(Ctrl  +  0 ... Ctrl  +  9),可通过gui.quick_ XXX属性进行配置
  • 用于扩展节点的快捷方式

核心改进

配置简化,具有更好的默认值

已修改许多属性的默认值,以使JMeter配置成为最佳开箱即用。请阅读“不兼容的更改”部分以获取更多详细信息。

Apache Groovy与JMeter捆绑在一起

Apache Groovy是众所周知的JVM脚本语言,现在与lib文件夹中的Apache JMeter捆绑在一起。这允许您通过选择Groovy语言立即通过JSR223 Elements使用它。

删除了多余的旧属性

为了保持向后兼容性或提供一些多余的自定义而存在的旧属性已被删除。阅读“不兼容的更改”部分以查看已删除的属性。

代码和文档改进

  • 迁移到Java7源代码并使用其语法糖
  • 主要代码清理
  • 全面审查文档和内容和演示文稿的改进

单元测试的改进

  • 将许多测试迁移到JUnit 4
  • 更好地管理无头测试
  • 更多单元测试

依赖关系刷新

已弃用的库已被删除或替换为最新的库:

  • Excalibur由commons-dbcp取代
  • htmllexer,删除了htmlparser
  • 去掉肥皂
  • jdom被删除了

Slf4j现在可以在插件和核心代码中使用

您现在可以在自定义插件或org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient子类中使用SLF4J日志包装器

不兼容的变化

  • 从3.0版开始,Groovy-2.4.6与JMeter(lib文件夹)捆绑在一起,确保通过属性search_pathsuser.classpath删除旧版本或引用版本
  • 从版本3.0开始,jmeter.save.saveservice.assertion_results_failure_message属性值为true,表示结果的CSV文件将包含一个包含断言结果响应消息的附加列,请参阅 错误58978
  • 从版本3.0开始,jmeter.save.saveservice.print_field_names属性值为true,表示结果的CSV文件将包含字段名称作为CSV中的第一行,请参阅 错误58991
  • 从版本3.0开始,jmeter.save.saveservice.idle_time属性值为true,表示CSV / XML结果文件将包含一个包含采样器之间空闲时间的附加列,请参阅 错误57182
  • 在RandomTimer类中,受保护的实例计时器字段已被getTimer()保护的方法替换,这与 Bug 58100有关这可能会影响3 第三方插件。
  • 从版本3.0开始,您可以在Java8下使用Nashorn Engine(默认的javascript引擎是Rhino)来使用Javascript引擎(__javaScriptIfController)。如果要使用它,请使用属性javascript.use_rhino = false,请参阅 错误58406
     
    注意:在将来的版本中,我们默认会切换到Nashorn。鼓励用户报告与使用Nashorn而不是Rhino相关的任何问题。
  • 从版本3.0开始,如果消息源是“ From File ”并且“ Filename ”字段发生更改(例如,如果它使用已更改的变量),则JMS Publisher将重新加载文件的内容
  • org.apache.jmeter.gui.util.ButtonPanel已被删除,如果你用它在3 聚会插件或定制开发确保您更新的代码。 Bug 58687
  • 物业jmeterthread.startearlier已被删除。 Bug 58726
  • 物业jmeterengine.startlistenerslater已被删除。 Bug 58728
  • 属性jmeterthread.reversePostProcessors已被删除。 Bug 58728
  • 属性jmeter.toolbar.display已被删除,现在始终显示工具栏。 Bug 59236
  • 属性jmeter.errorscounter.display已被删除,现在始终显示错误/警告计数器。 Bug 59236
  • 属性xml.parser已被删除,因为org.apache.jmeter.util.JMeterUtils#getXMLParser已被弃用且未被使用,因此不再使用它。 Bug 59236
  • Summariser监听器现在以HH格式显示持续时间:mm:ss(小时:分钟:秒),它先前以秒为单位显示持续时间。 Bug 58776
  • org.apache.jmeter.protocol.http.visualizers.RequestViewHTTP.getQueryMap签名已更改,如果使用它,请确保更新代码。 Bug 58845
  • 如果收到的消息数不等于预期的消息数,JMS订户将认为样本是错误的。如果收到至少1条消息,它之前认为样本OK。 Bug 58980
  • 从版本3.0开始,HTTP(S)测试脚本记录器默认使用端口8888(使用录制模板时配置)。 Bug 59006
  • 从版本3.0开始,依赖于htmlparser库(HtmlParserHTMLParser)的嵌入式资源的解析器(由基于Lagarto的实现的2.10替换)已经与其依赖项一起被删除。
  • 从3.0版开始,已删除对读取旧Avalon格式JTL(结果)文件的支持,请参阅 错误59064
  • 从版本3.0开始,http.java.sampler.retries的默认属性值已更改为0(默认情况下不重试),以使其与HttpClient4的行为保持一致。
     
    另请注意,其含义已更改:在3.0之前,http.java.sampler.retries = 1表示无重试(即总尝试次数= 1),因为3.0 http.java.sampler.retries = 1表示1次重试。(注意:这仅适用于Java HTTP Sampler)
     
     Bug 59103
  • 从3.0开始,已删除以下已弃用的类
    • 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已替换为httpsampler.parallel_download_thread_keepalive_inseconds,现在是并行下载线程的保持活动时间(以秒为单位)。
  • JDBC Request已更新为使用commons-dbcp2,从那时起行为略有不同,确保您的数据库具有正确的“验证查询”。 Bug 58786
  • 以下罐子已被删除:
  • JMeter允许的最大重定向数现在为20,之前为5.这可以使用属性httpsampler.max_redirects进行更改 Bug 59382

已弃用和已删除的元素

  • MongoDB元素(MongoDB Source Config,MongoDB Script)已被弃用,将在下一版本的JMeter中删除。它们不再出现在菜单中,如果您需要它们修改not_in_menu属性。JMeter团队建议不再使用它们。 Bug 58772
  • 在2.13版本中已弃用的WebService(SOAP)请求和HTML参数掩码现已根据我们的弃用策略删除这些元素仅使用的类和属性已被删除:
    • org.apache.jmeter.protocol.http.util.DOMPool
    • org.apache.jmeter.protocol.http.util.WSDLException
    • org.apache.jmeter.protocol.http.util.WSDLHelper
    • 属性soap.document_cache
    • JAR soap-2.3.1也被删除了
  • __jexl函数(即JEXL 1)已被弃用,将在下一版本中删除。 Bug 58903
  • Spline Visualizer侦听器和Distribution Graph侦听器已被弃用,将在下一版本的JMeter中删除。它们不再出现在菜单中,如果您需要它们修改not_in_menu属性。JMeter团队建议不再使用它们。 Bug 58791

改进

HTTP采样器和测试脚本记录器

  • 错误57696 - HTTP请求:在资源下载失败时改进responseMessage。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误57995 - 将FileServer用于HTTP请求文件。由Andrey Pokhilko(andrey在blazemeter.com)实施,由BlazeMeter Ltd.提供。
  • 错误58843 - 改进HTTP采样器GUI中的可用空间。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58852 - 为PUT请求使用更少的内存上传的数据将不再存储在采样器中。这与POST请求的行为相同
  • 错误58860 - HTTP请求:通过右键单击在HTTP参数表中添加自动变量生成。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58923 - 下载嵌入资源时规范化URI。
  • 错误59005 - HTTP采样器:添加了WebDAV动词(SEARCH)。
  • 错误59006 - 将默认代理记录端口更改为8888以使其与记录模板对齐。供稿人:Antonio Gomes Rodrigues(g00上的ra0077)
  • 错误58099 - 性能:懒惰地初始化HttpClient SSL上下文,以避免其初始化,即使对于仅HTTP方案
  • 错误57577 - HttpSampler:检索所有嵌入式资源,添加属性“ httpsampler.embedded_resources_use_md5 ”仅计算md5而不保留响应数据。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59023 - HttpSampler UI:重新编写嵌入式资源标签,并将默认的并行下载数更改为6供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59028 - 使用SystemDefaultDnsResolver单例。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59036 - FormCharSetFinder:使用JSoup而不是弃用的HTMLParser
  • 错误59034 - 并行下载连接管理是不现实的。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)和Philippe Mouawad
  • 错误59060 - HTTP请求GUI:将文​​件上载移动到新选项卡以获得更多参数空间并防止不兼容的配置。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59103 - HTTP请求Java实现:更改默认的“ http.java.sampler.retries ”以使其在HttpClient行为上对齐并使名称有意义
  • 错误59083 - HTTP请求:使“方法”字段可编辑,以便可以轻松添加其他方法(WebDAV)
  • 错误59118 - 通过代理记录器在记录的思考时间添加评论。供稿人:Antonio Gomes Rodrigues(g00上的ra0077)
  • 错误59116 - 添加为代理记录的采样器名称设置前缀的可能性。部分基于Antonio Gomes Rodrigues(ra0077 at gmail.com)的补丁
  • 错误59129 - HTTP请求:使用简单/高级选项卡简化GUI
  • 错误59033 - 并行下载:返工Parser类层次结构,允许插件解析器用于不同的mime类型
  • 错误52073 - 嵌入式资源并行下载:通过避免每个样本关闭ThreadPoolExecutor来提高性能。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59190 - HTTP(S)测试脚本记录器:建议的排除应忽略大小写。供稿人:Antonio Gomes Rodrigues(g00上的ra0077)
  • 错误59140 - 并行下载:添加CSS解析以从CSS文件中提取链接
  • 错误59249 - Http请求默认值:添加“ 源地址 ”和“ 将响应保存为MD5 ”
  • 错误59382 -为了获得更加逼真默认值httpsampler.max_redirects

其他采样器

  • 错误57928 - 添加为AccessLogSampler GUI定义协议(http / https)的功能。供稿人:JérémieLesage(jeremie.lesage at jeci.fr)
  • 错误58300 - 使现有Java采样器实现可中断
  • 错误58160 - JMS Publisher:如果文件名更改,则重新加载文件内容。部分基于由Maxime Chassagneux(gime上的maxime.chassagneux)提供的补丁
  • 错误58786 - JDBC Sampler:用更新的库commons-dbcp2替换Excalibur DataSource
  • 错误59205 - TCP采样器:建立连接时设置采样器中的连接时间。
  • 错误59381 - JMSPublisher:FileChooserDialog过滤器不适用于浏览器按钮。部分基于Antonio Gomes Rodrigues(ra0077 at gmail.com)提供的补丁

控制器

  • 错误58406 - IfController:允许使用Nashorn引擎(如果可用于JavaScript评估)
  • 错误 58281 - RandomOrderController:改进随机算法性能。供稿人:Graham Russell(jum at ham1.co.uk)
  • 错误58675 - 模块控制器:很容易错过错误消息。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58673 - 模块控制器:禁用目标元素时,将显示默认的jtree图标。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58674 - 模块控制器:不应该在树中选择多个节点。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58680 - 模块控制器:ui增强。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58989 - 记录控制器gui:添加一个按钮以清除所有记录的样本。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)

听众

  • 错误58041 - 树视图侦听器应显示示例数据类型
  • 错误58122 - GraphiteBackendListener:添加服务器命中度量标准。部分基于Amol Moye的补丁(amol.moye at thomsonreuters.com)
  • 错误58681 - GraphiteBackendListener:如果没有发生采样,则不发送数据
  • 错误58776 - Summariser应显示更可读的持续时间
  • 错误58791 - 弃用侦听器:分布图(alpha)和样条曲线可视化器
  • 错误58849 - 查看结果树:将搜索面板添加到请求http视图,以便能够在参数表中进行搜索。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58857 - 查看结果树:请求视图http不允许调整参数表第一列的大小。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58955 - 请求视图http无法正确显示multipart / form-data中的http参数。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误55597 - 查看结果树:添加搜索功能以搜索记录的采样器
  • 错误59102 - 查看结果树:“ view.results.tree.max_size ”的默认值更好
  • 错误59099 - 后端监听器:添加将samplersList视为正则表达式的可能性。供稿人:Antonio Gomes Rodrigues(g00上的ra0077)
  • 错误59424 - Visualizer:在弹出菜单中添加“清除”

定时器,断言,配置,预处理器和后处理器

  • 错误58303 - 更改SMIMEAssertion中bouncycastle api的使用以消除弃用警告。
  • 错误58515 - 与JSON相关的新组件:View Results Tree中的JSON-PATH Extractor和JSON-PATH Renderer。由Ubik Load Pack捐赠(ubikloadpack.com支持)。
  • 错误58698 - 在HTTP授权管理器中正确解析auth文件。
  • 错误58756 - CookieManager:Cookie策略选择框内容必须依赖于Cookie实现。
  • 错误56358 - Cookie管理器支持跨端口cookie和RFC6265。感谢Oleg Kalnichevski(来自apache.org的olegk)
  • 错误58773 - TestCacheManager:为使用HttpClient 4的CacheManager添加测试
  • 错误58742 - CompareAssertion:在gui中的不同CompareAssertions之间切换时,重置TableEditor中的数据。基于Vincent Herilier的补丁(vmail.com的vherilier)
  • 错误59108 - TableEditor:允许行上下移动。供稿人:Vincent Herilier(gmail.com的vherilier)
  • 错误58848 - 参数面板:添加参数(添加按钮或从剪贴板)时,将表格滚动到新行。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58865 - 在正则表达式提取器中允许空的默认值。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59156 - XMLAssertion:使用XMLReader删除jdom依赖项
  • 错误59328 - CSVDataSet中变量名称的更好工具提示。供稿人:Antonio Gomes Rodrigues(g00上的ra0077)

功能

  • 错误58477 - __javaScript函数:允许对Java8及更高版本使用Nashorn引擎
  • 错误58903 - 提供使用commons-jexl3和不推荐的__jexl(1.1)函数的__jexl3函数

国际化

一般

  • 错误58736 - 添加示例超时支持
  • 错误57913 - 自动备份上次保存的JMX文件。供稿人:Benoit Vatan(gmail.com的benoit.vatan)
  • 错误57988 - 快捷方式(Ctrl  +  1 ... Ctrl  +  9)可快速将元素添加到测试计划中。由Andrey Pokhilko(andrey在blazemeter.com)实施,由BlazeMeter Ltd.提供。
  • 错误58100 - 性能增强:通过ThreadLocalRandom替换Random。
  • 错误58677 - TestSaveService#testLoadAndSave使用错误的文件集。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58689 - 添加快捷方式以展开/折叠树的一部分。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58696 - 创建Ant任务以设置Eclipse项目
  • 错误58653 - 带有动态图表的新JMeter仪表板/报告,用于帮助分析负载测试结果的表格。由Ubik-Ingenierie开发,由Decathlon SA和Ubik-Ingenierie / UbikLoadPack提供
  • 错误58699 - 工作台更改既未保存也未提示在关闭时保存。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58728 - 删除旧的行为属性
  • 错误57319 - 升级到HttpClient 4.5.2。在Oleg Kalnichevski(amack.org的olegk)和Gary Gregory(apg.org的ggregory)的大力帮助下。
  • 错误58772 - 弃用与MongoDB相关的元素
  • 错误58782 - ThreadGroup:改善人体工程学
  • 错误58165 - 显示自GUI模式下负载测试开始以来经过的时间。部分基于Maxime Chassagneux的贡献(gime上的maxime.chassagneux)
  • 错误58814 - JVM不再识别选项MaxLiveObjectEvacuationRatio ; 从评论中删除
  • 错误58810 - 配置元素计数器(和其他):复选框切换区域太大
  • 错误56554 - JSR223测试元素:自动生成编译缓存键。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58911 - 标题管理器:应该可以在标题管理器之间复制/粘贴。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58864 - 参数面板:使用向上/向下移动参数时,请确保选择仍然可见。基于Benoit Wiart的贡献(在gmail.com的benoit dot wiart)
  • 错误58968 - 添加新模板以允许记录包含思考时间的脚本。供稿人:Antonio Gomes Rodrigues(g00上的ra0077)
  • 错误58978 - 设置默认值:将“ jmeter.save.saveservice.assertion_results_failure_message” 切换为true(在2.13之后)
  • 错误58991 - 设置默认值:将“ jmeter.save.saveservice.print_field_names ” 切换为true(在2.13之后)
  • 错误57182 - 设置默认值:将“ jmeter.save.saveservice.idle_time ” 切换为true(在2.13之后)
  • 错误58870 - TableEditor:最小尺寸太小。供稿人:Vincent Herilier(gmail.com的vherilier)
  • 错误58933 - JSyntaxTextArea:能够设置字体。供稿人:Denis Kirpichenkov(gmail.com的denis.kirpichenkov)
  • 错误58793 - 创建开发人员页面,解释如何构建和贡献
  • 错误59046 - JMeter Gui替换控制器应保留名称和选择。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59038 - 弃用HTTPClient 3.1相关元素
  • 错误59094 - 删除对旧JMX文件格式的支持
  • 错误59082 - 删除“ TestCompiler.useStaticSet ”参数。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59093 - 选项解析错误消息可能“ 丢失 ”
  • 错误58715 - 功能请求:使用JMeter 捆绑groovy-all
  • 错误58426 - 改进JMeter在高分辨率设备(HiDPI)上的显示(增强的第1部分)
  • 错误59105 - TableEditor:添加从剪贴板粘贴行并删除多个选择的功能。供稿人:Vincent Herilier(gmail.com的vherilier)
  • 错误59197 - 线程组:应该可以只使用弹出菜单运行单个线程组或选择的线程组。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59207 - 发生错误时errorsOrFatalsLabel的字体颜色更改为红色。供稿人:Antonio Gomes Rodrigues(g00上的ra0077)
  • 错误58941 - 创建一个在验证模式下运行线程组的新Starter(1个线程,1个迭代,所有可自定义的暂停)
  • 错误59236 - JMeter属性:进行一些清理
  • 错误59240 - 为Logkit引入一个slf4j适配器(这允许在插件和核心代码中使用slf4j)
  • 错误59153 - 如果CSVDataSet正在访问不存在的文件,请停止测试。供稿人:Antonio Gomes Rodrigues(g00上的ra0077)
  • 错误59320 - 使用GenericTestBeanCustomizer(CSV数据集配置,JDBC连接配置,密钥库配置,...)在GUI中更好的工具提示。基于Antonio Gomes Rodrigues的补丁(ra0077 at gmail.com)
  • 错误 59171 - 示例结果SaveConfig对话框以随机顺序生成
  • 错误59425 - 显示有关帮助窗格中缺少帮助页面的错误

非功能性变化

  • 更新为httpclient,httpmime 4.5.2(从4.2.6开始)
  • 更新为tika-core和tika-parsers 1.12(从1.7开始)
  • 更新为commons-math3 3.6.1(来自3.4.1)
  • 更新为commons-pool2 2.4.2(从2.3开始)
  • 更新为commons-lang 3.4(来自3.3.2)
  • 更新至rhino-1.7.7.1(从1.7R5开始)
  • 已更新至jodd-3.6.7.jar(来自3.6.4)
  • 更新到jsoup-1.8.3(从1.8.1开始)
  • 更新为rsyntaxtextarea-2.5.8(从2.5.6开始)
  • 已更新至slf4j-1.7.12(自1.7.10起)
  • 更新到xmlgraphics-commons-2.0.1(从1.5开始)
  • 更新为commons-collections-3.2.2(来自3.2.1)
  • 更新为commons-net 3.4(来自3.3)
  • 已更新至slf4j 1.7.13(自1.7.12起)
  • 错误57981 - 至少需要Java 7.部分由Graham Russell提供(jum at ham1.co.uk)
  • 错误58684 - JMeterColor不需要扩展java.awt.Color供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58687 - ButtonPanel应该死。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58705 - 使org.apache.jmeter.testelement.property.MultiProperty可迭代。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58729 - Cleanup extras文件夹的可维护性
  • 错误57110 - 修正拼写+语法,格式化,删除注释掉的代码等。供稿人:Graham Russell(jum at ham1.co.uk)
  • 有关在help.txt中运行JMeter的正确说明供稿人:Pascal Schumacher(gmx.net上的pascalschumacher)
  • 错误58704 - 非回归测试:如果测试并在非en_EN语言环境中运行并使用使用CSV DataSet的JMX文件,则Ant任务批处理测试失败
  • 错误58897 - 改进JUnit测试代码。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58949 - 清除LDAP代码。基于Benoit Wiart的补丁(gmail.com的benoit dot wiart)
  • 错误58897 - 改进JUnit测试代码。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58967 - 使用JUnit类别排除需要gui的测试。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59003 - ClutilTestCase testSingleArg8testSingleArg9完全相同
  • 错误59064 - 删除支持非常旧的Avalon格式JTL(结果)文件的OldSaveService
  • 错误59165 - RSyntaxTextArea与无头测试不兼容
  • 错误59021 - 使用Double#compare而不是在NumberProperty#compareTo中重新实现它
  • 错误59037 - 在htmlparser和htmllexer上删除HtmlParserHTMLParser和依赖项
  • 错误58465 - JMS读取响应字段命名错误并记录在案
  • 错误58601 - 更改检查以将saveservice.propertiesSVN Revision ID修改为文件本身的sha1 sum。
  • 错误58726 - 删除jmeterthread.startearlier参数。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58784 - 使JMeterUtils#runSafe sync / async awt调用可配置并更改可视化器以使用异步版本。
  • 错误58790 - CheckDirty中的问题及其与ActionRouter的关系
  • 错误59095 - 删除八年前弃用的UserParameterXMLParser。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59262 - 向LICENSE添加二进制jar列表; 用于单元测试
  • 错误59353 - 在changes.xml的“不兼容的更改”部分中添加“已弃用和已删除的元素”。供稿人:Antonio Gomes Rodrigues(g00上的ra0077)

Bug修复

HTTP采样器和测试脚本记录器

  • 错误57806 - ViewResultsTree错误地将“ audio / x-mpegurl ”mime类型视为二进制。由Ubik Load Pack提供(ubikloadpack.com支持)。
  • 错误57858 - 样本方法中发生RuntimeExceptionIOException时,不要在HTTPHC4Impl中调用sampleEnd两次
  • 错误57921 - 没有keep-alive的HTTP / 1.1“ 连接 ”响应头不再使用无限保持活动。
  • 错误57956 - 当jMeter未在bin中启动时jmeter.propertieshc.parameters引用不起作用
  • 错误58137 - JMeter无法下载包含URL中的非法字符的嵌入式URL(它不会逃脱它们)。
  • 错误58201 - 在不同的http采样器中使主机头中的端口使用更加一致。
  • 错误58453 - HTTP测试脚本记录器:禁用捕获HTTP标头时出现NullPointerException
  • 错误57804 - 在HTTPS中使用客户端证书时,HTTP请求不会重用缓存的SSL上下文(仅适用于HttpClient4实现)
  • 错误58800 - proxy.pause默认值:修复文档
  • 错误58844 - 参数面板中的按钮启用/禁用已中断。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58861 - 在参数面板的单元格中单击向上,向下或详细信息时,新添加的内容将丢失。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误57935 - HttpClient 4.2.6不支持SSL SNI扩展
  • 错误59044 - Http Sampler:如果方法不是POST,则不应该选择多部分编码供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59008 - Http Sampler:达到帧深度限制的无限递归SampleResult
  • 错误58881 - HTTP请求:当服务器使用“ deflate ”压缩时,HTTPHC4Impl显示异常
  • 错误58583 - 如果服务器由于未发送“ connection:close ”而导致服务器出现异常,HTTP客户端无法关闭连接,违反了HTTP RFC 2616 / RFC 7230
  • 错误58950 - 当采样器之间的暂停超过服务器发送的keepalive时, NoHttpResponseException
  • 错误59085 - Http文件面板:浏览取消时数据丢失。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误56141 - 使用HTTP Recorder时应用程序无法正常运行。在Dan的帮助下(java.junkee在yahoo.com上)
  • 错误59079 - 使用“ 自动重定向 ” 时不强制执行“ httpsampler.max_redirects ”属性
  • 错误58811 - 当在http采样器之间粘贴参数时,“Encode”和“Include Equals”列将丢失。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)

其他采样器

  • 错误58013 - 启用默认SSLContext上启用的所有协议,以便与SMTP采样器一起使用。
  • 错误58209 - 测试javasampler时JMeter挂起,因为从多个线程调用HashMap.put ()而没有同步。
  • 错误58301 - 使用类型化的方法,如setIntsetDoublesetDate,...用于准备好的语句#27
  • 错误58851 - 在hamcrest-core上添加依赖项以允许带有注释的JUnit测试工作
  • 错误58947 - 发生ConnectException连接指标错误
  • 错误58980 - 只要收到1条消息,JMS订阅服务器就会返回成功。供稿人:Harrison Termotto(stonybrook.edu的harrison dot termotto)
  • 错误59075 - JMS Publisher:如果priority或expiration字段为空,则抛出NumberFormatException
  • 错误59345 - SMTPSampler连接泄漏。基于Luca Maragnani的补丁(luca dot maragnani at gmail dot com)

控制器

  • 错误58600 - 在IncludeController搜索文件名时显示正确的文件名
  • 错误58678 - 模块控制器:限制目标元素选择。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58714 - 模块控制器:不应该将计时器添加为子级。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59067 - 在具有“ 开始下一个线程循环 ” 的线程组发生断言错误后,JMeter无法迭代控制器,这些控制器是具有“ 生成父样本 ” 的TransactionController的子代供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59076 - 如果模块控制器无法找到其替换子树,则测试应该失败

听众

  • 错误58033 - SampleResultConverter应注意它不能记录非TEXT数据
  • 错误58845 - 请求http视图不显示所有参数。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58413 - ViewResultsTree:请求HTTP 呈现器未正确显示包含&符号的参数。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59172 - SampleResult SaveConfig不允许禁用某些字段
  • 错误58329 - 响应时间图和聚合图:将图存储到文件时不考虑自上次单击图表以来更改的设置。供稿人:David Coppens(dlcoppens在gmail.com)

定时器,断言,配置,预处理器和后处理器

  • 错误58079 - 使用HTTP CacheManager时,请勿缓存具有Vary标头的HTTP示例
  • 错误58912 - 响应断言gui:删除多个选定的行只删除一行。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)

功能

国际化

一般

  • 错误54826 - 在视图结果树中将JSON响应显示为JSON时,请勿在JSON响应中使用长字符串失败。
  • 错误57734 - Maven瞬态依赖关系不正确2.13(Commons Pool和Math的固定组ID)
  • 错误57731 - TESTSTART.MS始终在NON GUI分布式测试中以服务器模式启动第一个测试的值
  • 错误58016 - 使用外部SSL提供程序进行错误类型转换。供稿人:Kirill Yankov(gmail.com的myworkpostbox)
  • 错误58293 - SOAP / XML-RPC Sampler文件浏览器生成NullPointerException
  • 错误58685 - JDatefield:使用向上/向下箭头修改日期。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误58693 - 修复“设置eclipse时无法在输出文件夹'jmeter / build'中嵌套输出文件夹'jmeter / build / components'”
  • 错误58781 - 命令行选项“ - ? ”显示未知选项
  • 错误57821 - 命令行选项“ -X --remoteexit ”自2.13起无效(与 Bug 57500相关的回归
  • 错误58795 - NPE可能发生GuiPackage#getTestElementCheckSum一些3 第三方插件
  • 错误58913 - 关闭JMeter时不应将取消解释为“ 破坏我的测试计划 ”。供稿人:Benoit Wiart(gmail.com的benoit dot wiart)
  • 错误59096 - 搜索功能:不区分大小写的搜索实际上不区分大小写
  • 错误59193 - 从未通过Thread.currentThread()加载的依赖项访问类时,ant run_guiClassNotFoundExceptionIllegalAccessError而失败 .getContextClassLoader ()
  • 错误59225 - 运行指示器图标显示不正确。供稿人:Antonio Gomes Rodrigues(g00上的ra0077)
  • 错误56927 - 在测试期间禁用语言更改
  • 错误59391 - 在分布式模式下,客户端在测试结束时异常退出
  • 错误59397 - build.xml不会在Unix系统上使dist.executables可执行

谢谢

我们感谢上面的bug和改进部分中提到的所有贡献者:

  • Ubik Load Pack
  • Benoit Vatan(gmail.com的benoit.vatan)
  • JérémieLesage(jeremie.lesage at jeci.fr)
  • Kirill Yankov(gmail.com的myworkpostbox)
  • Amol Moye(amol.moye at thomsonreuters.com)
  • Samoht-fr(https://github.com/Samoht-fr)
  • Graham Russell(jum at ham1.co.uk)
  • Maxime Chassagneux(gmail.com的maxime.chassagneux)
  • Benoit Wiart(gmail.com的benoit.wiart)
  • 迪卡侬SA
  • Ubik-Ingenierie SAS
  • Oleg Kalnichevski(来自apache.org的olegk)
  • Pascal Schumacher(gmx.net上的pascalschumacher)
  • Vincent Herilier(gmail.com的vherilier)
  • Florent Sabbe(来自ubik-ingenierie.com的f dot sabbe)
  • Antonio Gomes Rodrigues(g00上的ra0077)
  • Harrison Termotto(harrison dot termotto at stonybrook.edu
  • Denis Kirpichenkov(gmail.com的denis.kirpichenkov)
  • Gary Gregory(ggregory at apache.org)
  • David Coppens(dlcoppens at gmail.com)
  • Luca Maragnani(来自gmail dot com的luca dot maragnani)
  • Philip Helger(http://www.helger.com)为他的CSS Parser以及非常快速地考虑我们的错误报告
  • Irek Pastusiak(gmail.com的.automatic.tester)

我们也感谢帮助我们改进JMeter的bug记者。
对于此版本,我们要特别感谢以下记者在我们修复后做出的明确报告和测试:

  • purnasatyap在gmail dot com上进行关于夜间构建的测试和报告
  • Sergey Batalin(sergey_batalin在mail dot ru)进行关于夜间构建的测试和报告
  • Vincent Daburon(gmail dot com的vdaburon)关于夜间构建的测试和报告

如果我们遗漏了其他人,请道歉。

已知问题和解决方法

  • Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。
  • 绿色框左侧显示的数字是活动线程数/线程总数,线程总数仅适用于本地运行的测试,否则将显示0(参见 错误55510)。
  • 请注意, 在某些Linux系统上存在Java中的错误,在运行测试用例或JMeter本身时会将其显示为以下错误:
     [java]警告:无法刷新用户首选项:
     java.util.prefs.BackingStoreException:
     java.lang.IllegalArgumentException:不支持:indent-number
    
    这不会影响JMeter操作。自Java 7b05以来,此问题已得到解决。
  • 请注意,在某些Windows系统下,您可能会遇到以下警告:
    java.util.prefs.WindowsPreferences 
    警告:无法在root 0处打开/创建prefs根节点Software \ JavaSoft \ Prefs
    x80000002。Windows RegCreateKeyEx(...)返回错误代码5。
    
    修复是以管理员身份运行JMeter,它将为您创建注册表项,然后您可以作为普通用户重新启动JMeter,您将不再有警告。
  • 使用Oracle Java 7和Mac Book Pro Retina Display,JMeter GUI可能看起来很模糊。这是一个已知的Java错误,请参阅Bug JDK-8000629解决方法是使用Java 7 update 40运行时修复此问题。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException:证书不符合算法约束
    如果您在具有SSL证书(本身或其信任链中的SSL证书之一)的网站上使用MD2(如md2WithRSAEncryption)或大小低于1024位的SSL证书运行HTTPS请求。此错误与Java 7版本u16(MD2)和版本u40(证书大小低于1024位)以及Java 8的安全性增加有关。 
    要允许您执行HTTPS请求,可以通过编辑Java jdk.certpath.disabledAlgorithms属性来降级Java安装的安全性。根据您的情况,删除MD2值或大小约束。 
    此属性在此文件中:
    JAVA_HOME / JRE / lib / security中/ java.security
    有关详细信息,请参阅 错误56357
  • 在Mac OSX下,由于镜像对数字的影响,聚合图表将显示错误的值。这是由于已知的Java bug,请参阅Bug JDK-8065373 。修复方法是使用JDK7_u79,JDK8_u45或更高版本。
  • 查看结果树可能无法在HTML呈现器下显示某些HTML代码,请参阅 错误54586这是由于已知的Java错误无法解析row / col属性中的“ px ”单位。请参阅Bug JDK-8031109 修复方法是使用JDK9 b65或更高版本。
  • 使用键盘进行JTable选择(SHIFT  +  向上/向下)在Mac OSX上完全无法使用JAVA 7。这是由于已知的Java错误JDK-8025126 修复是使用JDK 8 b132或更高版本。

版本2.13

摘要

新的和值得注意的

新元素

具有Graphite实现的新Async BackendListener

添加了一个新的Async BackendListener以允许将结果数据发送到后端侦听器。JMeter附带了GraphiteBackendListenerClient,允许使用Pickle或Plaintext协议将结果发送到Graphite服务器。您可以通过扩展AbstractBackendListenerClient来实现自己的后端这个后端可以是数据库(JDBC),面向消息的中间件(JMS),Web服务或任何您想要的东西。

这是您可以使用GrafanaInfluxDB 获得的实时仪表板类型
阅读此内容以获取更多详细信息。

Grafana仪表板Grafana仪表板

核心改进

新的连接时间指标

从此版本开始,添加了一个名为connectTime的新指标。它代表建立连接的时间。默认情况下,它不保存为CSV或XML,将其保存添加到user.properties:jmeter.save.saveservice.connect_time 
= true

汇总图和报告

听众聚合图表和聚合报告以前仅显示了90%(历史行为),95百分位数和99百分位数已添加并可自定义。要设置所需的百分位数值,请添加到user.properties:aggregate_rpt_pct1 
= 90 
aggregate_rpt_pct2 = 95 
aggregate_rpt_pct3 = 99

 

HTTP(S)测试脚本记录器

现在,组件能够检测身份验证方案,并自动添加具有正确机制的预配置HTTP授权管理器。

HTTP请求

在HTTP请求采样器中添加了CalDAV谓词(WebDAV的日历扩展)REPORT和MKCALENDAR。

 

JDBC请求

ResultSet可以作为对象获取,这允许在BeanShell,JSR223脚本之后更轻松地处理结果,......

 

分布式测试

为了更好地在云中使用Distributed Testing,在服务器上启动测试时添加了重试行为。阅读本文了解更多详情。

 

分布式测试性能

从JMeter 2.13开始,剥离模式(StrippingBatch是默认模式)现在也剥离了SubResults的响应,改善了消耗的网络带宽。

文档刷新

Felix Schumacher创建了一种新的网站风格(响应式和更新)。文件已经特别刷新:

 

GUI改进

模块控制器

模块控制器现在在树视图中显示目标控制器(而不是组合列表)。

 

工具栏

JMeter的工具栏已刷新为某些图标(开始,切换等)。现在有三种尺寸可供选择:22x22,32x32和48x48。
定义首选大小的属性是:

jmeter.toolbar.icons.size =值

值22x22(默认大小),32x32或48x48。

 

带有22x22像素图标的工具栏

 

带有32x32像素图标的工具栏

 

带有48x48像素图标的工具栏

 

HTTP(S)测试脚本记录器

如果您的测试计划不包含录制控制器,如果HTTP(S)测试脚本录制器配置为将样本发送到录制控制器,则会出现新的警告消息。

 

不兼容的变化

  • 从2.13开始,Aggregate Graph,Summary Report和Aggregate Report现在导出百分比为%,然后导出十进制值,这与GUI中显示的不同
  • 修复 Bug 57586可能会影响第三方插件,如果您依赖父类这样做,请确保您的HttpTestSampleGui子类实现ItemListener。
  • 报告包已被删除,因此不再生成 ApacheJMeter_report.jar,请参阅错误57269

改进

HTTP采样器和测试脚本记录器

  • 错误25430 - HTTP(S)测试脚本记录器:使其填充HTTP授权管理器。部分基于Dzmitry Kashlach的补丁(dzmitrykashlach at gmail.com)
  • 错误57381 - 如果目标控制器引用录制控制器且不存在录制控制器,则HTTP(S)测试脚本录制器应显示错误。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误57488 - 性能:改进SSLContext重置以进行双向SSL身份验证
  • 错误57565 - SamplerCreator:添加方法以允许实现将子项添加到创建的采样器
  • 错误 57606 - HTTPSamplerBase#errorResult更改异常时的示例标签
  • 错误57613 - HTTP采样器:添加了CalDAV谓词(REPORT,MKCALENDAR)。供稿人:Richard Brigham(来自teamaol.com的richard.brigham)
  • 错误48799 - 添加时间以建立与可用样本指标的连接。由Andrey Pokhilko(andrey在blazemeter.com)实施,由BlazeMeter Ltd.和Pieter Ennes(spam.ennes.nl的apache.org)提供。
  • 错误57500 - 介绍分布式测试的重试行为。由Andrey Pokhilko和Dzimitry Kashlach实施,由BlazeMeter Ltd.提供。

其他采样器

  • 错误57322 - JDBC测试元素:添加ResultHandler以处理可调用语句返回的ResultSets(游标)。供稿人:YngviÞórSigurjónsson(blitzkopf at gmail.com)

控制器

  • 错误57561 - 模块控制器UI:用树替换组合框。供稿人:Maciej Franek(gmail.com的maciej.franek)
  • 错误57648 - 创建时应禁用TestFragment。供稿人:Ubik Load Pack(ubikloadpack.com支持)

听众

  • 错误55932 - 创建一个Async BackendListener以允许轻松插入新的侦听器(Graphite,JDBC,Console,...)
  • 错误57246 - BackendListener:创建Graphite实现
  • 错误57217 - 聚合图和聚合报告改进(3个可配置的百分位数,两者中的相同数据,因子输出代码)。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误57537 - BackendListener:允许实现删除样本

定时器,断言,配置,预处理器和后处理器

功能

  • 错误54453 - 性能增强:在__Random函数中用ThreadLocalRandom替换Random

国际化

一般

  • 错误57518 - 具有多种尺寸的工具栏的图标
  • 错误57605 - 加载测试计划时出错,SaveService.loadTree返回null,导致调用者的NPE
  • 错误57269 - 删除org.apache.jmeter.reports
  • 错误53764 - 网站:为网站创建一种新的风格

非功能性变化

  • 已更新至jsoup-1.8.1.jar(从1.7.3开始)
  • 更新为tika-core和tika-parsers 1.7(从1.6开始)
  • 更新为commons-codec-1.10.jar(从1.9开始)
  • 已更新至dnsjava-2.1.7.jar(自2.1.6起)
  • 已更新至jodd-3.6.4.jar(来自3.6.1)
  • 更新至junit-4.12.jar(从4.11开始)
  • 更新至rhino-1.7R5(自1.7R4起)
  • 更新至rsyntaxtextarea-2.5.6(来自2.5.3)
  • 更新至slf4j-1.7.10(从1.7.5开始)
  • 错误57276 - 自Java 5以来不再需要RMIC
  • 错误57310 -更换System.getProperty( “文件分割符”)文件分割符整个(也称“ path.separator”File.pathSeparator
  • 错误57389 - 修复转换器中的潜在NPE
  • 错误57417 -删除未使用的方法方法isTemporaryNullProperty这是2003年重构的遗留问题。
  • 错误57418 - 从Workbench中删除未使用的构造函数
  • 错误57419 - 删除未使用的接口ModelListener。
  • 错误57466 - IncludeController:删除不需要的集创建。供稿人:Benoit Wiart(gmail.com的benoit.wiart)
  • 添加了属性loggerpanel.usejsyntaxtext以禁用控制台记录器使用JSyntaxTextArea(如果是内存或其他问题)
  • 错误57586 - HttpTestSampleGui:删除接口ItemListener实现

Bug修复

HTTP采样器和测试脚本记录器

  • 错误57385 - 在“跟随重定向”设置的HTTP请求的xml结果中获取空线程名称。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误57579 - 如果使用“RETURN_NO_SAMPLE”(默认)并在HTTP缓存管理器中选中“使用Cache-Control / Expires标头...”,则会在主样本上引发NullPointerException错误

其他采样器

控制器

  • 错误57447 - 启用“使用自定义DNS解析程序”选项时,仅使用列出的用户DNS服务器。

听众

  • 错误57262 - 聚合报告,聚合图和摘要报告导出:标题使用键而不是标签
  • 错误57346 - Summariser:+(差异)报告显示错误的经过时间和吞吐量
  • 错误57449 - 分布式测试:剥离模式不会剥离SubResults的响应(影响使用嵌入式资源下载的负载测试)。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误57562 - 查看结果树CSS / JQuery Tester:当语法错误并且jmeter.log中发生异常时,没有任何反应
  • 错误57514 - 聚合图,摘要报告和聚合报告在保存的文件中显示错误的百分比报告

定时器,断言,配置,预处理器和后处理器

  • 错误57607 - 恒定吞吐量计时器:由于舍入错误,在共享模式下计算的吞吐量错误

一般

  • 错误57365 - 由于调用UIManager.setLookAndFeel太晚,选择的LAF未正确设置供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误57364 - 选项<外观和感觉不会更新所有窗口LAF。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误57394 - 使用ClassTools#construct(String,int)构造实例时,忽略整数并使用默认构造函数。
  • 错误57440 - 由于未考虑disableUndo而在LoggerPanel中引入JSyntaxTextArea后出现OutOfMemoryError。
  • 错误57569 - FileServer.reserveFile - hasHeader为true时的不一致行为
  • 错误57555 - 无法将JMeter 2.12用作maven依赖项。供稿人:Pascal Schumacher(t-systems.com上的pascal.schumacher)
  • 错误57608 - 修复启动脚本与旧Unix shell的兼容性,例如在Solaris上

谢谢

我们感谢上面的bug和改进部分中提到的所有贡献者:

  • Ubik Load Pack
  • YngviÞórSigurjónsson(blitzkopf at gmail.com)
  • Dzmitry Kashlach(gz的dzmitrykashlach)
  • BlazeMeter Ltd.
  • Benoit Wiart(gmail.com的benoit.wiart)
  • Pascal Schumacher(t-systems.com上的pascal.schumacher)
  • Maciej Franek(gmail.com的maciej.franek)
  • 理查德·布里格姆(richard.brigham,来自teamaol.com)
  • Pieter Ennes(apache.org at spam.ennes.nl)


我们也感谢帮助我们改进JMeter的bug记者。
对于此版本,我们要特别感谢以下记者在我们修复后做出的明确报告和测试:

  • Chaitanya Bhatt(ghat的bhatt.chaitanya)对新的BackendListener和Graphite Client实现进行了彻底的测试。
  • Marcelo Jara(hotmail.com上的 marcelojara)关于Bug 57607的明确报道

如果我们遗漏了其他人,请道歉。

 

已知的错误

  • Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。
  • 绿色框左侧显示的数字是活动线程数/线程总数,线程总数仅适用于本地运行的测试,否则将显示0(参见 错误55510)。
  • 请注意, 在某些Linux系统上存在Java中的错误,在运行测试用例或JMeter本身时会将其显示为以下错误:
     [java]警告:无法刷新用户首选项:
     java.util.prefs.BackingStoreException:
     java.lang.IllegalArgumentException:不支持:indent-number
    
    这不会影响JMeter操作。自Java 7b05以来,此问题已得到解决。
  • 请注意,在某些Windows系统下,您可能会遇到以下警告:
    java.util.prefs.WindowsPreferences 
    警告:无法在root 0处打开/创建prefs根节点Software \ JavaSoft \ Prefs
    x80000002。Windows RegCreateKeyEx(...)返回错误代码5。
    
    修复是以管理员身份运行JMeter,它将为您创建注册表项,然后您可以作为普通用户重新启动JMeter,您将不再有警告。
  • 对于Linux系统上的Java 1.6和Gnome 3,JMeter菜单可能无法正常工作(在鼠标单击和菜单之间切换)。这是一个已知的Java错误(参见 错误54477)。解决方法是使用Java 7运行时(OpenJDK或Oracle JDK)。
  • 使用Oracle Java 7和Mac Book Pro Retina Display,JMeter GUI可能看起来很模糊。这是一个已知的Java错误,请参阅Bug JDK-8000629解决方法是使用Java 7 update 40运行时修复此问题。
  • 您可能会遇到以下错误:java.security.cert.CertificateException: 如果您在具有SSL证书(本身或其信任链中的SSL证书之一)的网站上运行HTTPS请求,则证书不符合算法约束使用MD2(如md2WithRSAEncryption)或大小低于1024位的SSL证书的签名算法。此错误与Java 7版本u16(MD2)和版本u40(证书大小低于1024位)以及Java 8的安全性增加有关。 
    要允许您执行HTTPS请求,可以通过编辑Java jdk.certpath.disabledAlgorithms属性来降级Java安装的安全性。根据您的情况,删除MD2值或大小约束。 
    此属性在此文件中:
    JAVA_HOME / JRE / lib / security中/ java.security
    有关详细信息,请参阅 错误56357

版本2.12

摘要

新的和值得注意的

Java 8支持

现在,JMeter 2.12符合Java 8。

新元素

关键部分控制器

Critical Section Controller允许序列化树中某个部分的执行。在测试期间,将仅同时执行该部分的一个实例。

DNS缓存管理器

新配置元素DNS缓存管理器(参见 Bug 56841)改进了以下测试:

  • CDN(内容分发网络)
  • DNS负载平衡。
  • 像Amazon Elastic Load Balancer这样的负载均衡器

 

核心改进

更智能地记录Http测试计划

Test Script Recorder已经在很多方面得到了改进

  • 更好地匹配请求中的变量,使得测试脚本记录器在录制过程中使您的采样器变得更加通用
  • 能够从“查看结果树”中筛选出从记录中排除的样本,这使您可以专注于记录的采样器分析,而无需使用无用的样本结果
  • 录制的默认设置更好,因为此版本的录制器会为创建的采样器编号,让您可以在“查看结果树”中轻松找到它们。事务控制器下的采样器分组将更加智能,使网页发出的所有请求都成为新的事务控制器

支持Webdav请求

您现在可以使用HttpClient4 Http Request实现来测试WebDav服务器

更好地处理嵌入式资源

当检查下载嵌入资源时,JMeter现在使用用户代理标头来下载条件注释中嵌入的资源,而不是按照条件注释

能够自定义缓存资源的缓存管理器(浏览器缓存模拟)处理

您现在可以在Cache中找到资源时配置JMeter的行为,这可以通过cache_manager.cached_resource_mode属性进行控制

JMS Publisher / JMS点对点

为这些采样器添加JMSPriority和JMSExpiration字段。

邮件阅读器采样器

您现在可以指定要检索的消息数(在检索所有消息之前)。此外,您现在只能获取邮件头。

SMTP采样器

将连接超时和读取超时添加到SMTP采样器。

同步定时器

添加超时以定义等待虚拟用户组的最长时间。

性能改进

通过提升无用同步,功能性能得到了很大改善。它涉及除__StringFromFile,__ XPath和__BeanShell之外的所有函数,请参阅 错误57114

__jexl2的性能已得到改进,以避免争用点,参见 Bug 56708

GUI改进

撤消/重做支持

已经引入了撤消/重做,并允许用户撤消/重做在测试计划树上所做的更改。默认情况下禁用此功能(ALPHA MODE),以启用它设置属性undo.history.size = 25

查看结果树

通过更改呈现器的位置并允许自定义排序(使用属性view.results.tree.renderers_order)来改进View Results Tree的人体工程学

响应时间图

添加Response Time Graph侦听器的功能,以便在jmx文件中保存/恢复其设置。

日志查看器

从这个版本开始,可以通过单击右上角的警告图标直接在GUI中查看JMeter的日志文件(jmeter.log)的最后几行。这将展开日志查看器面板并显示日志。

文件打开

现在,“打开文件对话框”使用上次打开的文件夹作为开始文件夹,请参阅 错误52707

已知的错误

  • Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。
  • 绿色框左侧显示的数字是活动线程数/线程总数,线程总数仅适用于本地运行的测试,否则将显示0(参见 错误55510)。
  • 请注意, 在某些Linux系统上存在Java中的错误,在运行测试用例或JMeter本身时会将其显示为以下错误:
     [java]警告:无法刷新用户首选项:
     java.util.prefs.BackingStoreException:
     java.lang.IllegalArgumentException:不支持:indent-number
    
    这不会影响JMeter操作。自Java 7b05以来,此问题已得到解决。
  • 请注意,在某些Windows系统下,您可能会遇到以下警告:
    java.util.prefs.WindowsPreferences 
    警告:无法在root 0处打开/创建prefs根节点Software \ JavaSoft \ Prefs
    x80000002。Windows RegCreateKeyEx(...)返回错误代码5。
    
    修复是以管理员身份运行JMeter,它将为您创建注册表项,然后您可以作为普通用户重新启动JMeter,您将不再有警告。
  • 对于Linux系统上的Java 1.6和Gnome 3,JMeter菜单可能无法正常工作(在鼠标单击和菜单之间切换)。这是一个已知的Java错误(参见 错误54477)。解决方法是使用Java 7运行时(OpenJDK或Oracle JDK)。
  • 使用Oracle Java 7和Mac Book Pro Retina Display,JMeter GUI可能看起来很模糊。这是一个已知的Java错误,请参阅Bug JDK-8000629解决方法是使用Java 7 update 40运行时修复此问题。
  • 您可能会遇到以下错误:java.security.cert.CertificateException: 如果您在具有SSL证书(本身或其信任链中的SSL证书之一)的网站上运行HTTPS请求,则证书不符合算法约束使用MD2(如md2WithRSAEncryption)或大小低于1024位的SSL证书的签名算法。此错误与Java 7版本u16(MD2)和版本u40(证书大小低于1024位)以及Java 8的安全性增加有关。 
    要允许您执行HTTPS请求,可以通过编辑Java jdk.certpath.disabledAlgorithms属性来降级Java安装的安全性。根据您的情况,删除MD2值或大小约束。 
    此属性在此文件中:
    JAVA_HOME / JRE / lib / security中/ java.security
    有关详细信息,请参阅 错误56357

不兼容的变化

  • 从JMeter 2.12开始,默认情况下,所有线程组中的活动线程和当前线程组中的活动线程都保存为CSV或XML结果,请参阅 Bug 57025这通常是预期的行为,因为您希望在测试期间拥有正在运行的线程数。但是,如果要恢复到以前的行为,请设置属性jmeter.save.saveservice.thread_counts = false
  • 自JMeter 2.12起,Mail Reader Sampler将显示1个样本数而不是检索到的消息数,请参阅 错误56539
  • 从JMeter 2.12开始,当使用缓存管理器时,如果在缓存中找到资源,则不会创建SampleResult,在以前的版本中,返回了具有空内容和204返回代码的SampleResult,请参阅 错误54778您可以选择不同的方法来处理这种情况,请参阅jmeter.properties中的cache_manager.cached_resource_mode
  • 从JMeter 2.12开始,日志查看器在关闭时将不再清除日志,即使关闭也可以使用日志。 Bug 56920 有关配置此组件的详细信息,请阅读提示和技巧>启用调试日志记录

Bug修复

HTTP采样器和测试脚本记录器

  • 错误55998 - HTTP记录 - 用户定义的变量替换端口值不起作用
  • 错误56178 - keytool错误:AVA中无效的转义字符: - 必须转义某些字符
  • 错误56222 - NPE如果jmeter.httpclient.strict_rfc2616 = true且位置不是绝对的
  • 错误56263 - DefaultSamplerCreator应将BrowserCompatible Multipart设置为true
  • 错误56231 - 将重定向位置处理从HC3 / HC4采样器移动到HTTPSamplerBase#followRedirects()
  • 错误56207 - URL在HC3.1和HC4采样器中的重定向上编码
  • 错误56303 - 目标控制器组合列表的宽度应设置为当前面板大小,而不是控制器的标签大小
  • 错误54778 - 当在Cache中找到资源时,HTTP Sampler不应返回204,使其可以使用新属性cache_manager.cached_resource_mode进行配置

其他采样器

  • 错误55977 - JDBC池keepalive泛滥
  • 错误55999 - 当内容超出显示时,jms点对点采样器上的滚动条不起作用
  • 错误56198 - JMSSampler:当JMS提供程序的JNDI底层实现不符合Context.getEnvironment契约时,抛出NullPointerException
  • 错误56428 - MailReaderSampler - 它应该使用mail.pop3s。*属性吗?
  • 错误46932 - select语句中给出的别名不用作JDBC请求的响应数据中的列标题。根据Nicola Ambrosetti的报告和分析
  • 错误56539 - 邮件阅读器取样器:当要检索的邮件数量优于1时,样本数量应仅显示1而不是检索到的邮件数量
  • 错误56809 - JMSSampler过早关闭InitialContext。供稿人:Bradford Hovinen(hovinen at gmail.com)
  • 错误56761 - JMeter尝试停止已停止的JMS连接并显示“连接已关闭”
  • 错误57068 - 在“测试操作”中输入负持续时间时未引发错误
  • 错误57078 - LagartoBasedHTMLParser无法解析包含无类型输入的页面
  • 错误57183 - JMSSampler:对于输入字符串:“”java.lang.NumberFormatException(对于Expiration或Priority字段)

控制器

  • 错误56243 - Foreach在后续迭代中对索引的工作不正确
  • 错误56276 - 一旦循环计数评估为零,循环控制器就会中断
  • 错误56160 - 在IfController中使用WhileController时出现StackOverflowError
  • 错误56811 - 结果状态操作处理程序或线程组中的“启动下一个线程循环”和测试操作中的“转到下一个循环迭代”行为错误,并且已检查“生成父采样器”的TransactionController

听众

  • 错误56706 - SampleResult #getResponseDataAsString()不在响应主体中使用编码来影响PostProcessors和ViewResultsTree。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误57052 - ArithmeticException:/当sampleCount等于0时为零

定时器,断言,配置,预处理器和后处理器

  • 错误56162 - HTTP缓存管理器不应缓存PUT / POST等。
  • 错误56227 - AssertionGUI:NPE断言鼠标选择
  • 错误41319 - URLRewritingModifier:允许参数值进行url编码

功能

国际化

  • 错误56111 - 德语翻译中的“评论”不正确

一般

  • 错误56059 - 使用TextAreaEditor时,较旧的TestBeans与2.11不兼容
  • 错误56080 - 使用Java 8 Early Access Build转换错误com.thoughtworks.xstream.converters.ConversionException
  • 错误56182 - 无法使用bshclient.jar触发bsh脚本; 套接字意外关闭
  • 错误56360 - HashTree和ListedHashTree无法使用Java 8进行编译
  • 错误56419 - JMeter无法保存结果
  • 错误56662 - 不记住在侦听器中另存为xml
  • 错误56367 - 关于maven central的JMeter 2.11触发了一个不存在的依赖关系rsyntaxtextarea 2.5.1,升级到2.5.3
  • 错误56743 - mail2.xml上的邮件列表存档错误。供稿人:Felix Schumacher(falleix.schumacher在internetallee.de)
  • 错误56763 - 删除JMeter未使用的Oracle图标(以及丢失的许可证)
  • 错误54100 - 切换语言无法保留工具栏按钮状态(启用/禁用)
  • 错误54648 - 在树上的元素上使用CMD + C(键盘快捷键或UI菜单项)时,OS X上的JMeter GUI崩溃
  • 错误56962 - JMS GUI应禁用受jndi.properties影响的所有字段复选框
  • 错误57061 - 另存为测试片段无法克隆深度选定的节点。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误57075 - 未处理 BeanInfoSupport.MULTILINE属性
  • 错误57076 - BooleanPropertyEditor#getAsText()必须返回getTags()中的值
  • 错误57088 - ResultCollector.testEnded中的NPE

改进

HTTP采样器和测试脚本记录器

  • 错误55959 - 当测试脚本记录器因I / O问题而失败时,改进错误消息
  • 错误52013 - 测试脚本记录器的子视图结果树没有考虑测试脚本记录器排除/包含的URL。基于詹姆斯梁的报道和分析
  • 错误56119 - 使用计时器的每次其他尝试都无法上传文件。为不发送Keep-Alive标头的服务器启用空闲超时。
  • 错误56272 - MirrorServer应支持状态和重定向的查询参数
  • 错误56772 - 解析嵌入资源时处理IE条件注释
  • 错误57026 - HTTP(S)测试脚本记录器:更好的默认设置。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误57107 - 补丁建议:将DAV动词添加到HTTP Sampler。供稿人:Philippe Jung(来自famille-jung.fr的apache)
  • 错误56357 - 证书不符合算法约束:添加注释以指示如何删除Java安装这些新的安全性约束

其他采样器

  • 错误56033 - 向SMTP采样器添加连接超时和读取超时
  • 错误56429 - MailReaderSampler - 如果不是全部需要,则无需获取所有消息
  • 错误56427 - MailReaderSampler增强:仅读取邮件头
  • 错误56510 - JMS Publisher /点对点:添加JMSPriority和JMSExpiration

控制器

  • 错误56728 - 用于序列化测试块的新关键部分控制器。部分基于由Mikhail Epikhin(eyehin-m在yandex.ru)提供的补丁
  • 错误57145 - RandomController:使用ThreadLocalRandom而不是Random来获得更好的性能

听众

  • 错误56228 - 查看结果树:通过更改渲染器的位置并允许自定义排序来改善人体工程学
  • 错误56349 - “摘要”是“生成摘要结果”组件的错误名称,文档已阐明
  • 错误56769 - 为响应时间图监听器添加在jmx文件中保存/恢复格式设置的功能
  • 错误57025 - SaveService:更好的默认值,默认情况下保存线程计数

定时器,断言,配置,预处理器和后处理器

  • 错误56691 - 同步计时器:等待时添加超时
  • 错误56701 - HTTP授权管理器/ Kerberos身份验证:当服务器端口既不是80也不是443时,将端口添加到SPN。基于来自Dan Haughey(来自swinton.co.uk的dan.haughey)和Felix Schumacher(来自internetallee的felix.schumacher)的补丁。德)
  • 错误56841 - 新配置元素:DNS缓存管理器,用于改进CDN的测试。基于来自Dzmitry Kashlach(gz的dzmitrykashlach)的补丁,由BlazeMeter Ltd.提供。
  • 错误52061 - 允许访问Regex Extractor中的请求标头。基于来自Dzmitry Kashlach(gz的dzmitrykashlach)的补丁,由BlazeMeter Ltd.提供。

功能

  • 错误56708 - __jexl2无法扩展多个CPU核心。根据Mikhail Epikhin(eyehin-m at yandex.ru)提供的分析和补丁
  • 错误57114 - 性能:仅将值作为实例变量的函数不应同步执行。基于Ubik Load Pack支持和Vladimir Sitnikov的分析,由Vladimir Sitnikov(sitnikov.vladimir在gmail.com)提供的补丁

国际化

一般

  • 错误21695 - Unix jmeter启动脚本假定它在PATH上,而不是链接
  • 错误56292 - 在启动文件中添加Java版本的检查,并在Java v8引擎时禁用某些选项
  • 错误56298 - JSR223语言显示未显示将使用哪个引擎
  • 错误56455 - 批处理文件:删除对非NT Windows shell脚本的支持
  • 错误52707 - “打开文件”对话框使用上次打开的文件夹作为起始文件夹。基于来自Dzmitry Kashlach(gz的dzmitrykashlach)的补丁,由BlazeMeter Ltd.提供。
  • 错误56807 - 能够强制刷新ResultCollector文件。供稿人:Andrey Pohilko(来自ya.ru的apc4)
  • 错误56921 - 模板:改进记录模板以忽略嵌入资源案例和URL参数。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误42248 - 对测试计划树修改的撤消 - 重做支持。由Andrey Pohilko(apa4在ya.ru)开发并由BlazeMeter Ltd.提供.Ubik Load Pack的额外贡献(ubikloadpack.com支持)
  • 错误56920 - LogViewer:即使关闭它也会使其接收所有日志事件。供稿人:Ubik Load Pack(ubikloadpack.com支持)
  • 错误57083 - 简化了CachedResourceMode枚举。供稿人:Graham Russel(graham at ham1.co.uk)
  • 错误57082 - ComboStringEditor:将hashCode添加到覆盖等于的内部类。供稿人:Graham Russel(graham at ham1.co.uk)
  • 错误57081 - 更新checkstyle以仅检查java,xml,xsd,dtd,htm,html和txt文件中的选项卡(不是图像!)。供稿人:Graham Russell(graham at ham1.co.uk)
  • 错误56178 - 在生成代理证书之前,确实替换用户名中的反斜杠。供稿人:Graham Russel(graham at ham1.co.uk)
  • 错误57084 - 在BeanShellClient中使用后关闭套接字。供稿人:Graham Russel(graham at ham1.co.uk)

非功能性变化

  • 错误57117 - 将HTTPS测试脚本记录器的默认密码从SSLv3增加到TLS
  • 更新为commons-lang3 3.3.2(来自3.1)
  • 更新为commons-codec 1.9(从1.8开始)
  • 更新为commons-logging 1.2(从1.1.3开始)
  • 更新为tika 1.6(从1.4开始)
  • 更新为xercesImpl 2.11.0(从2.9.1开始)
  • 更新到xml-apis 1.4.01(从1.3.04开始)
  • 更新到xstream 1.4.8(从1.4.4开始)
  • 更新为jodd 3.6.1(来自3.4.10)
  • 更新为rsyntaxtextarea 2.5.3(从2.5.1开始)
  • 将xalan和序列化程序更新为2.7.2(从2.7.1开始)
  • 已更新至jsoup-1.8.1.jar(从1.7.3开始)

谢谢

我们感谢上面的bug和改进部分中提到的所有贡献者:

  • 詹姆斯梁(jliang at andera.com)
  • Emmanuel Bourg(eachel at apache.org)
  • Nicola Ambrosetti(gmail.com的ambrosetti.nicola)
  • Ubik Load Pack
  • Mikhail Epikhin(yyedex.ru的epihin-m)
  • Dan Haughey(dan.haughey at swinton.co.uk)
  • 菲利克斯·舒马赫(falleix.schumacher at internetallee.de)
  • Dzmitry Kashlach(gz的dzmitrykashlach)
  • Andrey Pohilko(在ya.ru上的apc4)
  • Bradford Hovinen(hovinen at gmail.com)
  • BlazeMeter Ltd.
  • 格雷厄姆罗素(graham at ham1.co.uk)
  • Philippe Jung(来自famille-jung.fr的apache)
  • Vladimir Sitnikov(gmail.com的sitnikov.vladimir)


我们也感谢帮助我们改进JMeter的bug记者。
对于此版本,我们要特别感谢以下记者在我们修复后做出的明确报告和测试:

  • Oliver LLoyd(发送电子邮件至oliverlloyd.com)获取 Bug 56119的帮助
  • Vladimir Ryabtsev(gmail.com的greatvovan)对 Bug 56243 Bug 56276的帮助
  • Adrian Speteanu(gmail.com上的asp.adieu)和Matt Kilbride(来自gmail.com的matt.kilbride)对 Bug 54648的反馈和测试
  • Shmuel Krakower(shmulikk at gmail.com)的测试和Undo / Redo功能报告

如果我们遗漏了其他人,请道歉。

 

版本2.11

摘要

新的和值得注意的

HTTP(S)测试脚本记录器改进

自JMeter 2.10在HTTP(S)测试脚本记录器上引入重大更改以来,已经进行了以下改进:

  • 更好地检测keytool实用程序的丢失或无效配置
  • 新的系统属性keytool.directory(请参阅system.properties)允许您在非标准安装的情况下配置包含keytool的目录

 

JMS Publisher /点对点:添加在JMS头属性中设置类型值的功能

在采样器JMS Publisher和JMS Point-to-Point中,您现在可以为JMS标头属性设置值类。以前只有String才有可能。

 

 

查看结果树:添加XPath测试程序

在View Results Tree侦听器中,可以使用新的XPath测试程序来测试XPATH表达式。

 

 

能够在JsseSslManager中为证书密钥选择客户端别名,以便可以使Mutual SSL身份验证测试更加灵活

在测试基于客户端的证书身份验证时,您现在可以通过新字段“变量名称保留证书别名”更好地控制您使用的证书,此字段允许您选择要发送给服务器进行身份验证的证书。您可以使用CSV数据集作为变量值的持有者。

 

 

添加“另存为测试片段”选项

在文件菜单中,新选项允许将一组元素保存为测试片段。

 

 

默认情况下,在非GUI模式下启用Summariser

从命令行运行JMeter时,现在JMeter显示Summariser模式的一些统计信息。

 

 

事务控制器:为新创建的元素更改默认属性“包括计时器的持续时间...”

从2.11开始,只要定时器暂停,事务控制器默认配置为排除前/后处理器的处理时间。

 

 

已知的错误

  • Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。
  • 当If Controller的条件在第一次迭代时总是为假时,监听器不会显示迭代计数(参见 错误52496)。解决方法是在If Controller的同一级别(或更高级别)添加一个采样器。例如,具有0等待时间的测试操作采样器(不生成样本),或者将所有字段设置为False的调试采样器(以减小样本大小)。
  • 绿色框左侧显示的数字是活动线程数/线程总数,线程总数仅适用于本地运行的测试,否则将显示0(参见 错误55510)。
  • 请注意, 在某些Linux系统上存在Java中的错误,在运行测试用例或JMeter本身时会将其显示为以下错误:
     [java]警告:无法刷新用户首选项:
     java.util.prefs.BackingStoreException:
     java.lang.IllegalArgumentException:不支持:indent-number
    
    这不会影响JMeter操作。自Java 7b05以来,此问题已得到解决。
  • 对于Linux系统上的Java 1.6和Gnome 3,JMeter菜单可能无法正常工作(在鼠标单击和菜单之间切换)。这是一个已知的Java错误(参见 错误54477)。解决方法是使用Java 7运行时(OpenJDK或Oracle JDK)。
  • 使用Oracle Java 7和Mac Book Pro Retina Display,JMeter GUI可能看起来很模糊。这是一个已知的Java错误,请参阅Bug JDK-8000629解决方法是使用Java 7 update 40运行时修复此问题。

不兼容的变化

  • 创建新的事务控制器时,将从2.11版开始取消选中属性“包含生成的样本中的计时器和事先处理器的持续时间”
  • 在非GUI模式下,自2.11汇总器启用时频率为30秒
  • JMeter对重定向处理更加宽容,并通过允许相对位置放宽RFC2616。请参阅属性“ jmeter.httpclient.strict_rfc2616在” jmeter.properties改变这种行为,请参阅 错误55717
  • 创建新的响应断言时,属性“模式匹配规则”现在默认为从2.11版开始的子串

Bug修复

HTTP采样器和测试脚本记录器

  • 错误55815 - Proxy#getDomainMatch无法正确处理通配符
  • 错误55717 - 当HttpClient4和HttpClient3.1的URL处于相对格式时,重定向处理不当

其他采样器

  • 错误55685 - 操作系统采样器:超时选项不保存和正确恢复值,并且没有初始化正确超时

控制器

  • 错误55816 - 未选中“包含持续时间...”的事务控制器不会忽略上一个子采样器的处理时间

听众

  • 错误55826 - 字段RespTimeGraphVisualizer.internalList中列表的非同步并发访问

定时器,断言,配置,预处理器和后处理器

  • 错误55694 - 断言和提取器:当范围可变且缺少变量时,避免NullPointerException
  • 错误55721 - HTTP缓存管理器 - 错误解释了no-store指令

功能

  • 错误55871 - 当数字之前/之后存在空格字符时,使用intSum()函数的结果错误。由Milamber根据James Liang的提议提供。

国际化

一般

  • 错误55739 - 远程测试:GUI模式下的总线程数显示无效的线程总数

改进

HTTP采样器和代理

其他采样器

  • 错误55589 - JMS发布者/点对点:添加在JMS头属性中设置类型值的功能。

控制器

  • 错误55854 - 事务控制器:为新创建的元素更改默认属性“包括计时器的持续时间...”

听众

  • 错误55610 - 查看结果树:添加XPath测试程序

定时器,断言,配置,预处理器和后处理器

  • 错误55908 - 响应断言:更改模式匹配规则默认为创建时的子串以获得更好的性能
  • 错误54977 - 能够在JsseSslManager中为cert密钥选择客户端别名,以便可以使Mutual SSL身份验证测试更加灵活。供稿人:UBIK Load Pack(ubikloadpack.com支持)

功能

国际化

一般

  • 错误55693 - 添加“另存为测试片段”选项
  • 错误55753 - 改进FilePanel行为以从Filename字段中设置的值开始(如果有)。供稿人:UBIK Load Pack(ubikloadpack.com支持)
  • 错误55756 - HTTP镜像服务器:添加设置标头的功能
  • 错误55852 - 当charset值被单引号括起时,在解析时更宽松
  • 错误55857 - 性能:AbstractProperty应该测试空虚以避免异常抛出
  • 错误55858 - 启动性能:在启动时,BeanInfoSupport应测试密钥可用性而不是抛出
  • 错误55865 - 性能:默认情况下,在HttpClient 4和3.1中禁用失效检查
  • 错误55512 - 默认情况下,应在非GUI模式下启用Summariser

非功能性变化

  • 更新至rsyntaxtextarea-2.5.1.jar(自2.5.0起)
  • 更新为(3.4.8)和jodd-lagarto-3.4.9.jar(来自3.4.9)的jodd-core-3.4.9.jar
  • 已更新至jsoup-1.7.3.jar(从1.7.2开始)
  • 已更新至mail-1.5.0-b01(从1.4.4开始)
  • 更新到mongo-java-driver-2.11.3(从2.11.2开始)

谢谢

我们感谢上面的bug和改进部分中提到的所有贡献者:

  • 詹姆斯梁(jliang at andera.com)
  • UBIK Load Pack(ubikloadpack.com支持)


我们也感谢帮助我们改进JMeter的bug记者。
对于此版本,我们要特别感谢以下记者在我们修复后做出的明确报告和测试:

  • John Natsioulas(yahoo.com.au的john_natsioulas)
  • Antonio Gomes Rodrigues(g00上的ra0077)

如果我们遗漏了其他人,请道歉。

 

版本2.10

摘要

新的和值得注意的

核心改进

新的性能改进

 

  • 高吞吐量测试(没有暂停)已经取得了巨大的性能提升,参见 Bug 54777
  • 已经修复了不必要的SSL上下文重置的问题,这提高了纯HTTP测试的性能,请参阅 Bug 55023
  • 通过切换到JODD / Lagarto HTML Parser,在HTML页面中解析嵌入式资源的重要性能提升,请参阅 错误55632

 

视图树结果中的新CSS / JQuery测试程序

View Tree结果中的新CSS / JQuery Tester使得CSS / JQuery Extractor成为JMeter中的一等公民,您现在可以非常轻松地测试您的表达式

 

 

已经对HTTP(S)记录进行了许多改进

 

 
“HTTP代理服务器”测试元素已重命名为“HTTP(S)测试脚本记录器”。
 

 

您现在可以通过新的MongoDB Source Config加载测试MongoDB

 

 

 

 

Kerberos身份验证已添加到Auth Manager

 

 

现在可以在源IP地址之外使用设备

 

 

您现在可以通过新的MongoDB脚本对MongoDB脚本进行功能测试

 

 

已将超时添加到OS Process Sampler

 

 

查询超时已添加到JDBC请求中

 

 

现在可以使用新函数(__urlencode和__urldecode)对URL编码的字符进行编码/解码

 

 

现在,通过添加一个强制NON-GUI JVM在测试结束后退出的新标志,可以缓解持续集成

见jmeter属性:

jmeterengine.force.system.exit

 

HttpSampler现在允许DELETE Http Method拥有一个主体(适用于HC4和HC31实现)。这允许例如测试Elastic Search API

 

 

添加了2个HtmlParser实现以改进嵌入式资源解析

您可以选择用于在HTML页面中解析嵌入式资源的实现:请参阅jmeter.properties并查看属性“htmlParser.className”。

  • org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser获得最佳表现
  • org.apache.jmeter.protocol.http.parser.JSoupBasedHtmlParser用于最准确的解析和功能测试

 

分布式测试已得到改进

 

  • 现在,每个节点上的线程数都会报告给控制器。

     

     

     

     

  • BatchSampleSender的性能改进( 错误 55423 
  • 添加2个SampleSender模式(StrippedAsynch和StrippedDiskStore),请参阅jmeter.properties

 

ModuleController已得到改进,可以更好地处理对引用控制器的更改

改进的类加载器配置,请参阅 错误55503

 

  • 插件依赖项的新属性“plugin_dependency_paths”
  • 属性“search_paths”,“user.classpath”和“plugin_dependency_paths”现在自动添加配置目录中的所有jar

 

最佳实践部分已得到改进,确保您阅读它以充分利用JMeter

请参阅最佳实践

GUI和人体工程学改进

新模板功能允许您从现有模板创建测试计划或将模板合并到测试计划中

 

 

 

 

现在可以保存工作台

 

 

语法颜色已添加到脚本元素(BeanShell,BSF和JSR223),MongoDB和JDBC元素中,使代码更具可读性,并允许UNDO / REDO通过CTRL + Z / CTRL + Y

具有语法颜色的BSF采样器

 

具有语法颜色的JSR223预处理器

 

现在,更好的编辑器可用于具有大文本内容的测试元素,如HTTP Sampler,以及提供行编号的JMS相关测试元素,并允许UNDO / REDO通过CTRL + Z / CTRL + Y

JMeter GUI现在可以完全国际化,所有剩余的问题都已修复

目前法语已翻译其所有标签。其他语言部分翻译,可以通过阅读本地化(翻译指南)自由撰写翻译

测试计划中的移动元素已在许多方面得到改进

现在,在多个节点上拖放测试计划树中的元素变得更加容易

 

 

请注意,由于Java中的错误,您无法在最后一个节点之后删除节点。解决方法是在最后一个节点之前删除它,然后将最后一个节点拖放到刚删除的节点之前。

添加了新的快捷方式以移动树中的元素。

(alt +向上箭头)和(alt +向下箭头)移动父节点内的元素
(alt +向左箭头)和(alt +向右箭头)在树深度上下移动元素

响应时间图Y轴现在可以缩放

 

 

JUnit Sampler现在提供有关配置错误的更多详细信息

已知的错误

  • Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。
  • 当If Controller的条件在第一次迭代时总是为假时,监听器不会显示迭代计数(参见 错误52496)。解决方法是在If Controller的同一级别(或更高级别)添加一个采样器。例如,具有0等待时间的测试操作采样器(不生成样本),或者将所有字段设置为False的调试采样器(以减小样本大小)。
  • Web服务采样器不考虑HTTP响应状态来计算响应的状态,因此包含非空体的响应500将被视为成功,请参阅错误54006要解决此问题,请确保始终读取响应并在响应中添加响应断言检查文本。
  • 绿色框左侧显示的数字是活动线程数/线程总数,这些仅适用于本地运行的测试; 它们不包括在使用客户端 - 服务器模式时在远程系统上启动的任何线程(参见 错误54152)。
  • 请注意, 在某些Linux系统上存在Java中的错误,在运行测试用例或JMeter本身时会将其显示为以下错误:
     [java]警告:无法刷新用户首选项:
     java.util.prefs.BackingStoreException:
     java.lang.IllegalArgumentException:不支持:indent-number
    
    这不会影响JMeter操作。自Java 7b05以来,此问题已得到解决。
  • 对于Linux系统上的Java 1.6和Gnome 3,JMeter菜单可能无法正常工作(在鼠标单击和菜单之间切换)。这是一个已知的Java错误(参见 错误54477)。解决方法是使用Java 7运行时(OpenJDK或Oracle JDK)。
  • 使用Oracle Java 7和Mac Book Pro Retina Display,JMeter GUI可能看起来很模糊。这是一个已知的Java错误,请参阅Bug JDK-8000629解决方法是使用Java 7 update 40运行时修复此问题。

不兼容的变化

  • 如果subject字段为空,则SMTP Sampler现在使用eml文件主题
  • 有了这个版本,autoFlush已经在PrintWriter上关闭,负责编写测试结果。这样可以提高密集测试的吞吐量,但是在JMeter崩溃的情况下会导致更多的测试数据丢失(极少)。要恢复到以前的行为,请将jmeter.save.saveservice.autoflush属性设置true
  • 功能助手对话框的 快捷键现在是CTRL + SHIFT + F1(Mac OS的CMD + SHIFT + F1)原始键序列(Ctrl + F1)在某些位置不起作用(它由Java Swing ToolTipManager使用)。因此有必要改变捷径。
  • Web服务(SOAP)请求已默认从GUI中删除,因为不推荐使用Element。(将HTTP请求 与正文数据一起使用,另请参阅模板构建SOAP Web服务测试计划),如果需要显示它,请参阅jmeter.properties中的属性not_in_menu
  • 事务控制器现在设置二维码生成父采样 (如果生成的父样检查),用于第一失败的孩子的响应代码中的一个子失效的情况下,在以前的版本响应代码是空的。
  • 在以前的版本中,IncludeController可以运行位于线程组内的测试元素,这种行为(未记录)可能导致奇怪的行为,在此版本中已被删除(请参阅 错误55464)。包含测试元素的正确方法是使用包含控制器文档中所述的测试片段
  • HttpClient 3.1和HttpClient 4.x采样器的重试计数已更改为0以前默认值为1,这可能会导致意外的额外流量。
  • 从此版本开始,HTTP(S)测试脚本记录器尝试检测样本何时是先前重定向的结果。如果当前响应是重定向,JMeter将保存重定向URL。收到下一个请求时,会将其与保存的重定向URL进行比较,如果匹配,JMeter将禁用生成的样本。要恢复到以前的行为,请设置属性proxy.redirect.disabling = false
  • 从此版本开始,在HTTP(S)测试脚本记录器中,如果将分组设置为将每个组放入新的事务控制器中,则记录器将创建事务控制器实例,其中包括计时器的包含持续时间和生成的样本中的事先处理器设置为false 。此默认值反映的响应时间更准确。
  • __escapeOroRegexpChars函数(转义ORO保留字符)不再修剪该值(请参阅 错误55328
  • 所述公共琅-2.6.jar已经从嵌入在库被去除的JMeter / lib中的文件夹,因为它不是在运行时所需的由JMeter的(它仅由Apache的速度,用于生成文档)。如果您使用依赖于它的任何插件或第三方代码,则需要将其添加到jmeter / lib文件夹中

Bug修复

HTTP采样器和代理

  • 错误54627 - JMeter代理GUI:当存在具有长名称的采样器时,采样器设置类型占据整个屏幕。
  • 错误54629 - HTMLParser不提取<object>标记网址。
  • 错误55023 - SSL上下文重用功能(51380)对非ssl请求性能/吞吐量产生负面影响。根据Brent Cromarty的分析(brent.cromarty在yahoo.ca)
  • 错误55092 - 当嵌入资源URL格式错误时,显示“WARN - jmeter.protocol.http.sampler.HTTPSamplerBase:检测到(不应发生)空URL”的日志消息。
  • 错误55161 - SoapSampler.setPostHeaders中的无用处理。供稿人:Adrian Nistor(yinois1 at illinois.edu)
  • 错误54482 - HC无法跟踪带有非编码字符的重定向。
  • 错误54142 - 当路径包含“|”时,HTTP代理服务器抛出异常 字符。
  • 错误55388 - HC3不允许IP Source字段覆盖httpclient.localaddress。
  • 错误55450 - HEAD重定向应保持为HEAD
  • 错误55455 - 使用HTTPClient4的HTTPS忽略cps设置
  • 错误55502 - 代理在录制时生成空的http:/条目
  • 错误55504 - 当浏览器提示进行证书覆盖时,代理服务器错误地发出CONNECT请求
  • 错误55506 - 代理应该向任何已配置的侦听器发送失败的请求
  • 错误55545 - HTTP代理服务器GUI不应允许选择“跟随”和“自动”重定向

其他采样器

  • 错误54913 - JMSPublisherGui错误地恢复其状态。供稿人:Benoit Wiart(gmail.com的benoit.wiart)
  • 错误55027 - 测试操作回归,未记录持续时间值(每晚构建)。
  • 错误55163 - 调用testStarted(String)/ testEnded(String)时,BeanShellTestElement无法引用字符串。
  • 错误55349 - 如果未指定输入文件且应用程序请求输入,NativeCommand将挂起。
  • 错误55462 - 如果样本失败,系统采样器不应更改采样器标签

控制器

  • 错误54467 - 循环控制器:每个父迭代只计算一次循环值。
  • 错误54985 - 使事务控制器将生成的父采样器的响应代码设置为第一个失败的子进程的响应代码,以防其中一个子进程出现故障。供稿人:Mikhail Epikhin(yyedex.ru的epihin-m)
  • 错误54950 - ModuleController:如果在首次运行后发生更改并且禁用了引用的节点,则不会考虑对引用的模块的更改。
  • 错误55201 - ForEach控制器排除起始索引并包括结束索引(澄清文档)。
  • 错误55334 - 添加包含控制器到测试计划(由包含控制器组成)而不保存TestPlan导致包含的代码在保存之前不被考虑。
  • 错误55375 - 如果ModuleController的名称与目标节点相同,则在非GUI模式下使用ModuleController的StackOverflowError。
  • 错误55464 - 包含控制器运行包含的线程组

听众

  • 错误54589 - 如果html页面使用双字节字符集,则查看结果树有很多垃圾字符。
  • 错误54753 - 在使用统计模式时,如果key_on_threadname = false,则SampleResult.getSampleLabel()处的StringIndexOutOfBoundsException。
  • 错误54685 - 如果在客户端但未在服务器中设置“sample_variable”,则为ArrayIndexOutOfBoundsException。
  • 错误55111 - ViewResultsTree:如果需要垂直滚动条,则不会重写文本。由Milamber供稿

定时器,断言,配置,预处理器和后处理器

  • 错误54540 - IHM中未标记“HTML参数掩码”。
  • 错误54575 - CSS / JQuery Extractor:选择JODD实现总是使用JSOUP。
  • 错误54901 - 响应断言GUI表现得很奇怪。
  • 错误54924 - XMLAssertion使用JMeter JVM file.encoding而不是响应编码,并且不清除threadlocal变量。
  • 错误53679 - 具有本地化的常量吞吐量计时器错误。Ludovic Garcia报道

功能

国际化

  • 错误55437 - ComboStringEditor在语言更改时不会转换EDIT和UNDEFINED字符串
  • 错误55501 - __char函数的法语描述的编码不正确。供稿人:Antonio Gomes Rodrigues(g00上的ra0077)

一般

  • 错误54504 - 找不到资源字符串:[clipboard_node_read_error]。
  • 错误54538 - GUI:上下文菜单太大。
  • 错误54847 - 剪切和粘贴被树多选选中断。供稿人:Benoit Wiart(gmail.com的benoit.wiart)
  • 错误54870 - 树拖放可能会丢失叶节点(受影响的夜间构建)。供稿人:Benoit Wiart(gmail.com的benoit.wiart)
  • 错误55056 - 在Data.append()中浪费了工作。供稿人:Adrian Nistor(yinois1 at illinois.edu)
  • 错误55129 - 根据CVE-2013-1571,VU#225657更改Javadoc生成。
  • 错误55187 - 在HTTP CacheManager中计算ONE_YEAR_MS时出现整数溢出。
  • 错误55208 - JSR223语言条目重复; 折叠到小写。
  • 错误55203 - TestBeanGUI - 找到错误的语言设置。
  • 错误55065 - Spline3.converge()中的无用处理。供稿人:Adrian Nistor(yinois1 at illinois.edu)
  • 错误55064 - ReportTreeListener.isValidDragAction()中的无用处理。供稿人:Adrian Nistor(yinois1 at illinois.edu)
  • 错误55242 - BeanShell客户端jar在升级到2.8后抛出异常。
  • 错误55288 - 对于HTTP请求,JMeter应默认为0次重试。
  • 错误55405 - 如果缺少lib / api或lib / doc,则ant download_jars任务失败。由Antonio Gomes Rodrigues提供。
  • 错误55427 - TestBeanHelper应忽略GenericTestBeanCustomizer不支持的属性
  • 错误55459 - 如果用户选择另一个测试元素,使用ComboStringEditor的元素将丢失输入值
  • 错误54152 - 在分布式测试中:activeThreads在GUI和Summariser中始终显示0
  • 错误55509 - 允许插件通知远程线程号进展
  • 错误55572 - 当内容超出显示时,参数的详细信息弹出窗口不显示滚动条
  • 错误55580 - 帮助窗格无法滚动以启动<a href="#">链接
  • 错误55600 - JSyntaxTextArea:第一次撤消时出现奇怪的行为
  • 错误55655 - 如果一个引擎未正确启动,则远程停止/关闭全部时出现 NullPointerException。供稿人:UBIK Load Pack(ubikloadpack.com支持)
  • 错误55657 - 远程和本地停止/关闭按钮状态不考虑本地/远程状态

改进

HTTP采样器和代理

  • HTTP请求:行参数详细信息框中的小用户交互改进。由Milamber供稿
  • 错误55255 - 在HTTP DELETE方法中允许Body支持使用它的API(如ElasticSearch)。
  • 错误53480 - 向Http Sampler(HttpClient4)添加Kerberos支持。基于Felix Schumacher的补丁(felix.schumacher在internetallee.de)
  • 错误54874 - 除源IP地址外还支持设备。基于Dan Fruehauf的补丁(malkodan at gmail.com)
  • 错误55488 - 将.ico和.woff文件扩展名添加到代理记录器中的默认建议排除项。由Antonio Gomes Rodrigues提供
  • 错误55525 - 代理应支持密钥服务器条目的别名
  • 错误55531 - 代理记录和重定向。添加了禁用重定向样本的代码。
  • 错误55507 - 代理SSL记录无法很好地处理外部嵌入式资源
  • 错误55632 - 有一个新的htmlParser实现,用于嵌入式资源解析,具有更好的性能
  • 错误55653 - HTTP(S)测试脚本记录器应设置TransactionController属性“包括计时器和生成的样本中的事前处理器的持续时间”为false

其他采样器

  • 错误54788 - JMS点对点采样器 - GUI增强功能可提高可读性和易用性。供稿人:Bruno Antunes(bmail.com在gmail.com)
  • 错误54798 - 使用来自EML文件的主题进行SMTP采样器。供稿人:Mikhail Epikhin(yyedex.ru的epihin-m)
  • 错误54759 - 使用HTTPS的SSLPeerUnverifiedException,记录属性。
  • 错误54896 - JUnit sampler仅提供“无法创建类的实例”消息,其中包含构造函数问题。
  • 错误55084 - 为JDBC请求添加超时支持。供稿人:Mikhail Epikhin(yyedex.ru的epihin-m)
  • 错误55403 - 对OS采样器的增强:支持超时
  • 错误55518 - 当选择“Prepared Select Statement”,“Prepared Update Statement”或“Callable Statement”查询类型时,添加限制每个连接的缓存PreparedStatements数的功能

控制器

  • 错误54271 - 如果重命名测试计划,模块控制器会中断。

听众

  • 错误54532 - 改进响应时间图Y轴刻度具有巨大值或小值(<1000ms)。添加新字段以定义增量比例。由Milamber根据Luca Maragnani(luca.maragnani at gmail.com)的补丁提供的
  • 错误54576 - 查看结果树:添加CSS / JQuery测试程序。
  • 错误54777 - 提高默认ResultCollector的性能。基于Mikhail Epikhin的补丁(eyehin-m at yandex.ru)
  • 错误55389 - 在请求数据中显示IP源地址

定时器,断言,配置,预处理器和后处理器

  • 错误54789 - XPath断言 - GUI增强功能可提高可读性和易用性。

功能

  • 错误54991 - 添加编码/解码URL编码字符的函数(__urlencode和__urldecode)。由Milamber供稿。

国际化

  • 错误55241 - 需要GUI编辑器来处理基于具有本地化显示字符串的枚举的字段
  • 错误55440 - ComboStringEditor应该允许标签依赖于语言
  • 错误55432 - 切换语言时,CSV数据集配置失去共享模式

一般

  • 错误54584 - MongoDB插件。基于Jan Paul Ettles的补丁(gmail.com的janpaulettles)
  • 错误54669 - 添加标志,强制非GUI JVM在测试后退出。由Scott Emmons提供
  • 错误42428 - Workbench未随测试计划一起保存。供稿人:Dzmitry Kashlach(来自gmail.com的dzmitrykashlach)
  • 错误54825 - 添加快捷方式以在树中移动元素。供稿人:Benoit Wiart(gmail.com的benoit.wiart)
  • 错误54834 - 改进jmeter树中的拖放。供稿人:Benoit Wiart(gmail.com的benoit.wiart)
  • 错误54839 - 在Mac上设置应用程序名称。供稿人:Benoit Wiart(gmail.com的benoit.wiart)
  • 错误54841 - 正确处理Mac Os(CMD-Q)上的退出快捷方式。供稿人:Benoit Wiart(gmail.com的benoit.wiart)
  • 错误54844 - 在Mac Os上设置应用程序图标。供稿人:Benoit Wiart(gmail.com的benoit.wiart)
  • 错误54864 - 在释放Shift或Control之前,无需开始拖动即可在树中启用多选拖放。供稿人:Benoit Wiart(gmail.com的benoit.wiart)
  • 错误54945 - 添加Shutdown Hook以启用陷阱kill或CTRL + C信号。
  • 错误54990 - 下载大文件,避免outOfMemory。
  • 错误55085 - 用户体验改进:能够从模板创建新的测试计划。供稿人:UBIK Load Pack(ubikloadpack.com支持)
  • 错误55172 - 为插件提供添加顶级菜单和菜单项的方法。
  • 错误55202 - 使用RSyntaxTextArea为脚本元素(BeanShell,BSF和JSR223)和JDBC元素添加语法颜色。由Milamber提供,基于Marko Vlahovic(vlahovic74 at gmail.com)的补丁
  • 错误55175 - HTTPHC4Impl重构以允许更好的继承。
  • 错误55236 - 模板 - 提供重新加载模板详细信息的按钮。
  • 错误55237 - 模板系统应支持相对的fileName条目。
  • 错误 55423 - BatchSampleSender:通过将listener.processBatch移动到synchronized块之外来减少锁定粒度
  • 错误55424 - 将剥离添加到现有SampleSenders
  • 错误55451 - 当文本内容足够长以添加滚动条时,JSyntaxTextArea的测试元素GUI向下滚动
  • 错误55513 - StreamCopier不能与System.err或System.out一起使用,因为它会关闭输出流
  • 错误55514 - SystemCommand应支持任意输入和输出流
  • 错误55515 - SystemCommand应支持链接命令
  • 错误55606 - 将JSyntaxtTextArea用于Http请求,JMS测试元素
  • 错误55651 - 将JMeter应用程序图标更改为Apache plume图标

非功能性变化

  • 已更新至jsoup-1.7.2
  • 错误54776 - 将对Bouncy Castle的依赖关系更新为1.48。供稿人:Emmanuel Bourg(ebourg at apache.org)
  • 更新为HttpComponents Client 4.2.6(从4.2.3开始)
  • 更新为HttpComponents Core 4.2.5(从4.2.3开始)
  • 更新为commons-codec 1.8(从1.6开始)
  • 更新为commons-io 2.4(来自2.2)
  • 更新为commons-logging 1.1.3(从1.1.1开始)
  • 更新为commons-net 3.3(来自3.1)
  • 更新至jdom-1.1.3(来自1.1.2)
  • 更新为jodd-lagarto和jodd-core 3.4.8(来自3.4.1)
  • 更新到junit 4.11(从4.10开始)
  • 更新到slf4j-api 1.7.5(从1.7.2开始)
  • 更新为tika 1.4(从1.3开始)
  • 更新到xmlgraphics-commons 1.5(从1.3.1开始)
  • 更新到xstream 1.4.4(从1.4.2开始)
  • 更新至BouncyCastle 1.49(自1.48起)
  • 错误54912 - JMeterTreeListener应该使用常量。供稿人:Benoit Wiart(gmail.com的benoit.wiart)
  • 错误54903 - 删除对Activation Framework的依赖性。供稿人:Emmanuel Bourg(ebourg at apache.org)
  • 将commons-lang(2.6)移动到lib / doc,因为它只需要Velocity。
  • 重新组织和简化的NOTICE和LICENSE文件。
  • 错误55411 - NativeCommand可能在其他地方有用。复制代码到oajorphan.exec。
  • 错误55435 - 可以简化ComboStringEditor以使大多数设置最终
  • 错误55436 - ComboStringEditor应该实现ClearGui
  • 错误55463 - 不建议使用Component.requestFocus(); 请改用requestFocusInWindow()
  • 错误55486 - 新的JMeter徽标。供稿人:UBIK Load Pack(ubikloadpack.com支持)
  • 错误55548 - 整理使用TestElement.ENABLED; 始终使用TestElement.isEnabled()/ setEnabled()
  • 错误55617 - jorphan集合的改进。供稿人:Benoit Wiart(gmail.com的benoit.wiart)
  • 错误55623 - 不应忽略无效/意外配置值
  • 错误55626 - 将HTTP代理服务器重命名为HTTP(S)测试脚本记录器

谢谢

我们感谢上面的bug和改进部分中提到的所有贡献者:

  • Bruno Antunes(gmail.com的bmantunes)
  • Emmanuel Bourg(eachel at apache.org)
  • 斯科特埃蒙斯
  • Mikhail Epikhin(yyedex.ru的epihin-m)
  • Dzmitry Kashlach(gz的dzmitrykashlach)
  • Luca Maragnani(gmail.com的luca.maragnani)
  • Milamber
  • Adrian Nistor(来自illinois.edu的nistor1)
  • Antonio Gomes Rodrigues(g00上的ra0077)
  • UBIK Load Pack(ubikloadpack.com支持)
  • Benoit Wiart(gmail.com的benoit.wiart)


我们也感谢帮助我们改进JMeter的bug记者。
对于此版本,我们要特别感谢以下记者在我们修复后做出的明确报告和测试:

  • 伊曼纽尔·海登(immanuel.hayden at gmail.com)
  • Danny Lade(dlade at web.de)
  • Brent Cromarty(yahoo.ca的brent.cromarty)
  • Wolfgang Heider(racon.at的wolfgang.heider)
  • Shmuel Krakower(shmulikk at gmail.com)

如果我们遗漏了其他人,请道歉。

 

版本2.9

新的和值得注意的

核心改进:

*引入了一个使用CSS或类似jquery的选择器语法的新Extractor,它允许使用JODD或JSOUP实现

 

 

结果:JMeter变量中页面的标题

 

* JMeter现在可以处理不同元素中的不同类型的文档(PDF,MsOffice文件,Apache OpenOffice的文件......)

  • 正则表达式提取器,从文档中提取文本
  • 断言响应,检查文档中的文本
  • 查看结果树,查看文本文本

 

 

*新的Regex用户参数预处理器,可以使用正则表达式提取器从先前的响应中提取的引用来注入输入参数名称和值

 

 

* TCP采样器:新选项

TCP Sampler已增强了新选项,允许设置Close Connection, SO_LINGER和 End of line(EOL)字节值

 

*一个新的函数__escapeOroRegexpChars(,)已经引入了引用ORO regexp元字符

* ForEach Controller:新领域

ForEach Controller现在有2个新字段来控制循环的开始和结束

 

*结果状态操作处理程序现在有一个“开始下一个线程循环”的新选项

 

 

* JMS Publisher:新选项

JMS Publisher现在可以发送字节消息

*内存和性能改进

当使用多个后处理器作为采样器的子进程时,此版本对每个线程和CPU的内存使用量进行了重大改进

JSR223 Elements(使用Groovy,Scala,...作为脚本语言)已得到改进,可在文本区域中传递脚本时启用编译结果的缓存

默认情况下,某些配置默认值已更改为提高性能(请参阅 错误54412),请参阅新增和值得注意的部分中的说明。

  • 分布式测试现在使用MODE_STRIPPED_BATCH,它以批处理模式返回样本(默认情况下每100个样本或每分钟)。另请注意,MODE_STRIPPED_BATCH会从SampleResult中删除响应数据,因此如果需要,请更改为其他模式(jmeter.properties中的mode属性)
  • 结果数据现在默认保存为CSV(jmeter.properties中的jmeter.save.saveservice.output_format)

 

* XPath Assertion现在允许使用JMeter变量作为输入

 

 

GUI和人体工程学改进:

*搜索功能已得到改进,可在更多内部元素字段中进行搜索并扩展搜索结果

*现在可以在2个JMeter实例之间复制/粘贴> = 2.9版本

从一个JMeter实例复制元素:

 

将元素粘贴到第二个JMeter实例中:

 

* HTTP标头管理器

允许从剪贴板复制到HeaderPanel,标题应该用新行分隔,并具有以下表单名称:value

 

*模块控制器

模块控制器已得到改进,可以更好地呈现引用的控制器并通过单击新按钮进行扩展

 

* HTTP代理服务器

HTTP代理服务器现在有一个按钮,可以为URL模式添加一组默认排除项,此列表可以通过属性配置:proxy.excludes.suggested

 

* HTTP代理服务器中的目标控制器渲染已得到改进

HTTP代理服务器记录:

* HTTP代理服务器现在自动使用带有Raw Post Body模式的HTTP请求,用于只有一个未命名参数的样本(JSON,XML,GWT,...)

* HTTP代理服务器不强制用户在HTTP采样器设置中选择采样器的类型,这样可以更容易地在实现之间切换,因为采样器不再具有此信息集

 

 

* SamplerCreator界面已经过丰富,可满足插件提供商的新要求

*现在可以通过修改proxy.binary.types属性来添加application / x-www-form-urlencoded来为x-www-form-urlencoded POST请求创建二进制采样器

*在读取CSV文件时改进了时间戳格式自动检测

已知的错误

Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。

当If Controller的条件在第一次迭代时总是为假时,监听器不会显示迭代计数(参见 错误52496)。解决方法是在If Controller的同一级别(或更高级别)添加一个采样器。例如,具有0等待时间的测试操作采样器(不生成样本),或者将所有字段设置为False的调试采样器(以减小样本大小)。

Web服务采样器不考虑HTTP响应状态来计算响应的状态,因此包含非空体的响应500将被视为成功,请参阅 错误54006要解决此问题,请确保始终读取响应并在响应中添加响应断言检查文本。

更改语言可能会破坏以下元素的部分配置(请参阅 错误53679):

  • CSV数据集配置(共享模式将丢失)
  • 恒定吞吐量计时器(根据丢失计算吞吐量)

 

绿色框左侧显示的数字是活动线程数/线程总数,这些仅适用于本地运行的测试; 它们不包括在使用客户端 - 服务器模式时在远程系统上启动的任何线程(参见 错误54152)。

请注意,在某些Linux系统上存在Java中的错误,在运行测试用例或JMeter本身时会将其显示为以下错误:

 [java]警告:无法刷新用户首选项:
 java.util.prefs.BackingStoreException:
 java.lang.IllegalArgumentException:不支持:indent-number

这不会影响JMeter操作。

 

不兼容的变化

JMeter现在需要Java 6或更高版本的运行时。

默认情况下,某些配置默认值已更改为提高性能(请参阅 错误54412),请参阅新增和值得注意的部分中的说明。

Webservice采样器现在添加请求通过Header Manager设置的标头,这些标头以前被忽略

jdbcsampler.cachesize属性已被删除,它先前限制了Map <String,PreparedStatement>的每个连接缓存的大小,它还限制了此映射的大小,该映射包含用于SQL查询的PreparedStatement。这个限制引发了一个错误 Bug 53995它已被删除,所以现在这两个地图的大小不再受限制。此更改会从此版本开始更改行为,在测试期间不会关闭PreparedStatement。

从这个版本开始,JSR223测试元素有一些重要的变化:

  • 具有无效文件名(不存在或不可读)的JSR223测试元素将使测试失败,而不是使元素静默工作
  • 在JSR223测试元素中:responseCodeOk,responseMessageOK和成功是在脚本执行之前设置的,如果设置了responseData,它将不再被脚本返回值上的toString()覆盖

 

查看结果树现在将缺少内容类型的响应视为文本。

在远程测试模式下,如果无法配置其中一个远程引擎,JMeter现在会退出错误,之前它已使用可用引擎启动测试。

Bug修复

HTTP采样器和代理

  • 使用带缓存管理器或CookieManager的并发池嵌入式下载时,请勿记录虚假警告消息
  • 错误54057 - 在启动时设置用户和密码的代理选项(-u和-a)不能与HTTPClient 4一起使用
  • 错误54187 - 如果请求失败,请求选项卡不显示标题
  • 错误53840 - 代理记录:响应消息:URLDecoder:转义(%)模式中的非法十六进制字符 - 对于输入字符串:“”“
  • 错误54351 - HC4和URI片段失败

其他采样器

  • 错误53997 - LDAP扩展请求:在XML响应数据中的搜索过滤器标记中转义&符号(&),左尖括号(<)和右尖括号(>)
  • 错误53995 - AbstractJDBCTestElement在多线程之间共享PreparedStatement
  • 错误54119 - 未重定向HTTP 307响应
  • 错误54326 - AjpSampler在post中发送文件抛出FileNotFoundException
  • 错误54331 - AjpSampler在受保护的GET请求上抛出空指针

控制器

听众

  • 错误54088 - 类型video / f4m是文本,而不是二进制
  • 错误54166 - ViewResultsTree无法呈现HTML响应:处理无法解析HTML
  • 错误54287 - 在日期格式字段中使用带有时间的日期时,响应时间图中的时间戳不正确
  • 错误54451 - 当同时有多个样本时,响应时间图报告错误的时间
  • 错误54459 - CSVSaveService无法很好地处理日期解析

定时器,断言,配置,预处理器和后处理器

  • 错误54058 - 在HTTP请求默认值中,如果未选中复选框“检索所有嵌入资源”,则“嵌入的URL必须匹配:”字段的值不会保存。
  • 错误54375 - 正则表达式提取器:当正则表达式语法错误时,后处理停止

功能

国际化

一般

  • 错误53975 - 变量替换不适用于选项“延迟创建线程直到需要”
  • 错误54055 - 查看结果树:=在HTTP选项卡上从参数值中删除符号
  • 错误54129 - 搜索功能虽然存在于元素中,但找不到文本
  • 错误54023 - 无法从根目录启动JMeter,如果JMeter安装的完整路径包含一个或多个空格(Unix / linux)
  • 错误54172 - 重复的快捷键不起作用,CTRL + C / CTRL + V / CTRL + V不取消默认事件
  • 错误54057 - 在启动时设置用户和密码的代理选项(-u和-a)不能与HTTPClient 4一起使用
  • 错误54267 - 开始下一个线程循环设置在自定义线程组中不起作用
  • 错误54413 - DataStrippingSampleSender返回0表示任何响应的字节数

改进

HTTP采样器

  • 错误54185 - 允许以HTTP或HTTPS开头的路径中的查询字符串

其他采样器

  • 错误54004 - Webservice Sampler:允许使用Header Manager添加标头以进行请求
  • 错误54106 - JSR223TestElement应在设置文件名时检查文件是否存在,而不是使用文本区域内容
  • 错误54107 - JSR223TestElement:启用脚本文本的编译和缓存
  • 错误 54109 - JSR223TestElement:在进入脚本之前应设置SampleResult属性以允许用户设置不同的代码
  • 错误54230 - TCP采样器,添加“关闭连接”,“SO_LINGER”和“行结束(EOL)字节值”选项
  • 错误54182 - 支持发送ByteMessage for JMS Publisher。

控制器

  • 错误54131 - ForEach Controller:添加循环变量的开始和结束索引
  • 错误54132 - 模块控制器GUI:改进引用控制器的渲染
  • 错误54155 - ModuleController:添加一个快捷方式按钮,将树展开到引用的控制器并突出显示它

听众

  • 错误54200 - 添加对多种文档类型(如Apache OpenOffice文件,MS Office文件,PDF文件等)的支持,查看结果树,断言响应和正则表达式提取器(使用Apache Tika)
  • 错误54226 - 查看结果树:即使服务器未返回ContentType标头,也显示响应

定时器,断言,配置,预处理器和后处理器

  • 错误54259 - 介绍一个使用CSS或类似jquery的选择器语法的新Extractor
  • 错误45772 - RegEx用户参数后处理器
  • 错误54160 - 添加对xpath断言的支持以应用于JMeter变量。

功能

国际化

一般

  • 错误54005 - HTTP镜像服务器:添加特殊标头“X-”以控制响应状态和响应内容
  • 错误53875 - 在HTTP代理上包含URL过滤器的建议默认值
  • 错误54031 - 向运行/总线程指示符添加工具提示
  • Webservice(SOAP)请求已被弃用
  • 错误54161 - 代理:能​​够为x-www-form-urlencoded POST请求创建二进制采样器
  • 错误54154 - HTTP代理服务器不应强制用户在HTTP采样器设置中选择采样器的类型
  • 错误54165 - 代理服务器:改进目标控制器的渲染
  • 错误46677 - 在测试计划之间复制测试元素
  • 错误54204 - 结果状态操作处理程序:添加开始下一个线程循环选项
  • 错误54232 - 搜索功能:添加按钮以搜索和扩展结果
  • 错误54251 - 添加三态复选框实现
  • 错误 54257 - 增强SamplerCreator接口以满足新要求
  • 错误54258 - 代理:当Sampler有一个未命名的参数时使用Raw Post Body,对于使用类型JSON,XML,GWT body的POST方法的Samplers非常有用
  • 错误54268 - 提高CPU和内存使用率
  • 错误54376 - ScopePanel:允许更精确地配置范围
  • 错误54412 - 更改JMeter默认值以确保默认情况下性能更佳
  • 错误54414 - 如果其中一个引擎无法正确启动,则不应启动远程测试

非功能性变化

  • 错误53956 - 添加从标题管理器剪贴板粘贴(值列表)的功能
  • 更新为HttpComponents Client 4.2.3(从4.2.1开始)
  • 更新为HttpComponents Core 4.2.3(从4.2.2开始)
  • 错误54110 - BSFTestElement和JSR223TestElement应使用共享超类用于公共字段
  • 错误54199 - 转到Java 6
  • 升级到rhino 1.7R4

版本2.8

新的和值得注意的

核心改进:

线程组:新选项延迟线程创建,直到需要

新选项“延迟线程创建直到需要”,它将在需要时创建和启动线程,而不是在测试启动时创建它
这个新功能允许使用大量短期线程运行测试。

 

HTTP Cookie管理器(IPv6支持)

在JMeter中添加HTTPClient 4 cookie实现。
Cookie Manager现在具有默认的HC3.1实现和新的HC4实现选择(符合IPv6地址)

 

内存和性能改进

在此版本中,对JMeterThread的内存使用情况进行了重大改进

JSR223 Elements(使用Groovy,scala,...作为脚本语言)已经过改进,可以实现:

  • 可用时使用Compilable接口来提高CPU使用率
  • 脚本用作文件时缓存编译

请参阅各版本的JMeter Performance

 

OS Process Sampler

允许为stdout / stderr / stdin定义文件。

 

HTTP请求:PATCH动词

将PATCH谓词添加到HTTP采样器

 

HTTP请求:HTTPClient 4现在是默认实现

HTTPClient 4现在是默认的HTTP请求实现(以及生成HTTP请求时的Proxy元素)。
以前默认是HTTP Java实现(即JVM提供的实现)

 

HTTP请求

将嵌入式URL过滤器添加到HTTP请求默认值控制(它已经存在于HTTP请求中)

 

  • CSV数据集:引用数据现在支持嵌入的新行
  • JMX文件现在包含创建该文件的JMeter版本
  • JMeter版本现在可用作属性“jmeter.version”

报告改进:

响应时间图

添加新的可视化器响应时间图以绘制线图,显示测试响应时间的演变

 

响应时间图的设置

 

查看表格中的结果

在Table监听器中为View Result添加延迟

 

聚合图

小改进:左侧或右侧的图例现在位于1列(而不是1个大线),...

 

GUI和人体工程学改进:

HTTP代理服务器简化

HTTPS欺骗选项已从代理中删除,因为自JMeter 2.4以来可直接使用HTTPS记录。

 

HTTP代理服务器

允许从剪贴板粘贴URL过滤器

 

在JMeter中查找

CTRL + F表示新的查找功能

ESC键现在关闭弹出窗口。

 

GNOME 3中的用户界面

在Gnome 3的应用程序标题栏中显示“Apache JMeter”标题

 

已知的错误

Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。

当If Controller的条件在第一次迭代时总是为假时,监听器不会显示迭代计数(参见 错误52496))。解决方法是在If Controller的同一级别(或更高级别)添加一个采样器。例如,具有0等待时间的测试操作采样器(不生成样本),或者将所有字段设置为False的调试采样器(以减小样本大小)。

更改语言可能会破坏以下元素的部分配置(请参阅 错误53679):

  • CSV数据集配置(共享模式将丢失)
  • 恒定吞吐量计时器(根据丢失计算吞吐量)

 

请注意,在某些Linux系统上存在Java中的错误,在运行测试用例或JMeter本身时会将其显示为以下错误:

 [java]警告:无法刷新用户首选项:
 java.util.prefs.BackingStoreException:
 java.lang.IllegalArgumentException:不支持:indent-number

这不会影响JMeter操作。

 

不兼容的变化

当使用CacheManager时,JMeter现在缓存GET查询的响应,前提是标题Cache-Control与“no-cache”不同,如规范中所述。此外,它不再用于“无缓存”响应的缓存已弃用条目。请参阅 错误53521 错误53522

JSR223测试元素发生了重大变化,以前在脚本执行之前设置的变量存储在每次执行创建一次的ScriptEngineManager中,现在ScriptEngineManager是所有JSR223元素共享的单例,每次执行只创建一次ScriptEngine,变量设置在脚本执行之前现在存储在每次执行时创建的Bindings中,请参阅 错误53365

如果ScriptEngine支持此功能,则使用脚本文件的JSR223测试元素现在已编译,请参阅 错误53520

功能助手对话框的快捷键现在是CTRL + F1(Mac OS的CMD + F1),CTRL + F(Mac OS的CMD + F1)现在打开搜索对话框。

默认情况下,TestCompiler现在存储它在Controller实例中看到的对的详细信息,而不是静态集。错误53796 ]这为延迟启动测试计划提供了更好的内存行为,因为使用的内存与并发线程数成正比。使用静态Set内存使用量与总线程数成正比。这种变化不太可能导致问题。通过设置属性TestCompiler.useStaticSet = true可以恢复原始行为

HTTPS欺骗选项已从代理中删除,因为自JMeter 2.4以来可直接使用HTTPS记录。

Bug修复

HTTP采样器和代理

  • 错误53521 - 缓存管理器应使用Cache-control = private缓存内容
  • 错误53522 - 缓存管理器不应存储带有标头“no-cache”的所有响应,并存储具有max-age值的其他类型的Cache-Control
  • 错误53838 - 按“停止”不会中断TCP采样器
  • 错误53911 - JmeterKeystore不允许键入证书列表

其他采样器

  • 错误53348 - 当请求队列和接收队列不同时,JMeter JMS点对点请求 - 响应采样器不起作用
  • 错误53357 - JMS点对点在请求响应模式下报告响应时间过长
  • 错误53440 - SSL连接导致JDK 6上的ArrayStoreException和一些KeyManagerFactory SPI
  • 错误53511 - 访问日志采样器SessionFilter抛出NullPointerException - cookie管理器未正确初始化
  • 错误53715 - JMeter未加载WSDL

控制器

听众

  • 错误53742 - 当jmeter.save.saveservice.sample_count设置为true时,侦听器读取的已用时间总是等于0
  • 错误53774 - 除非samplerData为非null,否则RequestViewRaw不显示标头
  • 错误53802 - IdleTime值未保存到CSV日志
  • 错误53874 - 查看结果树:如果某些包含%等特殊字符的参数未编码,则RequestViewHTTP将失败并显示java.lang.IllegalArgumentException:URLDecoder:转义(%)模式中的非法十六进制字符且未显示Response

定时器,断言,配置,预处理器和后处理器

  • 错误51512 - 未使用IPv6主机标头将Cookie插入到HTTP请求中

功能

国际化

一般

  • 错误53365 - JSR223TestElement应该缓存ScriptEngineManager
  • 错误53520 - JSR223元素:使用Compilable接口来提高文件脚本的性能
  • 错误53501 - 同步计时器阻止测试结束。
  • 错误53750 - TestCompiler在配对集合中保存不必要的条目
  • 错误52266 - 代码:同步不一致
  • 错误53841 - CSVSaveService使用JVM默认文件编码读取文件,而不是使用saveservice.properties中配置的文件
  • 错误53953新:Typo监视器测试计划文档

改进

HTTP采样器

  • 错误53675 - 将PATCH谓词添加到HTTP采样器
  • 错误53931 - 为默认HTTP请求定义HTTPClient 4(以及生成HTTP请求的Proxy元素)。默认情况下,它是HTTP Java Sampler
  • 错误53934 - 删除JMeter HTTP代理服务器中的HTTPS欺骗选项。从JMeter 2.4开始,代理直接支持HTTPS协议

其他采样器

  • 错误55310 - TestAction应实现可中断
  • 错误53318 - 将嵌入式URL过滤器添加到HTTP请求默认值控制
  • 错误53782 - 增强JavaSamplerClient清理的JavaSampler处理以使用更少的内存
  • 错误53168 - 操作系统进程 - 允许指定stdout / stderr / stdin
  • 错误53844 - JDBC相关元素应检查应该包含JDBC连接配置的变量名类,以避免ClassCastException

控制器

  • 错误53671 - 即使发生关机测试,tearDown线程组也会运行

听众

  • 错误53566 - 不记录对jmeter日志的部分响应
  • 错误53716 - 聚合图中的小改进:左侧或右侧的图例现在位于1列(而不是1个大线),没有与参考方块颜色的边界,减少某些字段的宽度
  • 错误53718 - 添加新的可视化工具“响应时间图”以绘制线图,显示测试响应时间的演变
  • 错误53738 - 跟踪已启动和已完成的线程数
  • 错误53753 - Summariser:在大多数情况下,没有显示分数时间的点
  • 错误53749 - 可能会拆分TestListener接口。这应该减少每线程内存需求和处理,因为现在只需要处理实际使用testIterationStart功能的测试元素。
  • 错误53941 - 为View Result表侦听器添加延迟

定时器,断言,配置,预处理器和后处理器

  • 错误53755 - 在JMeter中添加HttpClient 4 cookie实现。Cookie Manager现在具有默认的HC3.1实现和新的HC4实现选择(符合IPv6地址)

功能

  • 错误51527 - __time()函数:为__time()添加另一个选项以提供自纪元以来的*秒*

国际化

一般

  • 错误53364 - 对函数助手对话框中的函数列表进行排序
  • 错误53418 - 新选项“延迟线程创建直到需要”,它将在需要时创建和启动线程,而不是在测试启动时创建它们
  • 错误42245 - 在HTTP授权管理器中显示清除密码
  • 错误53616 - 在Gnome 3的应用程序标题栏中显示“Apache JMeter”标题
  • 错误53759 - ClientJMeterEngine使用SearchByClass(TestListener)执行不必要的遍历
  • 错误52601 - CTRL + F用于新的查找功能
  • 错误53796 - TestCompiler使用静态Set,它可以变大
  • 错误53673 - 在jmx文件中添加JMeter版本
  • 将HeapDump支持添加到JMeter非GUI和GUI客户端
  • 错误53862 - 将JMeter版本作为属性提供会很好
  • 错误53806 - FileServer应提供线程安全的解析
  • 错误53807 - CSV数据集不处理引用数据中的嵌入新行
  • 错误53879 - GUI:允许使用ESC键关闭弹出窗口
  • 错误53876 - 允许从剪贴板粘贴URL过滤器(HTTP代理)

非功能性变化

  • 错误53311 - JMeterUtils#runSafe在中断时不应抛出错误
  • 更新为commons-net-3.1(从3.0.1开始)
  • 更新为HttpComponents Core 4.2.2(来自4.1.4)和HttpComponents Client 4.2.1(来自4.1.3)
  • 错误53765 - 切换到commons-lang3-3.1
  • 错误53884 - 错误的Maven groupId for commons-lang

版本2.7

新的和值得注意的

OS Process Sampler

一个新的系统采样器,可用于在本地计算机上执行命令。

 

使用DNS查找命令'dig'的OS Process Sampler结果示例

 

JMS采样器的改进

添加“非持久传递”选项以发送“非持久性”(保证最多一次传递。消息丢失不是问题。)JMS消息

 

支持发送JMS对象消息,以便通过XStream发送从XML解组的对象

 

启用通过JMS Publisher采样器设置JMS属性

 

测试动作采样​​器

允许过早退出循环

 

Webservice采样器改进

添加jmeter属性soap.document_cache以控制文档缓存的大小

 

使维护HTTP会话可配置

 

聚合图:具有平均值,中位数,90%行,最小和最大列的聚集条形码

聚合图更改为聚集条形图,添加更多列(中位数,90%行,最小值,最大值)和选项,修复了一些错误

 

聚合图的新设置

 

由extras文件夹中的JMeter Ant任务生成的HTML报告设计的改进

HTML报告示例

 

带有一些断言错误的HTML报告示例

 

梅勒展示台

 

  • 使用SSL或TLS启用身份验证和连接安全性
  • 改进GUI设计
  • 添加国际化(i18n)支持

 

日志中ERROR / FATAL消息数量的新可视指示符

指示器显示日志中的ERROR / FATAL消息数,可以单击它以切换日志查看器面板

 

用于显示参数行详细信息的对话框

在参数表上添加一个详细信息按钮以显示行的详细信息

 

细节框示例

 

插件作家

引入了新的接口org.apache.jmeter.engine.util.ConfigMergabilityIndi​​cator来判断是否可以在Sampler中合并ConfigTestElement(参见Bug 53042):

public boolean apply(ConfigTestElement configElement);

 

新的接口org.apache.jmeter.protocol.http.proxy.SamplerCreator允许在记录阶段插入与默认HTTP采样器不同的基于HTTP的采样器通过代理(参见 错误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)抛出异常;

 

已知的错误

Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。

当If Controller的条件在第一次迭代时总是为假时,监听器不会显示迭代计数(参见 错误52496)。解决方法是在If Controller的同一级别(或更高级别)添加一个采样器。例如,具有0等待时间的测试操作采样器(不生成样本),或者将所有字段设置为False的调试采样器(以减小样本大小)。

不兼容的变化

在更换用户定义变量时,当使用“正则表达式匹配”时,代理将不再替换部分值。它将使用Perl 5字匹配(“\ b”)

在用户定义的变量,测试计划,HTTP采样器参数表,Java请求默认值,JMS采样器和发布者,LDAP请求默认值和LDAP扩展请求默认值中,不再保存具有空名称和值的行。

JMeter现在将测试计划树扩展到测试计划级别,不再进一步选择树的根。此外,onload.expandtree的默认值为false。

图表完整结果监听器已被删除。

调用“全部清除”命令时,如果显示日志查看器,则其内容将被清除。

Bug修复

HTTP采样器和代理

  • 错误52613 - 使用Raw Post Body选项,文本被编码
  • 错误52781 - 即使选中浏览器兼容的标题,Content-Disposition标头也会出现乱码(HC4)
  • 错误52796 - 启动新解析时,MonitorHandler无法清除变量
  • 错误52871 - 多个证书不能与HTTP客户端4一起使用
  • 错误52885 - 代理:使用HTTPS记录问题,以安全性开头的cookie部分被截断
  • 错误52886 - 代理:启用欺骗时使用HTTPS记录问题,并不总是更改安全cookie
  • 错误52897 - HTTPSampler:使用PUT方法与HTTPClient4和空内容编码和发送文件导致NullPointerException
  • 错误53145 - HTTP Sampler - 过早评估路径中的函数

其他采样器

  • 错误51737 - TCPSampler:数据包被转换/损坏
  • 错误52868 - 应对BSF语言列表进行排序
  • 错误52869 - JSR223语言列表目前使用BSF列表,这是错误的
  • 错误52932 - JDBC采样器:在不是类IOException,SQLException,发生IOException的异常中,Sampler未标记为错误
  • 错误52916 - 如果存在空的用户定义变量,则为 JDBC异常
  • 错误52937 - Webservice采样器:测试结束时清除Soap文档缓存
  • 错误53027 - 在使用HTTP Cookie Mngr或HTTP请求默认值的测试计划中使用SMTP Sample时,Jmeter开始抛出异常
  • 错误53072 - JDBC PREPARED SELECT语句应该返回非准备SELECT等变量的结果

控制器

  • 错误52968 - 选项启动线程组中的下一个循环在发生错误时不会将父事务处理采样器标记为错误
  • 错误50898 - IncludeController:NullPointerException如果Includers使用相同的元素名称,则在非GUI模式下加载脚本

听众

  • 错误43450 - 监听器/保存器假设SampleResult计数始终为1; 已修复生成摘要结果

断言

功能

国际化

一般

  • 错误52639 - 如果未激活日志,则应隐藏日志面板的JSplitPane分隔符
  • 错误52672 - 更改控制器操作将删除除一个子采样器外的所有子进程
  • 错误52694 - 与非AWT线程更新GUI相关的GUI中的死锁
  • 错误52678 - 代理:在替换UserDefinedVariables时,不应替换部分值
  • 错误52728 - CSV数据集配置元素不能与同一线程计划中的BSF采样器共存
  • 错误52762 - 多重证书问题:在重新启动索引之前不使用第一个索引
  • 错误52741 - TestBeanGUI默认值在第二次或以后不起作用
  • 错误52783 - 由于早期init,从未使用过oro.patterncache.size属性
  • 错误52789 - 如果值为null,则使用Regexp匹配的代理可能会在值替换中失败并显示NullPointerException
  • 错误52645 - 使用代理记录导致OutOfMemory
  • 错误52679 - 用户参数列缩小
  • 错误52843 - 未为子样本累积样本headerSize和bodySize
  • 错误52967 - 在GUI模式下与远程服务器一起运行时,函数__P()无法使用默认值。
  • 错误50799 - 在http测试计划中使用非HTTP采样器可防止多个标头管理器工作
  • 错误52997 - 如果在退出失败之前保存,Jmeter不应在不保存测试计划的情况下退出
  • 错误53136 - 捕捉Throwable需要小心处理

改进

HTTP采样器

其他采样器

  • 错误52775 - JMS发布者:添加非持久传递选项
  • 错误52810 - 启用通过JMS Publisher采样器设置JMS属性
  • 错误52938 - Webservice Sampler:添加一个jmeter属性soap.document_cache来控制文档缓存的大小
  • 错误52939 - Webservice Sampler:使MaintainSession可配置
  • 错误53073 - 允许将JDBC CALLABLE的OUT结果分配给JMeter变量
  • 错误53164 - 新系统采样器
  • 错误53172 - OS Process Sampler - 允许指定环境变量
  • 错误52936 - JMS Publisher:支持发送JMS对象消息

控制器

听众

  • 错误52603 - MailerVisualizer:启用SSL,TLS和身份验证
  • 错误52698 - 删除图表完整结果监听器
  • 错误53070 - 将聚合图更改为聚集条形图,添加更多列(中位数,90%行,最小值,最大值)和选项,修复了一些错误
  • 错误53246 - Mailer Visualizer:改进GUI设计和I18N

定时器,断言,配置,预处理器和后处理器

功能

国际化

  • Mailer Visualizer已经国际化。法语翻译补充说。(见 Bug 53246

一般

  • 错误45839 - 测试操作:允许过早退出循环
  • 错误52614 - MailerModel.sendMail有奇怪的方法来计算调试设置
  • 错误52782 - 在参数表上添加一个详细信息按钮以显示行的详细信息
  • 错误52674 - 代理:添加一个Sampler Creator,允许使用可能非文本的POST Body(AMF,Silverlight,...)插入基于HTTP的采样器,并为其他人自定义它们
  • 错误52934 - GUI:打开测试计划,树扩展到测试计划级别,不再进一步选择树的根
  • 错误52941 - 由JMeter Ant任务额外生成的HTML报告设计的改进
  • 错误53042 - 在Sampler接口中引入一个新方法,以允许Sampler决定配置元素是否适用于Sampler
  • 错误52771 - 文档:在JMeter主页上添加了RSS源“订阅新内容”链接
  • 错误42784 - 显示GUI中记录的错误数
  • 错误53256 - 使全部清除命令清除LogViewer内容
  • 错误53261 - 单击警告指示器时, 错误42784打开日志查看器面板中添加“错误/致命”计数器

非功能性变化

  • 升级到rhino 1.7R3(是js-1.7R2.jar)。注意:jar的Maven坐标从rhino:js更改为org.mozilla:rhino。这不会直接影响JMeter,但如果在Maven项目中使用JMeter,并且其他代码依赖于早期版本的Rhino Javascript jar,则可能会导致问题。
  • 错误52675 - Refactor Proxy和HttpRequestHdr允许通过代理创建采样器
  • 错误52680 - 提及引入功能的版本
  • 错误52788 - HttpRequestHdr:优化代码以避免无用的工作
  • JMeter Ant(ant-jmeter-1.1.1.jar)任务从1.0.9升级到1.1.1
  • 更新为commons-io 2.2(来自2.1)
  • 错误53129 - 将XStream从1.3.1升级到1.4.2
  • 更新为httpcomponents-client 4.1.3(来自4.1.2)
  • 更新了JMeter分布式测试指南(jmeter_distributed_testing_step_by_step.pdf)。将源格式更改为OpenOffice odt(来自sxw)

版本2.6

新的和值得注意的

工具栏

JMeter主窗口上的新工具栏

 

JMeter启动测试按钮

新的菜单选项和按钮允许启动测试,忽略暂停计时器

 

JMeter GUI外观和感觉

允许从选项菜单设置系统或CrossPlatform LAF

 

JMeter GUI - 重复节点

在上下文菜单中添加“重复节点”

 

JMeter树视图 - 搜索工具

在采样器树视图中按关键字搜索的功能

 

HTTP请求 - 原始请求窗格

改进HTTP请求GUI以更好地显示没有名称的参数(例如GWT RPC请求或SOAP请求)

 

HTTP请求 - 其他更改

 

  • 允许在参数面板中进行多项选择
  • 允许从剪贴板添加(粘贴)条目到参数列表
  • 能够在HTTP请求中上下移动变量

 

HTTP请求 - 文件协议

更好地支持HTTP采样器中的文件:协议

 

使用file:protocol检索嵌入的资源

 

HTTP请求 - 忽略嵌入式资源失败

为嵌入资源启用“忽略失败”

 

嵌入式资源的父成功失败

 

查看表格中的结果 - 子样本显示

向TableVisualiser添加选项以显示子样本而不是父样本

 

密钥库 - 多个证书

允许多个证书(JKS)

 

聚合图改进

Aggregate Graph Listener的一些改进:

  • 用于设置的新GUI
  • 动态图形大小
  • 允许更改标题图和图例的字体
  • 允许更改条形颜色(背景和文本值)
  • 允许绘制或不绘制轮廓
  • 允许通过正则表达式过滤器仅选择一些采样器
  • 允许定义Y轴最大刻度

 

聚合图形栏

 

反新的重置选项

在每个线程组迭代上添加一个重置计数器的选项

 

功能

 

  • 添加一个新函数__RandomString以生成随机字符串
  • 添加一个新函数__TestPlanName,返回当前“测试计划”的名称
  • 添加一个新函数__machineIP返回IP地址
  • 添加新函数__jexl2以支持Jexl2

 

用户定义的变量改进

 

  • 在“用户定义的变量”中添加注释字段
  • 允许从剪贴板添加(粘贴)条目到参数列表
  • 能够在用户定义的变量中上移或下移变量

 

查看结果树

在“查看结果树”中,如果结果很大,则不显示消息,而是显示配置的结果

 

控制器 - 更改元素

添加更改控制器元素的功能

 

JDBC前后处理器

添加JDBC前后处理器

 

JDBC事务隔离选项

允许在JDBC连接配置中设置事务隔离

 

泊松定时器

添加基于泊松的计时器

 

GUI和OS交互

支持文件拖放。

 

确认删除对话框

添加一个对话框以确认在调用Remove action时删除元素

通过设置JMeter属性confirm.delete.skip = true可以跳过对话框

 

远程批处理支持

在分布式测试期间使用外部存储来保存样本,添加DiskStore远程样本发送器:如Hold,但将样本保存到磁盘直到测试结束

 

JMS订户采样器

使用JMS订阅服务器,可以使用选择器

 

新的记录器面板

新的日志查看器已添加到GUI,可以从菜单选项→日志查看器启用:

 

此日志查看器显示jmeter.log文件,并且有用(例如)调试BeanShell / BSF脚本:

 

菜单项选项/选择语言现在功能齐全

菜单项选项/选择语言现在将所有显示的文本更改为新语言,前提是所有消息都已翻译。您可以通过翻译成您的语言来提供帮助。

恢复了旧版JMX和JTL Avalon格式支持

在JMeter 2.4版中删除了对读取/写入JMX(脚本)和JTL(样本结果)文件的原始Avalon XML格式的支持。JMeter现在可以再次读取Avalon格式文件,但是不支持以旧格式保存文件。

JMeter罐子可从Maven存储库获得

JMeter罐子现在可从Maven存储库获得。

已知的错误

Include Controller在非GUI模式下存在一些问题(参见Bugs 40671,41286,44973,50898)。特别是,如果有两个包含相同名称的控制器,则可能导致NullPointerException。

Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。

当If Controller的条件在第一次迭代时总是为假时,监听器不会显示迭代计数(参见 错误52496)。解决方法是在If Controller的同一级别(或更高级别)添加一个采样器。例如,具有0等待时间的测试操作采样器(不生成样本),或者将所有字段设置为False的调试采样器(以减小样本大小)。

不兼容的变化

自2.1以来的JMeter版本在加载嵌入式资源时无法创建容器样本。这已得到纠正; 仍然可以通过设置以下属性恢复到Bug 51939行为: httpsampler.separate.container = false

镜像服务器现在使用默认端口8081,在2.5.1之前是8080。

自从2.6发生以来,TCP Sampler处理SocketTimeoutException,SocketException和InterruptedIOException的方式不同,Sampler被标记为失败。

现在,样本发件人实现解决了自2.6以来客户端的配置问题。可以使用属性sample_sender_client_configured(将其设置为false)更改此行为。

已删除HTTP用户参数修饰符测试元素; 它已经被弃用了很长时间。

Bug修复

HTTP采样器和代理

  • 错误51932 - 在max-age之后,CacheManager不处理具有任何属性的缓存控制头
  • 错误51918 - 当允许多个连接时,GZIP压缩流量会产生错误
  • 错误51939 - 在检索嵌入资源时,如果需要,应生成新的父样本
  • 错误51942 - 使用并发下载时CacheManager上的同步问题
  • 错误51957 - 如果任务未完成,并发get可能会挂起
  • 错误51925 - 调用Stop on Test会在并发下载资源时泄漏执行程序线程
  • 错误51980 - HtmlParserHTMLParser重复计算链接中使用的图像
  • 错误52064 - CacheManager中的OutOfMemory风险
  • 错误51919 - 使用并发下载时CookieManager中的 Random ConcurrentModificationException或NoSuchElementException#removeMatchingCookies
  • 错误52126 - HttpClient4不会在迭代之间清除cookie
  • 错误52129 - 使用HTTP Client 4和Keep Alive连接时报告的正文大小错误
  • 错误52137 - HTTP缓存管理器的问题
  • 错误52221 - 使用Nullpointer异常检索没有HTTP缓存管理器的嵌入式资源
  • 错误 52310 - 如果启用了“并发池大小”,则IPSource中的变量将失败HTTP请求
  • 错误52371 - API不兼容 - HTTPSampler2中的方法现在需要PostMethod而不是HttpMethod [Base]。恢复原始类型。
  • 错误49950 - 使用代理服务器录制时代理:IndexOutOfBoundsException
  • 错误52409 - HttpSamplerBase#errorResult修改作为参数传递的sampleResult; 修复假定创建新实例的代码(即添加子样本时)
  • 错误52507 - 删除Http用户参数修饰符(不建议使用,已废弃)

其他采样器

  • 错误51996 - 当多个线程同时进入InitialContextFactory#lookupContext时,新创建的JMS初始上下文泄漏
  • 错误51691 - 授权不适用于JMS Publisher和JMS订阅服务器
  • 错误52036 - 由于缺少clientId字段,持久订阅因ActiveMQ而失败
  • 错误52044 - 与许多线程一起使用的JMS订阅者导致javax.naming.NamingException:已经与ActiveMQ绑定的东西
  • 错误52072 - LengthPrefixedBinaryTcpClientImpl可能会过早地结束样本
  • 错误52390 - AbstractJDBCTestElement:perConnCache中的内存泄漏和同步问题

控制器

  • 错误51865 - 如果设置“设置错误后启动下一个循环”选项,则线程组内的无限循环无法正常工作
  • 错误51868 - jmeter.log中的许多异常,同时为线程使用选项“Start next loop”
  • 错误51866 - 如果为线程组设置了“为错误启动下一个循环”选项,则循环计数器无法正常工作
  • 错误52296 - TransactionController + Children ThrouputController或InterleaveController导致ERROR sampleEnd调用两次java.lang.Throwable:当TPC不运行样本时无效的调用序列
  • 错误52330 - 在下一循环中未执行错误样本后出现下一循环错误

听众

  • 错误52357 - 在表中查看结果不允许多个结果样本
  • 错误52491 - 在Tree Listener / Http Request视图中解析Post数据参数的错误

断言

  • 错误52519 - XMLSchemaAssertion使用JMeter JVM file.encoding而不是响应编码

功能

  • char函数的CRLF示例是错误的; CRLF =(0xD,0xA),不是(0xC,0xA)

国际化

一般

  • 错误51937 - JMeter没有很好地处理丢失的TestPlan条目
  • 错误51988 - 当变量字段为空时,CSV数据集配置不解析标头解析的默认分隔符
  • 错误52003 - 查看结果树“自动滚动”在展开节点时无法正确滚动
  • 错误27112 - 用户参数应使用滚动条
  • 错误52029 - 命令行关闭仅发送到已启动的最后一个引擎
  • 错误52093 - 工具栏工具提示不切换语言
  • 错误51733 - 如果您中断测试计划,则SyncTimer会搞砸
  • 错误52118 - 新工具栏:未运行测试时未禁用关闭和停止按钮
  • 错误52125 - 如果在其中一个TreeMap中有更多样本具有相同的响应时间,则StatCalculator.addAll(StatCalculator calc)加入不正确
  • 错误52339 - 分布式测试中的JMeter统计模式显示错误的响应时间
  • 错误52215 - 在StatGisualizer,SummaryReport,Summariser中混淆同步并在StatGraphVisualizer中发出问题
  • 错误52216 - TableVisualizer:currentData字段严重同步
  • 错误52217 - ViewResultsFullVisualizer:root和treeModel上的同步问题
  • 错误43294 - XPath Extractor命名空间问题
  • 错误52224 - TestBeanHelper不支持NOT_UNDEFINED == Boolean.FALSE
  • 错误52279 - 切换到另一种语言丢失树中的图标并记录错误无法从...获取GUI类
  • 错误52280 - 菜单项选项/选择语言不会将所有显示的文本更改为新语言
  • 错误 52376 - StatCalculator#addValue(T val,int sampleCount)应该使用long,而不是int
  • 错误49374 - 嵌入元素URL的编码取决于file.encoding属性
  • 错误52399 - URLRewritingModifier使用默认的file.encoding来匹配文本内容
  • 错误50438 - 代码使用整数数学计算平均值,期望双值
  • 错误52469 - 支持用于远程测试的RMI流量的SSH隧道的更改
  • 错误52466 - 升级测试计划功能:NameUpdater不升级属性
  • 错误52503 - 统一文件→关闭和窗口关闭文件保存行为
  • 错误52537 - 首次加载文件时,帮助不会滚动到正确的锚点

改进

HTTP采样器

其他采样器

  • 错误51419 - JMS订阅者:使用选择器的能力
  • 错误52088 - JMS采样器:选择REQUEST / RESPONSE时添加选择器
  • 错误52104 - TCP采样器处理严重错误
  • 错误52087 - TCPClient接口不允许部分读取
  • 错误52115 - 找不到要发送的文件时,SOAP / XML-RPC不应发送POST请求
  • 错误40750 - TCPSampler:远程主机关闭套接字时的行为
  • 错误52396 - “重用连接模式”中的TCP采样器重用以前的采样器连接,即使它配置了其他主机,端口,用户或密码
  • 错误52048 - BSFSampler,BSFPreProcessor和BSFPostProcessor应共享相同的GUI

控制器

听众

  • 错误52022 - 在查看结果树中,如果结果很大,则不显示消息,显示尽可能多的结果
  • 错误52201 - 向TableVisualiser添加选项以显示子样本而不是父样本
  • 错误52214 - 保存对文件的响应 - 改进命名算法
  • 错误52340 - 允许在运行时更改远程采样模式
  • 错误52452 - 聚合图形侦听器的改进(GUI和设置)
  • 复活OldSaveService以允许读取Avalon格式的JTL(结果)文件

定时器,断言,配置,预处理器和后处理器

功能

  • 错误52006 - 创建函数RandomString以生成随机字符串
  • 错误52016 - 支持Jexl2会很有用
  • __char()函数现在支持八进制值
  • 新函数__machineIP返回IP地址
  • 错误51091 - 返回当前“测试计划”名称的新函数

国际化

一般

  • 错误51892 - 默认镜像端口应与默认代理端口不同
  • 错误51817 - 在“用户定义的变量”控件中上下移动变量
  • 错误51876 - 在采样器TreeView中搜索的功能
  • 错误52019 - 添加菜单选项以启动测试忽略暂停计时器
  • 错误52027 - 允许从选项菜单设置系统或CrossPlatform LAF
  • 错误52037 - 记住用户设置的LaF重启。
  • 错误51861 - 改进HTTP请求GUI以更好地显示没有名称的参数(例如GWT RPC请求)(UNDER DEVELOPMENT)
  • 错误52040 - 在JMeter主窗口中添加工具栏
  • 错误51816 - 用户定义变量控件中的注释字段。
  • 错误52052 - 使用分隔符分隔JMS订阅服务器的结果消息
  • 错误52103 - 向表格可视化工具添加自动滚动选项
  • 错误52097 - 另存为应指向使用MRU列表时用于打开文件的同一文件夹
  • 错误52085 - 允许在参数面板中进行多项选择
  • 错误52099 - 允许在JDBC连接配置中设置事务隔离
  • 错误52116 - 允许将剪贴板中的条目添加(粘贴)到参数列表中
  • 错误52160 - 不显示标记为隐藏的TestBeanGui项
  • 错误51886 - 部分在客户端和部分服务器上解析了部分SampleSender配置
  • 错误52161 - 除了upgrade.properties之外,还允许插件添加自己的转换规则。加载META-INF / resources / org.apache.jmeter.nameupdater.properties文件中的任何其他属性
  • 错误42538 - 在上下文菜单中添加“重复节点”
  • 错误46921 - 添加更改控制器元素的功能
  • 错误 52240 - TestBeans应支持Boolean,Integer和Long
  • 错误52241 - GenericTestBeanCustomizer假定默认值为空字符串
  • 错误52242 - FileEditor不允许将输出保存在文件中
  • 错误51093 - 加载先前由“选择另存为”存储的选择时,在蓝色窗口栏中显示文件名
  • 错误50086 - JMS Publisher,JMS订户,邮件阅读器采样器,SMTP采样器和数据库配置中未隐藏的密码字段
  • 错误29352 - 在分布式测试期间使用外部存储来保存样本,添加DiskStore远程样本发送器:如Hold,但将样本保存到磁盘直到测试结束。
  • 错误52333 - 减少计算SampleResult #nanoTimeOffset的开销
  • 错误52346 - Shutdown检测是否存在任何阻止JVM退出的非守护程序线程。
  • 错误52281 - 支持文件拖放
  • 错误52471 - 通过使用线程池提高镜像服务器性能,而不是为每个请求启动线程
  • 复活OldSaveService以允许读取Avalon格式的JMX文件(在2.4中删除)
  • 添加一个对话框以确认在调用Remove action时删除元素
  • 错误41788 - 日志查看器(控制台窗口)作为选项需要
  • 添加选项以更改守护程序线程中的暂停时间(默认为2000毫秒),该线程检查JVM是否成功退出。除非暂停时间大于0,否则线程现在不会启动。

非功能性变化

  • 修复build.xml:支持脚本; 本地化可重用的属性名称
  • 错误51923 - 计数器功能错误或文档问题?(固定文档)
  • 将velocity.jar更新为1.7(从1.6.2开始)
  • 将js.jar更新为1.7R3(从1.6R5开始)
  • 更新commons-codec1.5⇒1.6
  • 更新commons-io2.0.1⇒2.1
  • 更新commons-jexl2.0.1⇒2.1.1
  • 更新jdom1.1⇒1.1.2
  • 更新junit4.9⇒4.10
  • 错误51954 - 生成的文档包括</ br>条目,这些条目会导致额外的空白行
  • 错误52075 - JMeterProperty.clone()当前返回Object; 它应该返回JMeterProperty
  • 将httpcore更新为4.1.4
  • 错误49753 - 请在Maven中央存储库上发布jMeter工件

版本2.5.1

主要变化摘要

  • HttpClient4采样器现在可以正确地重新使用连接(以前它会使用每个样本一个,这可能很快导致资源耗尽)。
  • 对JMS采样器的各种修复
  • 与Configuration元素一起使用时,不再伪造函数
  • WebService采样器GUI已经过重新组织,以实现更好的设计和更高的用户友好性。WSDL配置助手的一些改进
  • 更好地处理测试关闭。System.exit现在只在没有其他选项时调用; 即使这可以被禁用。

已知的错误

Include Controller在非GUI模式下存在一些问题。特别是,如果有两个包含相同名称的控制器,则可能导致NullPointerException。

Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。

如果条件在第一次迭代中始终为假,则If Controller可能会导致无限循环。解决方法是在If Controller的同一级别(或更高级别)添加一个采样器。例如,具有0等待时间的测试操作采样器(不生成样本),或者将所有字段设置为False的调试采样器(以减小样本大小)。

菜单项选项/选择语言不会将所有显示的文本更改为新语言。[行为已改进,但语言更改仍未完全正常工作]要完全覆盖默认本地语言,请在启动JMeter之前设置JMeter属性“language”。

不兼容的变化

HttpClient4和Commons HttpClient 3.1采样器之前使用的重试次数为3.这已经更改为默认值为1,以与Java实现兼容。可以通过设置相关的JMeter属性来覆盖重试计数,例如:

httpclient4.retrycount = 3
httpclient3.retrycount = 3

 

Bug修复

HTTP采样器和代理

  • 修复HttpClient 4采样器,以便尽可能重用HttpClient实例和连接。
  • 临时修复HC4采样器以绕过HTTPCLIENT-1120。
  • 错误51863 - 与HttpClient 4实现的大量ESTABLISHED连接(vs HttpClient 3.1 impl)
  • 错误51750 - 检索所有嵌入的资源不遵循IFRAME
  • 错误51752 - 使用“检索所有嵌入资源”和并发池时,HTTP缓存已中断
  • 错误39219 - HTTP服务器:文件→打开后无法停止
  • 错误51775 - 通过HttpClient(3.1和4.x)捕获时,Host头中的端口号重复
  • 错误50617 - 监控结果图例显示“死”服务器,尽管检索了服务器的值

其他采样器

  • 错误50424 - Web方法下拉列表框不一致
  • 错误43293 - 创建新采样器时未清除Java请求字段
  • 错误51830 - 当Webservice WSDL URL关闭时,Webservice Soap Request会触发太多弹出窗口
  • WebService(SOAP)请求 - 添加连接超时以获取用于在服务器未响应时填充Web方法的wsdl
  • 错误51841 - JMS:如果ReceiveSubscriber构造函数或Publisher中发生错误,则Connections将保持打开状态
  • 错误51691 - 授权不适用于JMS Publisher和JMS订阅服务器
  • 错误51840 - JMS:InitialContext的缓存有一些问题
  • 错误47888 - JUnit Sampler重用测试对象

控制器

  • 如果控制器 - 修复了 Bug 50032引入的两个回归(参见 Bug 50618
  • 如果Controller - 当条件总是返回false时捕获StackOverflowError(在至少一次返回true之后返回true)参见Bug 50618
  • 错误51869 - 使用包含控制器时出现NullPointer异常

听众

断言

功能

  • 错误48943 - 与Config元素组合使用时,会多次调用函数

国际化

  • WebService(SOAP)请求 - 为某些标签添加I18N

一般

  • 错误51831 - 无法禁用UDP服务器或更改最大UDP端口
  • 错误51821 - 为测试计划中的启用/禁用(子)树或分支添加快捷方式。
  • 错误47921 - JMeterThread退出后未为GC发布的变量。
  • 错误51839 - “...运行结束”过早打印
  • 错误51847 - 某些JUnit测试是区域设置敏感的,如果Locale与US不同,则会失败
  • 错误51855 - 父样本的经过时间可能略微不准确
  • 错误51880 - 如果在所有线程启动之前调用它,则shutdown命令不起作用
  • 未启用远程关闭主机菜单项。
  • 错误51888 - 停止测试计划时偶尔出现死锁

改进

HTTP采样器

  • 错误51380 - 控制从迭代到迭代的缓存SSL上下文的重用
  • 错误51882 - HTTPHC3Client使用默认重试次数3,使其可配置; 默认现在是1
  • 将默认的HttpClient 4采样器重​​试计数更改为1

其他采样器

  • Beanshell Sampler现在支持可中断接口
  • 错误51605 - WebService(SOAP)请求 - 在请求中选择值时,对所有请求秘密更改WebMethod字段值
  • WebService(SOAP)请求 - 重新组织的GUI,以实现更好的设计和更高的用户友好性

控制器

听众

  • 错误42246 - “查看结果树”和“断言结果”中需要“自动滚动”选项
  • 查看结果树:Regexp Tester - 用户界面的改进很少

定时器,断言,配置,预处理器和后处理器

  • 错误51885 - 允许JMeter变量作为XPathExtractor的输入

功能

国际化

一般

  • 错误51822 - (第1部分)保存1个GuiPackage#getCurrentGui调用
  • 添加了AsynchSampleSender,它可以异步地将样本从服务器发送到客户端。
  • 升级到htmlparser 2.1; JavaMail 1.4.4; JUnit 4.9

非功能性变化

  • 错误49976 - FormCharSetFinder可见性是默认值而不是公共值。
  • 错误50917 - 从测试计划设置时,属性CookieManager.save.cookies不受尊重
  • 检测到Javascript错误时改进错误日志记录。
  • 更新了文档页脚

版本2.5

主要变化摘要

  • 现在可以在运行时选择HTTP实现,JMeter现在也支持Apache HttpComponents HttpClient 4.x. 请注意,Commons HttpClient 3.1不再开发,并且可能会在将来的版本中从JMeter中删除支持。
  • HTTP采样器现在允许在HTML页面中并行下载嵌入式资源
  • HTTP Sampler现在可以在解压缩之前报告请求的大小。
  • JMS和Mail采样器已得到改进。
  • 新的测试片段测试元素使包含控制器变得更容易
  • View Results Tree Listener有各种改进
  • 错误30563 - 线程组应该在Sample Error上有一个start next循环选项
  • 有两种新的线程组类型--setUp和tearDown - 它们在主线程组之前和之后运行。
  • 客户端 - 服务器模式现在支持通过UDP进行外部停止/关闭
    多个JMeter服务器实例可以在同一主机上启动,而无需更改端口属性。
  • 错误50516 - HTTP标头管理器中的“主机”标头未包含在生成的HTTP请求中

 

 

已知的错误

Include Controller在非GUI模式下存在一些问题。特别是,如果有两个包含相同名称的控制器,则可能导致NullPointerException。

Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。

菜单项选项/选择语言不会将所有显示的文本更改为新语言。[行为已改进,但语言更改仍未完全正常工作]要完全覆盖默认本地语言,请在启动JMeter之前设置JMeter属性“language”。

不兼容的变化

Commons HttpClient采样器不再将不支持的方法转换为GET。

删除方法public static long currentTimeInMs()。这已被实例方法public long currentTimeInMillis()取代。

ProxyControl.getSamplerTypeName()现在返回一个String而不是一个int。这是JMeter代理及其GUI的工作内部,因此不应影响任何用户代码。

Bug修复

HTTP采样器和代理

  • 错误50178 - 作为Thread Group的子节点添加的HeaderManager可以创建连接的HeaderManager名称和OutOfMemoryException
  • 错误50392 - 在Multipart中发送请求时修剪值
  • 错误50686 - 合并实例时HeaderManager日志记录过于冗长
  • 错误50963 - AjpSampler抛出java.lang.StringIndexOutOfBoundsException
  • 错误50516 - HTTP标头管理器中的“主机”标头未包含在生成的HTTP请求中
  • 错误50544 - 在Apache Common Log中,HEAD请求导致问题。
  • 错误51268 - 通过无效代理的HTTPS请求导致NullPointerException,并且不在结果树中显示。不要将“意外”故障委托给JMeter线程处理程序,而是确保所有异常都会生成示例错误。
  • 错误51275 - Cookie Panel clearGui()在Java 1.6中设置了错误的默认策略

其他采样器

  • 错误50173 - JDBCSampler从PreparedStatement中丢弃ResultSet
  • 确保JSR223 Sampler可以访问当前的SampleResult
  • 错误50977 - 无法为单个样本设置TCP采样器

控制器

  • 错误50032 - 当线程组有多个循环时,Last_Sample_Ok以及其他控制器无法正常工作
  • 错误50080 - 事务控制器错误地创建样本,包括计时器
  • 错误50134 - TransactionController:报告包含其他TransactionControllers时的错误响应时间

听众

  • 错误50367 - 在视图结果树中清除/清除全部不清除所选元素

断言

功能

  • 错误50568 - 函数__FileToString():当编码选项为空/空时无法读取文件

国际化

一般

  • 错误49734 - 停止线程命令上的空指针异常(运行→停止)
  • 错误49666 - CSV标题在EOF后读取为数据
  • 错误45703 - 同步计时器
  • 错误 50088 - 修复SamplingStatCalculator中的getAvgPageBytes,以便它返回它应该的内容
  • 错误50203无法设置属性“jmeter.save.saveservice.default_delimiter = \ t”
  • mirror-server.sh - 修复要使用的类路径:separator(not;)
  • 错误50286 - URL重写修饰符:在XML标记之间提取的jsessionid值不正确
  • System.nanoTime()往往相对于System.currentTimeMillis()漂移。每次更改SampleResult以重新计算偏移量。还可以仅恢复使用System.currentTimeMillis()。
  • 错误50425 - 从Controller添加菜单中删除线程组
  • 错误50675 - CVS数据集配置与远程启动固定RMI启动不兼容,以提供相对于user.dir的JMX文件的位置。
  • 错误50221 - 重命名树中的元素不会调整标签大小
  • 错误51002 - 如果CSV文件不可用,则停止线程。JMeter现在将IOError视为EOF。
  • 默认情况下定义sun.net.http.allowRestrictedHeaders = true。这修复了 Bug 51238
  • 错误51645 - 当file.encoding为UTF-8时,CSVDataSet不读取UTF-8文件

改进

HTTP采样器

  • AJP Sampler现在实现了Interruptible
  • 允许在运行时选择HTTP实现
  • 错误50684 - 可选择在多部分POST中禁用Content-Type和Transfer-Encoding
  • 错误50943 - 允许在html页面中同时下载嵌入式资源
  • 错误50170 - http sampler报告的字节是在GUnZip之后
    添加可选属性以允许更改方法以获取响应大小
  • 在HTTP Sampler上隐藏代理密码(仅在GUI上,而不是在JMX文件中)

其他采样器

  • 错误49622 - 允许发送没有主题的邮件(SMTP Sampler)
  • 错误49603 - 允许在Mail Reader Sampler上接受过期的证书
  • 错误49775 - 允许在没有正文的情况下发送消息
  • 错误49862 - 改进SMTPSampler请求输出。
  • 错误50268 - 向JMS Publisher添加静态和动态目标
  • JMS订阅者 - 添加动态目标
  • 错误50666 - JMSSubscriber:支持持久订阅
  • 错误50937 - TCP Sampler未提供/ honor连接超时
  • 错误50569 - Jdbc Request Sampler可选择存储结果集对象数据
  • 错误51011 - Mail Reader:在身份验证失败时,告诉您尝试了什么

控制器

  • 错误50475 - 引入测试片段测试元素以获得更好的包含流程

听众

  • 查看结果树 - 在“采样器结果选项卡→已解析”上添加对话框的文本框,以双击单元格显示长值
  • 错误37156 - 结果树中请求的格式化视图
  • 错误49365 - 允许将结果集写入相对于加载脚本的路径中的文件
  • 错误50579 - 错误计数很长,样本计数为int。将样本计数更改为long。
  • 查看结果树 - 添加新的大小字段:响应头和响应正文(以字节为单位) - 派生自 Bug 43363

定时器,断言,配置,预处理器和后处理器

  • 错误48015 - 为预处理器,后处理器和断言元素提出新图标
  • 错误50962 - SizeAssertionGui验证阻止使用大小的变量
  • 大小断言 - 添加响应大小范围(完整,标题,正文,代码,消息) - 源自 Bug 43363

功能

  • 错误49975 - 返回当前采样器名称的新函数

国际化

  • 为新标签添加法语翻译,并减少HTTP Sample上某些标签的大小(缩写)

一般

  • 错误30563 - 线程组应该在Sample Error上有一个start next循环选项
  • 错误50347 - Eclipse安装说明应提醒用户下载相关的jar
  • 错误50490 - 设置和后线程组增强功能,以获得更好的测试流程。
  • 现在,所有BeanShell测试元素都定义了脚本变量“prev”和“Label”。
  • 错误50708 - NewDriver中的 Classpath jar顺序不是按字母顺序排列的
  • 错误50659 - JMeter服务器不支持并发测试 - 阻止客户端启动另一个测试
  • 添加了远程关机功能
  • 客户端JMeter引擎现在支持通过UDP进行外部停止/关闭
  • UDP关闭现在可以使用一系列端口,从jmeterengine.nongui.port = 4445到jmeterengine.nongui.maxport = 4455,允许同一主机上的多个JMeter实例,而无需更改端口属性。
  • 更新为httpcore 4.1.3和httpclient 4.1.2

非功能性变化

  • 错误50008 - 允许BatchSampleSender进行子类化
  • 错误50450 - 在jacobi解算器中使用System.array副本,因为它是本机的,性能更高。
  • 错误50487 - runSerialTest验证永远不需要持久化的对象
  • 使用Thread.setDefaultUncaughtExceptionHandler()而不是私有ThreadGroup
  • 更新到Commons Net 3.0

版本2.4

主要变化摘要

 

  • JMeter现在至少需要Java 1.5。
  • HTTP代理现在可以记录HTTPS会话。
  • JUnit采样器现在支持JUnit4注释。
  • 添加了JSR223(javax.script)测试元素。
  • MailReader Sampler现在可以使用底层实现支持的任何协议。
  • 已添加SMTP采样器。
  • JMeter现在允许用户提供自己的线程组实现。
  • 查看结果树现在支持更多显示选项,包括搜索和正则表达式测试。
  • StatCalculator的性能大大提高; 聚合报告等需要更少的内存。
  • JMS采样器已经过广泛的重新设计,不应再丢失消息。相关处理得到改进。JMS Publisher和Subscriber现在支持主题和队列。
  • 已经进行了许多其他改进,请参见下文和手册。

 

已知的错误

Include Controller在非GUI模式下存在一些问题。特别是,如果有两个包含相同名称的控制器,则可能导致NullPointerException。

Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。

菜单项选项/选择语言不会将所有显示的文本更改为新语言。[行为已改进,但语言更改仍未完全正常工作]要完全覆盖默认本地语言,请在启动JMeter之前设置JMeter属性“language”。

不兼容的变化

HTTP重定向现在默认为“关注重定向”而不是“自动重定向”。这是为了使JMeter能够跟踪重定向期间可能发送的cookie。这不会影响现有的测试计划; 它只影响新HTTP采样器的默认值。

不再支持JMX和JTL文件的Avalon文件格式。任何此类文件都需要通过在JMeter 2.3.4中读取并重新保存来转换。

默认情况下,XPath Assertion和XPath Extractor元素不再获取外部DTD; 这可以在GUI中更改。

JMSConfigGui已重命名为JMSSamplerGui。这不会影响现有的测试计划。

构造函数public SampleResult(SampleResult res)已更改为真正的“复制构造函数”。它不再调用addSubResult()。这可能会影响一些3 党加载项。

Bug修复

HTTP采样器和代理

  • 错误47445 - 使用具有https欺骗安全cookie的代理需要不安全
  • 错误47442 - 使用https-spoofing在某些条件下缺少用http替换https
  • 错误 48451 - 错误:在else分支中的SoapSampler.setPostHeaders(PostMethod post)
  • 错误48542 - SoapSampler使用错误的响应头字段来确定响应是否是gzip编码的
  • 错误48568 - 为AjpSampler打破了CookieManager
  • 错误48570 - AjpSampler不支持查询参数(GET / POST)
  • 错误46901 - HTTP Sampler不在第一个文件参数中正确处理var / func引用
  • 错误43678 - 处理META标签http-equiv charset?
  • 错误49294 - 未从重定向页面下载图像
  • 错误49560 - 重定向后出现错误的“字节大小”

其他采样器

  • 错误47420 - LDAP扩展请求未在添加请求期间关闭连接
  • 错误48573 - LDAPExtSampler目录上下文处理
  • 错误47870 - 由于NPE,JMSSubscriber失败
  • 错误47899 - JMS ReceiveSubscriber构造函数中的NullPointerExceptions
  • 错误48144 - JMS OnMessageSubscriber中的NPE
  • 错误47992 - JMS点对点请求 - 响应选项不起作用
  • 错误48579 - 单个绑定在访问LdapExt采样器时不显示配置信息
  • 错误49111 - JMS P2P采样器上出现“未找到ID的消息”错误。
  • 错误47949 - JMS订阅者永远不会收到所有消息
  • 错误46142 - JMS点对点关联问题
  • 错误48747 - TCP采样器吞下异常
  • 错误48709 - TCP采样器配置设置“classname”无效

控制器

  • 错误47385 - TransactionController应设置AllThreads和GroupThreads
  • 错误47940 - 模块控制器错误地创建替换子树
  • 错误47592 - 错误时连续运行“停止测试”的线程组,JMeter将不会标记为完成
  • 错误48786 - 连续运行线程组:出现错误或手动停止时“立即停止测试”,JMeter使绿色框保持活动状态
  • 错误48727 - 如果禁用所有线程组,则无法停止测试

听众

  • 错误48603 - Mailer Visualiser为一个失败的响应发送两封电子邮件
  • 正确计算聚合样本的min / max / std.dev(摘要报告)
  • 错误48889 - 模式错误的响应时间= Statistical和num_sample_threshold> 1
  • 错误47398 - SampleEvents在分布式测试和非gui模式下通过RMI发送两次

断言

功能

国际化

一般

  • 错误47646 - “随机变量”元素中的NullPointerException
  • 禁止将任何子元素添加到JDBC配置
  • BeanInfoSupport现在缓存getBeanDescriptor() - 在使用CSVDataSet(和其他一些TestBeans)时应该避免非Sun JVM上的NPE
  • 错误48350 - 与2个客户端分布式测试的死锁
  • 错误48901 - 通过添加同步计时器无休止地等待
  • 错误49149 - usermanual / index.html在“正则表达式”页面的链接中有拼写错误
  • 错误49394 - ActionRouter.postActionPerformed中的Classcast异常
  • 错误48136 - 源tarball中缺少必需的文件。
    源存档现在包含所有源文件,包括以前仅在二进制存档中提供的源文件。
  • 错误48331 - XpathExtractor不返回Nodeset的XML字符串表示形式

改进

HTTP采样器

  • 错误47622 - 启用HTTPS会话录制
  • 允许在HTTP Sampler GUI和HTTP Config GUI上指定代理服务器
  • 错误47461 - 更新缓存管理器以处理Expires HTTP标头
  • 错误48153 - 支持Cache-Control和Expires标头
  • 错误47946 - 代理应在事务控制器内启用分组
  • 错误48300 - 允许覆盖HTTP HttpClient请求的IP源地址
  • 错误49083 - 在重定向网址中折叠'/ pathsegment / ..'

其他采样器

  • JUnit采样器现在支持JUnit4测试(使用注释)
  • 错误47900 - 允许JMS SubscriberSampler中断
  • 添加了JSR223 Sampler
  • 错误47556 - JMS-PointToPoint-Sampler超时字段应使用字符串
  • 错误47947 - Mail Reader Sampler应允许覆盖端口
  • 错误48155 - 使用JMS协议类的多个问题/增强功能
  • 允许MailReader采样器使用任意协议
  • 错误45053 - JMeter的SMTP-Sampler
  • 错误49552 - 在SMTPSampler上添加邮件头
  • JMS Publisher和Subscriber现在支持主题和队列。向JMS订阅者添加了读取超时。一般清理JMS代码。

控制器

  • 错误47909 - TransactionController应该总结延迟
  • 错误41418 - 从报告中的事务控制器运行时中排除计时器持续时间
  • 错误48749 - 允许自定义线程组
  • 错误43389 - 允许相对于当前JMX文件找到包含文件

听众

  • 添加了DataStrippingSample发送器 - 支持“Stripped”和“StrippedBatch”模式。
  • 添加了比较断言可视化器
  • 错误47907 - 改进(增强和I18N)比较断言和比较Visualizer
  • 错误36726 - 向Tree View Listener添加搜索功能
  • 错误47869 - 能够清理SampleResult的字段
  • 错误47952 - 添加了JSR223监听器
  • 错误47474 - 查看结果树对插件渲染器的支持
  • 允许空闲时间保存到示例日志文件
  • 错误48259 - 使用TreeMap提高StatCalculator的性能
  • 使用SamplingStatCalculator的监听器大大减少了内存需求,因为Sample缓存已移至新的CachingStatCalculator类。特别是,聚合报告现在可以处理大量样本。
  • 聚合报告和摘要报告现在允许可选地排除列标题
  • 错误49506 - 在侦听器的“从文件读取”功能的打开对话框中添加.csv文件扩展名
  • 错误49545 - 结果树中样本结果的格式化(解析)视图

定时器,断言,配置,预处理器和后处理器

  • 错误47338 - XPath Extractor强制检索文档DTD
  • 添加了比较断言
  • 错误47952 - 添加了JSR223 PreProcessor和PostProcessor
  • 添加了JSR223 Assertion
  • 添加了BSF定时器和JSR223定时器
  • 错误48511 - 将父,子,所有选择添加到正则表达式提取器
  • 将Sampler范围选择添加到XPathExtractor
  • 正则表达式提取器,响应断言和大小断言现在可以应用于JMeter变量
  • 错误46790 - CSV数据集配置应该能够解析CSV标头

功能

国际化

一般

  • 错误47223 - 缓慢的汇总报告性能(StatCalculator)
  • 错误47980 - 主机名解析为127.0.0.1 - 指定IP不可能
  • 错误47943 - 在Start类中未使用DisabledComponentRemover
  • 用于运行时生成转储的HeapDumper类
  • 用于读取原始邮件文件的基本只读JavaMail提供程序实现
  • 错误49540 - 按字母顺序对“添加”菜单进行排序

非功能性变化

  • Beanshell,JavaMail和JMS API(Apache Geronimo)jar现在包含在二进制存档中。
  • 添加TestBean表编辑器支持
  • 从SVN中删除了所有外部库; 添加了download_jars Ant目标
  • 更新了各种jar文件:
    • BeanShell - 2.0b4⇒2.0b5
    • Commons Codec - 1.3⇒1.4
    • Commons-Collections - 3.2⇒3.2.1
    • JTidy⇒r938
    • JUnit - 3.8.2⇒4.8.1
    • Logkit - 1.2⇒2.0
    • Xalan Serializer = 2.7.1(之前错误地显示为2.9.1)
    • Xerces xml-apis = 1.3.04(以前错误地显示为2.9.1)
    • 一些jar文件被重命名。

版本2.3.4

主要变化摘要

这是一个小错误修复版本,主要用于纠正2.3.3中意外添加的一些错误。

已知的错误

Include Controller在非GUI模式下存在一些问题。特别是,如果有两个包含相同名称的控制器,则可能导致NullPointerException。

Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。

菜单项选项/选择语言不会将所有显示的文本更改为新语言。[行为已改进,但语言更改仍未完全正常工作]要完全覆盖默认本地语言,请在启动JMeter之前设置JMeter属性“language”。

Bug修复

HTTP采样器和代理

  • 错误47321 - HTTPSampler2响应超时未得到遵守

其他采样器

  • 错误47290 - 连接工厂查找(JMS)上的无限循环
  • JDBC Sampler不应关闭Prepared或Callable语句,因为这些语句是缓存的

控制器

  • 错误39509 - 仅运行一次的控制器运行两次

听众

  • 将ResultCollector更改为仅警告目录是否未创建
  • 修复ResultCollector和SampleResult中的一些同步问题(正在使用错误的锁)

国际化

  • 修复了2.3.3中引入的错误:如果默认语言环境没有messages.properties文件,则JMeter无法启动。

一般

  • 修复远程客户端的问题 - 2.3.3中引入的错误
  • 错误47377 - 使ClassFinder更健壮并关闭zipfile资源
  • 修复生成文档时的一些错误(当Velocity升级时2.3.3中显示的潜在错误)

改进

其他采样器

  • 错误47266 - FTP请求采样器:允许指定FTP端口,而不是默认端口

版本2.3.3

主要变化摘要

测试关闭的处理得到了很大改善。逐渐“关闭”命令现在等待直到所有线程都停止,并且如果线程在5秒内没有停止,则不会报告错误。如果“关闭”时间过长,现在可以使用立即“停止”命令。此外,立即“停止”命令能够中断支持新的可中断接口(例如HTTP和SOAP,FTP)的采样器。这允许立即完成待处理的响应。现在,非GUI模式测试也可以发送“关闭”或“停止”消息。 Test Action现在支持“立即停止”操作,线程组结果状态操作处理程序后处理器元素也是如此。

HTTP Cookie处理得到改进,HTTP POST现在可以正确使用变量文件名。更新的HTTP,SOAP / XML-RPC和WebService(SOAP)采样器字符编码更加一致。HTTP采样器现在支持连接和响应超时(对于HTTP Java采样器需要JVM 1.5)。与上述关闭的改进一起,这应该避免大多数情况下测试运行挂起。现在,单个HTTP采样器支持多个标头管理器元素。代理服务器已得到改进,默认情况下不再存储“主机”标头。

JDBC Request可以选择将Select语句的结果保存到变量中。JDBC Request现在处理带引号的字符串和UTF-8,并且可以处理任意变量类型。

有几个新函数:__char()函数:允许在字段中输入任意Unicode字符。__unescape()函数:允许使用Java转义字符串。_unescapeHtml()函数:解码Html编码的文本。__escapeHtml()函数:使用Html编码对文本进行编码。对缺失函数的引用 - 例如$ {__ missing(a)} - 现在被视为缺失变量。以前函数名称 - 和领导{ - 被删除。这样可以更轻松地调试测试计划。

现在,一些断言可以应用于子样本以及(或代替)父样本。有一个新的随机变量配置元素。

JMS采样器得到了很大改进(详见下文)。TCP采样器现在支持一些额外的客户端,是一个更灵活一点。

客户端 - 服务器模式已得到改进,服务器可以选择使用固定的RMI端口,这有助于设置防火墙。

已经进行了各种I18N变化; 语言变化效果更好(虽然还不完美)。有改进的法语翻译以及新的波兰语和巴西葡萄牙语翻译。

BeanShell jar现在包含在二进制存档中; 无需单独下载。

已知的错误

Include Controller在非GUI模式下存在一些问题。特别是,如果有两个包含相同名称的控制器,则可能导致NullPointerException

Once Only控制器在线程组或循环控制器下正常运行,但其行为不一致(或明确指定)。

菜单项选项  →  选择语言 不会将所有显示的文本更改为新语言。[行为已改进,但语言更改仍未完全正常工作]要完全覆盖默认本地语言,请在启动JMeter之前设置JMeter属性“ language ”。

不兼容的变化

从文件加载样本结果时,不再清除以前的结果。这允许合并多个文件。如果需要先前的行为,请在加载文件之前使用菜单项Run  →  Clear (Ctrl  +  Shift  +  E) Run  →  Clear All (Ctrl  +  E) 

测试元素“将结果保存到文件”和“生成摘要结果”现在显示为监听器。它们之前被显示为后处理器,即使它们是作为监听器实现的。

Cookie管理器默认不再将传入的Cookie保存为变量。要将cookie保存为变量,请定义属性“ CookieManager.save.cookies = true ”。此外,cookie名称在存储之前以“ COOKIE_ ” 为前缀(这可以避免意外损坏局部变量)要恢复原始行为,请定义属性“ CookieManager.name.prefix = ”(一个或多个空格)。

Counter元素现在显示为Configuration元素。它以前显示为预处理器,即使它是作为Config项实现的。

以上更改仅影响显示的图标和GUI弹出菜单中的位置。它们不会影响测试计划或测试行为。

PreProcessors现在由JMeterThread类直接调用,而不是由TestCompiler#configureSampler()方法调用。(JMeterThread处理PostProcessors)。这不会影响测试计划或行为,但也许可以影响到3 党的插件(不太可能)。

将范围规则子节从第3节“构建测试计划”移至第4节“测试计划的元素”

While控制器现在从条件值中修剪前导和尾随空格,然后将其与LAST,空白或false进行比较。

_jexl()和__javaScript()函数中的“threadName”变量以前拼错为“theadName”。

从JOrphanUtils中删除了以下不推荐使用的方法:booleanToString(boolean)和valueOf(boolean)。Java 1.4+在Boolean类中有这些方法。

TestElement接口有一些新方法:

  • void setProperty(String key,String value,String dflt)
  • void setProperty(String key,boolean value,boolean dflt)
  • void setProperty(String key,int value)
  • void setProperty(String key,int value,int dflt)
  • int getPropertyAsInt(String key,int defaultValue)

这些是在AbstractTestElement类中实现的,所有元素都应该扩展,这不太可能导致问题。

 

Bug修复

HTTP采样器和代理

  • 错误46332 - HTTP Cookie管理器忽略手动定义的cookie(r707810中引入的错误)
  • Cookie管理器未将cookie策略传递给运行时线程,因此它们始终使用兼容模式
  • 将版本属性添加到JMeter Cookie类(正确的cookie支持需要)
  • Cookie Manager现在可以保存/恢复Cookie版本
  • 在存储之前检查cookie的有效性。
  • HTTPSamplers现在可以在POSTed文件名中使用变量
  • 修复HTTP POST中第一个文件名的处理,使函数/变量起作用(多文件支持引入了bug)
  • 错误45831 - 如果SOAP数据包创建失败,WS Sampler会报告错误的吞吐量
  • 更新的HTTP,SOAP / XML-RPC和WebService(SOAP)采样器字符编码更加一致
  • 错误46148 - 当jmeter.util的日志记录设置为DEBUG时,HTTP采样器在SSL请求上失败
  • 修复Java 1.6 https错误:java.net.SocketException:未实现未连接的套接字
  • 错误46838 - 如果没有数据,仍需要在HTTPSampler中设置延迟
  • 错误46993 - 从Header Manager保存会生成ClassCastException
  • 错误46690 - 使用无效的相对路径处理302重定向。JMeter现在删除无关的前导“../”段(与许多浏览器一样)
  • 错误44521 - HTTP请求中的POST的空变量不会被忽略
  • 错误46977 - JMeter不处理没有空格分隔的HTTP标头
  • 修复HTTP文件中的错误:处理 - 读取字节,而不是默认编码中的字符。
  • 从代理服务器保存的标头中删除主机,因为它通常由HTTP堆栈生成
  • 错误45199 - 不要尝试替换代理记录中的空白变量
  • 更改HTTPS欺骗,即使URL匹配失败,也会替换https:链接
  • 错误46436 - 改进Proxy Gui中的错误报告
  • 错误46435 - 错误501(代理服务器)的详细错误消息

其他采样器

  • 现在为BSF测试元素定义了“prev”和“sampler”对象
  • 在客户端 - 服务器模式下使用JDBC时修复NPE(在DataSourceElement中)
  • 错误45425 - JDBC请求不支持Unicode(更改的采样器使用UTF-8)
  • 错误46522 - 缺少列名时JDBC示例中的“响应数据”不正确
  • 错误46821 - JDBC select请求不存储变量中的第一列
  • 错误43791 - 确保在JMS点对点采样器中关闭QueueReceiver
  • 错误46016 - 避免JMSSampler中可能的NPE
  • 错误46142 - JMS Receiver现在使用MessageID
  • 错误45458 - 点对点JMS与身份验证相结合
  • 错误45460 - JMS TestPlan元素依赖于资源属性
  • 各种ReceiveSubscriber线程安全修复程序
  • JMSPublisher和Subscriber修复:线程安全,支持动态区域设置更改,JMX属性值的区域设置独立性
  • FTP Sampler现在在断开连接之前注销。
  • TCP采样器现在调用setupTest()和teardownTest()方法
  • 错误45887 - TCPSampler:错误设置超时属性

控制器

  • 将嵌套事务控制器与父样本一起使用时修复NPE
  • 修复事务控制器父模式的处理,以便将当前采样器设置为实际采样器
  • 错误44941 - 吞吐量控制器不应共享全局计数器
  • 错误47120 - 吞吐量控制器:将执行百分比更改为总执行次数,该值存储在String中并解释为1次执行
  • 错误47150 - 循环计数为零的ThreadGroup导致无限循环
  • 错误47009 - 插入父引发的子控制器名称以重置
  • 错误47165 - 在命令行模式下使用重复的模块控制器名称会导致NPE

听众

  • Mailer Visualizer文档现在同意代码,即需要超过失败/成功计数才能触发邮件。
  • Mailer Visualizer现在显示故障计数
  • Mailer Visualiser - 使用“测试”按钮修复多个电子邮件地址的解析
  • 错误45976 - 使用超过1台服务器的远程测试时结果文件不完整
  • 修复Summariser,使其在客户端服务器模式下工作
  • 错误34096 - 写入CSV文件时未删除重复的样本
  • 在“聚合”和“摘要”报告中保存“在标签中包含组名称”设置
  • JMeter变量“sample_variables”将发送到所有服务器实例,以确保客户端可以使用该数据。
  • CSVSaveService - 在读取引用的字符串时检查EOF

断言

  • 错误45749 - 响应断言不适用于恰好是无效RE的子字符串
  • 错误45904 - 允许'Not'响应断言成功使用null示例

功能

  • 修复正则表达式功能 - 无法正确处理$ m $ mid $ n $
  • 如果在测试关闭期间调用,则在RegexFunction中防止可能的NPE。
  • 如果XPath函数与任何节点都不匹配,请避免使用NPE
  • 在__jexl()和__javaScript()函数中将变量名“theadName”更正为“threadName”
  • 对缺失函数的引用 - 例如$ {__ missing(a)} - 现在被视为缺失变量。以前函数名称 - 和领导{ - 被删除。

国际化

  • 修复了菜单的语言更改处理(对TestBeans不起作用)
  • 添加HeaderAsPropertyRenderer以支持标头资源名称; 使用它来修复各种GUI元素中的区域设置更改
  • 错误46424 - 对法语翻译的更正
  • 错误46844 - 测试计划中的“库”标签不是I18N
  • 错误47064 - 修复了Mac LAF
  • 错误47127 - 无法将语言更改为pl_PL
  • 错误47137 - 查看结果树中的标签不是I18N
  • 错误46423 - 代理记录器的I18N
  • 错误45928 - AJP / 1.3 Sampler不从messages.properties中检索其标签

一般

  • 首次保存新测试计划时,提示覆盖现有文件
  • 修改TestBeans以显示Listeners的正确弹出菜单
  • 错误45185 - CSV数据集空白分隔符导致OOM
  • 修复不正确的GUI分类:“将结果保存到文件”和“生成摘要结果”现在显示为监听器。“Counter”现在显示为Configuration元素。
  • 错误41608 - 删除了误导性警告日志消息
  • 错误46359 - BSF JavaScript预处理器无法在第一次迭代时访问sampler变量(为BSF-22实现临时工作循环)
  • 错误46407 - BSF元素不加载脚本文件,尝试将文件名解释为脚本
  • 在测试关闭期间更好地处理异常
  • 修复JMeterThread类中潜在的线程安全问题
  • 错误46491 - “CSV数据集配置”中最后一个变量的值不正确(处理引用字符串时出错)

改进

HTTP采样器

  • 错误45479 - 支持多个HTTP标头管理器节点
  • HTTP采样器现在支持连接和请求超时(Java Http采样器需要Java 1.5)
  • Apache SOAP 2.3.1不允许访问HTTP响应代码/消息,因此WebService采样器现在将空响应视为错误
  • 镜像服务器现在支持“X-Sleep”标头 - 如果设置了此项,响应线程将等待指定的毫秒数
  • 错误45694 - 在Access Log Sampler中支持GZIP压缩日志

其他采样器

  • JDBC Request可以选择将Select语句的结果保存到变量中。
  • JDBC Request现在处理带引号的字符串。
  • JDBC Request现在处理任意变量类型。
  • 现在使用换行符格式化LDAP结果数据
  • 错误45200 - MailReaderSampler:将整个MIME消息存储在SamplerResult中
  • 错误45571 - JMS采样器相关性增强
  • 错误46030 - 扩展TCP采样器以支持长度为前缀的二进制数据
  • 将classname字段添加到TCP Sampler GUI

控制器

  • 允许控制器使用变量表达式(不仅仅是Javascript)
  • 在与LAST,空白或false进行比较之前,从While Controller条件中修剪空格

听众

  • 保存对文件的响应可以将生成的文件名保存到变量中。
  • 添加选项以在“保存对文件的响应”中跳过后缀生成
  • 错误43119 - 保存对文件的响应:可选择省略文件编号
  • 添加BSF Listener元素
  • 错误47176 - 监控结果:改善负载状态图形
  • 错误40045 - 允许结果监视器选择特定连接器
  • 更有效地读取XML JTL文件 - 在读取时将样本传递给可视化工具,而不是将它们全部保存然后再处理它们

断言,配置,预处理器和后处理器

  • 错误45903 - 允许断言应用于子样本
  • 将正文(未转义)源选项添加到正则表达式提取器。
  • 随机变量 - 用于创建随机数字变量的新配置元素

功能

  • 将OUT和日志变量添加到__jexl()函数
  • 使用脚本来评估__jexl()函数,因此可以有多个语句。
  • 将日志变量添加到__javaScript()函数
  • 添加__char()函数:允许在字段中输入任意Unicode字符。
  • 添加了__unescape()函数:允许使用Java转义字符串。
  • 添加了__unescapeHtml()函数:解码Html编码的文本。
  • 添加了__escapeHtml()函数:使用Html编码对文本进行编码。

国际化

一般

  • 允许JMeter路径名中的空格(适用于Java Bug 4496398的工作循环
  • 在脚本文件中最后处理JVM_ARGS,以便用户可以覆盖默认设置
  • 错误46636 - 允许服务器模式可选地使用固定的rmi端口
  • 使一些采样器可以中断:HTTP(两者),SoapSampler,FTPSampler
  • 测试操作现在支持“立即停止”操作,线程组和结果状态后处理器元素也是如此
  • 菜单项停止和关闭现在表现得更好。关机现在将等待所有线程退出。在GUI模式下,它可以取消并停止运行。现在停止报告是否某些线程不会退出,如果在非GUI模式下运行则退出
  • 如果在非GUI模式下运行,则添加UDP服务器以等待关闭消息; 添加UDP客户端以发送消息。
  • 错误41209 - JLabeled *和工具提示
  • 在二进制下载中包含BeanShell 2.0b4 jar。

非功能性变化

  • 引入AbstractListenerGui类,以便更轻松地创建没有可视输出的Listener
  • 断言在PostProcessors之后运行; 相应地更改弹出菜单的顺序
  • 从函数类中删除不必要的clone()方法
  • 将PreProcessor调用移至JMeterThread类
  • 制作HashTree Map字段最终版
  • 提高对多个样本调用ResultCollector#isSampleWanted()的性能
  • 更新到新版本:xmlgraphics-commons(1.3.1),jdom(1.1),xstream(1.3.1),velocity(1.6.2)

版本2.3.2

主要变化摘要

Bug修复

就视图结果树监听器而言,版本2.3.1改变了二进制和文本内容类型的确定方式:除“图像/”内容类型之外的所有内容都被视为文本,但2.3.1引入了对特定内容类型的检查。这导致了问题,因为省略了几种常用类型,并且在“响应”选项卡中默认不再显示这些类型。JMeter现在只检查以下二进制类型,而不是尝试列出所有可能的文本类型:

  • 图片/*
  • 音频/ *
  • 视频/*

现在假定所有其他类型都是文本。

 

JMeter 2.3.1在Cookie管理器中引入了一个错误 - 如果选择了“每次迭代清除Cookie”,则所有线程都会看到相同的cookie。此错误已得到纠正。

改进

代理服务器现在可以记录二进制请求。默认情况下,内容类型application / x-amf和application / x-java-serialized-object将被视为二进制文件并保存在文件中。要更改内容类型,请更新属性proxy.binary.types

CSV数据集配置元素具有新的文件共享选项:每个线程组,每个线程,每个标识符。这允许更灵活的文件处理,例如,每个线程可以以相同的顺序处理相同的数据。

Switch Controller现在可以正常使用函数和变量,条件现在可以是名称而不是数字。简单控制器现在可以在While控制器下正常工作

JTL文件中的CSV字段现在可以包含分隔符。CSV和XML文件现在可以包含其他变量(定义JMeter属性sample_variables)。

响应断言现在可以匹配子串(即不是正则表达式)。正则表达式提取器可以对变量进行操作。

XPath处理得到改进; 整洁的错误得到更好的处理。

保存添加到摘要和汇总报表的表数据按钮,以便轻松保存计算数据。

HTTP采样器现在可以只保存响应的MD5哈希值,而不是整个响应。作为特殊情况,如果HTTP Sampler路径以“http://”或“https://”开头,则将其用作完整URL,从而覆盖主机和端口字段。HTTP采样器现在可以POST多个文件。Webservice(SOAP)Sampler现在可以使用“file:”协议加载本地WSDL文件。

添加了一个简单的HTTP缓存管理器。这需要进一步发展。

查看结果树监听器现在使用Tidy来显示XML。这应该允许更多内容成功显示。它还避免了下载远程DTD文件的需要,这可能会大大减慢渲染速度。

MailReader采样器现在支持POP3S和IMAPS协议。现在添加单个邮件作为子样本。

对BSF Sampler的各种改进:现在支持Jexl,Javascript bug正常工作。添加了BSF PreProcessor,PostProcessor和Assertion测试元素。现在所有人都可以访问“道具”JMeter Properties对象。

在非GUI模式下加载的类数量大大减少。

已知的错误

Include Controller在非GUI模式下存在一些问题。特别是,如果有两个包含相同名称的控制器,则可能导致NullPointerException。

Once Only控制器在线程组或循环控制器下运行正常,但其行为不一致(或明确指定)。

菜单项选项/选择语言不会将所有显示的文本更改为新语言。要覆盖默认本地语言,请在启动JMeter之前设置JMeter属性“language”。

不兼容的变化

  • 要减少在非GUI模式下加载的类数,只有在类名包含字符串'.functions'时才能找到函数。并且不包含字符串'.gui。'。所有现有的JMeter功能都符合此限制。要恢复到之前的行为,请在jmeter.properties中注释或更改属性classfinder.functions。*。
  • intSum()的引用值参数现在是可选的。因此,如果使用变量名,则它不能是有效的整数。
  • 提供的TCPClient实现不再将tcp.eolByte = 0视为特殊。要跳过EOL检查,请设置tcp.eolByte = 1000(或其他一些不是有效字节的值)
  • 在函数调用中从变量名修剪前导和尾随空格。例如,$ {__ Random(1,63,LOTTERY)}将使用变量'LOTTERY'而不是'LOTTERY'。
  • 已从RunningSample类中删除同步(无论如何它都不是完全线程安全的)。3的开发商第三党插件使用该类可能需要同步访问。

Bug修复

  • 检查CSV分隔符是否合理。
  • 修复开关控制器以正常使用功能和变量
  • 错误44011 - application / soap + xml未被视为文本类型
  • 错误43427 - 简单控制器仅部分在While循环中执行
  • 错误33954 - If / While控制器中的堆栈溢出(可能先前已修复)
  • 错误44022 - 关闭测试计划时内存泄漏
  • 错误44042 - Cookie管理器中的回归(2.3.1中引入的错误)
  • 错误41028 - 当主机被定义为环回地址时,JMeter服务器不会提醒用户
  • 错误44142 - 如果省略参数,函数__machineName会导致NPE。
  • 错误44144 - JMS点对点:请求响应测试不起作用
  • 错误44314 - 无法添加多个SyncTimer
  • 捕获Tidy控制台错误输出并记录它
  • 使用XPath Assertion和XPath Extractor中的Tidy(容错解析器)修复问题
  • 错误44374 - 改进计时器计算
  • 正则表达式提取器现在删除先前匹配的所有陈旧变量。
  • 错误44707 - 运行远程测试更改内部测试计划
  • 错误44625 - 不能有两个或更多具有不同“put”和“get”操作的FTP采样器
  • 错误40850 - BeanShell内存泄漏
  • 确保为成功的JDBC样本设置ResponseCode和ResponseMessage
  • FTPSampler现在检测并报告打开远程文件失败
  • search_paths和user.classpath中定义的类目录不再需要尾随“/”
  • 错误44852 SOAP / XML-RPC请求未在“查看结果树”中显示“请求”详细信息
  • WebService(SOAP)采样器ResponseData现在包括服务器发送的EOL
  • 错误44910 - 关闭TCP采样器中的上一个套接字(如果有)
  • 错误44912 - 过滤器在Log Parser中无法正常工作
  • BeanShell和BSF组件文档对“SampleResponse”对象进行了一些不正确的引用; 这已被更正为“SampleResult”
  • BSF Sampler现在可以正常使用Javascript
  • 测试操作“停止测试”现在有效
  • 错误42833 - 参数类在getArgumentsAsMap()中使用LinkedHashMap来保留排序
  • 错误45093 - SizeAssertion没有调用getBytes()
  • 错误45007 - 使用代理HTTPS欺骗时重写位置标头
  • 将标头返回给客户端时,在代理中使用CRLF而不是LF
  • 错误45007 - 如果内容可能已更改,则修复内容长度标题

改进

  • CSV文件现在可以处理带有嵌入分隔符的字段。
  • 添加了longSum()函数
  • 错误43382 - 为XPath断言和后处理器配置Tidy输出(警告,错误)
  • 错误43984 - 从端口字段修剪空格
  • 向__log()函数添加可选注释
  • 使随机函数变量名可选
  • 通过仅查找包含“.functions”的类名中的函数,减少非GUI模式下的类加载。并且不包含'.gui'。
  • 错误43379 - 交换机控制器现在支持按名称和编号进行选择
  • 可以指定要写入JTL文件的变量名列表(CSV和XML格式)
  • 现在检查remoteStart选项-r和-R是否仅与non_GUI -n选项一起使用
  • 错误44184 - 允许使用Aggregate Graph数据保存标头
  • 添加“保存表格数据”按钮到聚合报告和摘要报告 - 将表格保存为带有标题的CSV格式
  • 允许大多数功能用于测试计划。注意__evalVar(),__ split()和__regex()不能用于测试计划。
  • 允许从文件加载全局属性,例如-Gglobal.properties
  • 将“Substring”选项添加到Response Assertion
  • 错误44378 - 土耳其本地化
  • 将可选的输出变量名称添加到Jexl函数
  • 将application / vnd.wap.xhtml + xml添加为文本类型
  • 添加意味着覆盖视图结果树中的最大显示大小 - 设置属性:view.results.tree.max_size
  • 使用Tidy在View Results Tree Listener中显示XML(避免获取DTD)
  • 错误44487 - 德语翻译
  • 作为一种特殊情况,如果HTTP Sampler路径以“http://”或“https://”开头,则将其用作完整URL。
  • 错误44575 - 结果保护程序现在只能保存成功的结果
  • 错误44650 - CSV数据集现在处理引用的列值
  • 错误44600 - 使用Java 1.5+运行时的1毫秒分辨率计时器
  • 错误44632 - FTP采样器的文本输入增强功能
  • 错误42204 - 将线程组名称添加到聚合和摘要报告
  • FTP采样器设置延迟=登录时间
  • 如果可以,FTP采样器设置URL
  • 错误41921 - 为采样器添加选项以存储响应的MD5; 为HTTP采样器完成。
  • 现在,正则表达式函数也可以应用于变量而不仅仅是前一个样本结果。
  • 不推荐使用菜单中的HTML参数掩码,HTTP用户参数修饰符
  • 错误44807 - 允许会话ID以反斜杠终止
  • 错误44784 - 允许损坏的服务器返回额外的字符集
  • 添加了TESTSTART.MS属性/变量=测试开始时间(以毫秒为单位)
  • 将POP3S和IMAPS协议添加到Mail Reader Sampler。
  • Mail Reader Sampler现在为每封邮件创建一个子样本。
  • 提供的TCPClient实现不再将tcp.eolByte = 0视为特殊。要跳过EOL检查,请设置tcp.eolByte = 1000(或其他一些不是有效字节的值)
  • JUnit sampler GUI现在还可以找到user.classpath中定义的Test类
  • 在函数调用中从变量名修剪前导和尾随空格。例如,$ {__ Random(1,63,LOTTERY)}将使用变量'LOTTERY'而不是'LOTTERY'
  • Webservice(SOAP)Sampler现在可以使用file:protocol加载本地WSDL文件
  • 错误44872 - 将“所有文件”过滤器添加到“打开文件”对话框
  • 镜像服务器现在可以独立运行(mirror-server.cmd和mirror-server.sh)
  • 错误19128 - 为HTTP采样器添加了多个文件POST支持
  • 允许使用特殊名称LAST表示最后一次测试运行; 适用于-t,-l,-j标志
  • 错误 44418/42178 - CSV数据集文件处理改进
  • 通过“props”对象为BeanShell,Javascript和Jexl函数提供对JMeter属性的访问
  • 通过“props”对象为BSF Sampler提供对JMeter Properties的访问权限
  • 将Jexl添加为支持的BSF Sampler语言
  • 通过“props”对象为Beanshell测试元素提供访问JMeter属性的权限
  • 添加了BSF PreProcessor,PostProcessor和Assertion测试元素
  • 所有BSF元素现在都可以通过变量“OUT”访问System.out
  • Summariser更新以处理变量名称
  • 同步添加到摘要和汇总报告,以防止偶尔丢失的样本
  • 错误44808 错误39641 - 对二进制请求的代理支持
  • 错误28502 - HTTP资源缓存

非功能性变化

  • 更好地处理MirrorServer启动问题并改进单元测试。
  • 构建过程现在可以检测缺3 党库和报告需要二进制和源档案
  • 如果jar不存在,跳过BeanShell测试
  • 更新到Xerces 2.9.1,Xalan 2.7.1,Commons IO 1.4,Commons Lang 2.4,Commons-Logging 1.1.1,XStream 1.3,XPP3 1.1.4c
  • 使用log / logn函数描述的属性
  • 检查demos目录中的所有jmx文件是否都可以加载
  • 将版权更新为2008; 在HTML输出中使用复制标记而不是数字字符
  • 从构造函数调用的方法不能被覆盖:将GUI init方法设为私有
  • 如果可能,使静态变量最终
  • 将更改拆分为当前和以前

版本2.3.1

变更摘要

JMeter代理

代理欺骗功能在2.3中被破坏; 它已被修复。Spoof现在支持一个可选参数来限制特定URL的欺骗。这对于具有不安全内容的HTTPS页面很有用 - 例如,可以使用HTTP访问图像/样式表。欺骗响应现在从https链接中删除默认端口(443)以使它们更好地工作。

忽略的代理样本现在在监听器中可见 - 标签用[和]括起来作为指示。代理文档已得到改进。

GUI更改

添加菜单按处理顺序显示元素类型 - 请参阅测试计划执行顺序不再可能将测试元素添加到树的不适当部分 - 例如,不能在测试计划下直接添加采样器。这也适用于粘贴和拖放。

“文件”菜单现在支持“恢复”选项,该选项可重新加载当前文件。还记住使用的最后几个文件名以便于重新加载。

“选项菜单”现在支持“全部折叠”和“全部展开”项目以折叠和展开测试树。

远程测试

JMeter服务器现在直接启动RMI服务器(默认情况下)。这简化了测试,意味着当服务器停止时RMI服务器将停止。

现在可以在Listener文件名中使用函数(变量不起作用)。

命令行选项-G现在可用于定义远程服务器的属性。选项-X可用于在非GUI运行后停止远程服务器。可以将服务器设置为在单个测试后自动退出(set property server.exitaftertest = true)。

其他增强功能

JMeter启动不再加载任意数量的类; 这应该减少内存需求。

添加到所有BeanShell元素的参数和文件支持。Javascript函数现在支持访问JMeter对象; Jexl函数总是有访问权限,但现在已包含文档。用于评估变量的新函数__eval()和__evalVar()。

现在,加载时会自动识别具有正确标题列名称的CSV文件。无需配置属性。

主机名现在可以保存在CSV和XML输出文件中。保存结果文件时添加了新的“仅成功”选项。现在,在加载XML和CSV文件时,仅支持Errors / Successes选项。

一般文档改进。

HTTP

PUT和DELETE现在应该正常工作。Cookie管理器不再清除手动输入的Cookie。

现在处理META标签http-equiv charset

JDBC

JDBC Sampler现在允许调用过程的INOUT和OUT参数。JDBC Sampler现在允许每线程连接 - 在JDBC Config中设置Max Connections = 0。


不兼容的变化

  • JMeter服务器现在默认创建RMI注册表。如果RMI注册表已在外部启动,则会生成警告消息,但服务器将继续。这不应该影响JMeter测试。但是,如果您还将RMI注册表用于其他应用程序,则可能存在问题。例如,当JMeter服务器关闭时,它将停止RMI注册表。还可能需要调整用户编写的命令文件(JMeter提供的文件已更新)。要恢复到先前的行为,请定义JMeter属性:server.rmi.create = false
  • 代理服务器从生成的标题管理器中删除If-Modified-Since和If-None-Match标头。要恢复到先前的行为,请定义没有值的属性proxy.headers.remove

Bug修复

  • 错误43430 - 远程样本的活动线程数不正确
  • 吞吐量控制器不适用于“所有线程”计数
  • 如果POST主体仅根据参数值构建,则如果设置了复选框,则会对这些主体进行编码。
  • 错误43584 - 断言失败消息包含一个逗号,该逗号也用作CSV文件的分隔符
  • HTTP镜像服务器现在总是返回完全相同的内容,如果UTF-8编码用于HTTP POST主体,它用于返回不正确的数据,例如
  • 错误43612 - HTTP PUT不支持请求参数
  • 错误43694 - ForEach Controller(空集合处理错误)
  • 错误42012 - 在远程测试中不会处理变量监听器文件名。文件名现在可以包含函数引用; 变量引用不起作用。
  • 确保侦听器节点在复制粘贴时获得自己的保存配置
  • 正确的代理服务器包括和排除匹配的描述 - 包括端口和查询,与之前记录的相反。
  • 聚合图和聚合报告列标题是KB /秒; 将值固定为KB而不是字节
  • 修复SamplingStatCalculator,使其不再为endTime添加经过的时间,因为这是由SampleResult处理的。这可以纠正摘要报告和聚合报告吞吐量计算之间的差异。
  • 默认HTTPSampleResult为ISO-8859-1编码
  • 修复空白编码的默认编码
  • 修复了2.3中破坏的Https欺骗(端口问题)
  • 修复HTTP(Java)采样器,以便http.java.sampler.retries表示重试,即不包括初始尝试
  • 修复SampleResult dataType检查以更好地检测TEXT文档

改进

  • 添加run_gui Ant目标,打包然后从Ant启动JMeter GUI
  • 添加文件→还原以轻松删除当前更改并重新加载当前加载的项目文件
  • 错误31366 - 记住最近打开的文件
  • 错误43351 - 将参数和脚本文件的支持添加到所有BeanShell测试元素
  • SaveService不再需要实例化类
  • 新函数:__eval()和__evalVar()
  • 菜单项现在按执行顺序显示
  • 现在,测试计划项目只能被删除/粘贴/合并到允许它们的树的部分中
  • 属性显示以显示System和JMeter属性的值并允许更改它们
  • 错误43451 - 允许Regex Extractor对响应代码/消息进行操作
  • JDBC Sampler现在允许调用过程的INOUT和OUT参数
  • JDBC Sampler现在允许每线程连接
  • Cookie管理器不再清除GUI中定义的cookie
  • 忽略没有名称的HTTP参数(没有文件的POST请求除外)
  • 主菜单中添加了“将选择另存为”; 现在只检查项目被选中
  • 测试计划现在有粘贴菜单项(已经通过^ V支持粘贴)
  • 如果加载CSV文件时默认分隔符不起作用,请通过分析标题行来猜测分隔符。
  • 为HttpClient采样器添加可选的“loopback”协议
  • 如果请求中存在content-length标头,则HTTP镜像服务器现在支持阻止等待显示更多数据
  • HTTP镜像服务器GUI现在在更明显的位置具有“开始”和“停止”按钮
  • 服务器模式现在创建RMI注册表; 禁用设置JMeter属性server.rmi.create = false
  • HTTP Sampler现在支持使用MIME Type字段在从参数值构造body时指定内容类型请求标头
  • 单个服务器测试后启用退出 - 定义JMeter属性server.exitaftertest = true
  • 添加了-G选项以设置远程服务器中的属性
  • 添加-X选项以在非GUI运行后停止远程服务器
  • 错误43485 - 能够在SOAP / XML-RPC请求上指定keep-alive
  • 错误43678 - 处理META标记http-equiv charset
  • 错误42555 - [I18N]法语翻译的修正提案
  • 错误43727 - 测试操作不支持变量或函数
  • 代理服务器默认情况下从生成的标头管理器中删除If-Modified-Since和If-None-Match标头。要更改已删除标头的列表,请将属性proxy.headers.remove定义为要删除的标头的逗号分隔列表
  • javaScript函数现在可以访问JMeter变量和上下文等。请参阅JavaScript函数
  • 使用BSF Sampler语言字段的下拉列表
  • 将主机名添加到可以保存在CSV和XML输出文件中的项目。
  • 加载XML和CSV文件时,现在支持仅错误标志
  • 确保ResultCollector使用SaveService编码
  • Proxy现在拒绝尝试将其与https一起使用
  • 代理欺骗现在可以使用RE匹配来确定要欺骗的URL(如果图像不是https则很有用)
  • 当转换https:链接到http时,代理欺骗现在会丢弃默认HTTPS端口(443):
  • 添加成功仅记录和显示
  • 如果JMeter日志文件名称包含成对的单引号,则将其格式化为SimpleDateFormat(应用于当前日期).eg'jmeter_'yyyyMMddHHmmss'.log'
  • 添加了“全部折叠”和“全部展开选项”菜单项
  • 允许可选择定义可作为文本查看的额外内容类型

非功能性改进

  • 编码器代码收紧; Functor现在可以与接口一起使用,以及预定义的目标和参数。
  • 在覆盖现有文件之前,现在保存图形功能提示
  • 添加了Debug Sampler和Debug PostProcessor。
  • 修复了Calculator和SamplingStatCalculator中的方法名称
  • 整理了Listener文档。

版本2.3

修复自2.3RC4以来

Bug修复

  • 修复SampleResultConverter中的NPE - XStream PrettyPrintWriter无法处理空值
  • 如果Java HTTP sampler看到null ResponseMessage,则替换为HTTP标头
  • 错误43332 - 2.3RC4不会基于TestBean清除Guis
  • 错误42948 - Java 1.6中代理gui表字段的问题
  • 修复损坏的jmeter-server脚本
  • 错误43364 - 还原选项如果Controller为2.3RC3之前的行为
  • 错误43449 - 统计远程模式不处理延迟
  • 错误43450(部分修复) - 允许将SampleCount和ErrorCount保存到文件或从文件恢复

改进

  • 将nameSpace选项添加到XPath提取程序
  • 将NULL参数选项添加到JDBC采样器
  • 为函数添加Rhino和BeanShell的文档链接; 澄清变量和属性
  • 确保记录未捕获的异常
  • 如果在本地找不到,请在JMeter bin目录中查找user.properties和system.properties

自2.3RC3起修复

  • 修复了Summariser中的NPE(2.3RC3中引入的bug)
  • 修复了代理端口的设置(2.3RC3中引入的bug)
  • 修复了在无头主机上运行非GUI时的错误(2.3RC3中引入的错误)
  • 错误43054 - SSLManager导致压力测试饱和并崩溃(2.3RC3中引入的错误)
  • 澄清HTTP请求默认使用端口字段
  • 错误43006 - 如果找不到icon.properties文件,则为 NPE
  • 错误42918 - Size Assertion现在将空响应视为长度为零
  • 错误43007 - 测试在所有线程组启动之前结束
  • 如果302没有Location头,则修复HTTPSampler2中可能的NPE。
  • 错误42919 - CSV输出中的失败消息空白[现在记录第一个非空白消息]
  • 添加指向Extending JMeter PDF的链接
  • 在Content-Type解析中允许引用的字符集
  • 错误39792 - 需要ClientJMeter同步
  • 错误43122 - 使用快捷键时不总是拾取GUI更改(2.3RC3中引入的错误)
  • 错误42947 - 使用快捷键时未获取TestBeanGUI更改
  • 添加了serializer.jar(需要更新到xalan 2.7.0)
  • 错误38687 - 模块控制器在非GUI模式下不起作用

自2.3RC3以来的改进

  • 将停止线程选项添加到CSV数据集
  • 将commons-httpclient更新为3.1
  • 错误28715 - 允许变量cookie值(设置CookieManager.allow_variable_cookies = false以禁用)
  • 错误40873 - 添加JMS点对点非持久交付选项
  • 错误43283 - 如果不存在,保存操作会添加.jmx; 在“另存为”上检查现有文件
  • Control  +  A键不能全部保存; 改为 Control  +  Shift  +  S.
  • 错误40991 - 允许断言检查标题

版本2.3RC3

已知问题/限制:

JMeter远程服务器不支持多个并发测试 - 每个远程测试应在单独的服务器中运行。否则,测试可能会失败并出现随机异常,例如StandardJMeterEngine中的ConcurrentModification异常。 Bug 43168

默认HTTP请求(不是HTTPClient)采样器可能无法通过代理进行HTTPS连接。这似乎是由于Java错误,请参阅 错误39337要避免此问题,请尝试使用更新版本的Java,或切换到HTTP请求采样器的HTTPClient版本。

事务控制器父模式不支持嵌套的事务控制器。这样做可能会导致TestCompiler中出现空指针异常。

运行远程测试时,CSV和XML文件中的线程活动计数始终为零。

file_format.testlog = 2.1属性与2.2相同。然而,JMeter确实尊重3个测试计划版本。

错误22510 - JMeter始终使用密钥库中的第一个条目。

如果JMeter安装在路径名包含空格的目录中,则远程模式不起作用。

BeanShell测试元素泄漏内存。这可以通过使用文件而不是在test元素中包含脚本来减少。

变量和函数在客户端 - 服务器(远程)模式下的监听器中不起作用,因此它们不能用于在客户端 - 服务器模式下命名日志文件。

CSV数据集变量在配置处理完成后定义,因此它们不能用于其他配置项,例如JDBC Config。(见 错误40394

变更摘要(更多详情,见下文)

一些主要的改进是:

  • Htmlparser 2.0现在用于解析
  • HTTP授权现在支持域和域
  • 可以通过httpclient.parameters文件指定HttpClient选项
  • 现在,HttpClient的行为与SSL证书的Java Http相同
  • HTTP镜像服务器,允许对HTTP采样器进行本地测试
  • HTTP代理支持XML-RPC记录和其他代理改进
  • __V()函数允许支持嵌套变量引用
  • LDAP Ext sampler可选地解析结果集并支持安全模式
  • FTP Sampler支持Ascii / Binary模式并上传
  • 事务控制器现在可选地生成具有子结果的样本
  • HTTPS会话上下文现在是每个线程,而不是共享。这样可以更好地模拟多个用户
  • BeanShell元素现在支持ThreadListener和TestListener接口
  • Tree View Listener和其他地方的彩色图标可以更好地区分失败的样本。

主要的错误修复是:

  • 现在,HTTPS(SSL)处理得到了很大改进
  • 修复了各种远程模式错误
  • Control  +  C 和 Control  +  V现在可以在测试树中使用
  • 延迟和编码现在可在CSV日志输出中使用
  • 测试元素不再默认为先前的内容; 更改语言时不再清除测试元素。

不兼容的更改(使用情况):

注意:javax.net.ssl属性已从jmeter.properties移至system.properties,如果在jmeter.properties中定义,则不再有效。 
新的安排更灵活,因为它允许定义任意系统属性。

现在,每个线程创建SSL会话上下文,而不是共享。这会为HTTPS测试生成更实际的负载。这种变化可能会减慢许多SSL线程的测试速度。可以通过设置JMeter属性来启用原始行为:

https.sessioncontext.shared =真

 

LDAP扩展采样器现在对Thread Bind和Single-Bind测试使用相同的面板。这意味着需要更新使用Single-bind测试的任何测试以设置用户名和密码。

错误41140:JMeterThread行为已更改,以便PostProcessors按正向顺序运行(因为它们出现在测试计划中)而不是之前的逆序。通过设置以下JMeter属性可以恢复原始行为: 
jmeterthread.reversePostProcessors = true

HTTP授权管理器现在为域和域提供了额外的列,因此在用户名中使用'\'和'@'来分隔域和域的临时工作轮已被删除。

Control  +  Z不再用于Remote Start All - 现在使用 Control  +  Shift  +  R.

HttpClient现在使用抢占式身份验证。可以通过设置以下内容来更改此设置:

jmeter.properties:
httpclient.parameters.file = httpclient.parameters

httpclient.parameters:
http.authentication.preemptive $布尔= FALSE

 

如果将https采样器设置为80,则不再忽略HTTP请求默认值中的端口字段。

不兼容的变化(开发):

NB clear()方法在以下接口中定义:可清除,JMeterGUIComponent和TestElement。这些方法有不同的用途,因此其中两个被重命名:Clearable方法现在是clearData(),JMeterGUIComponent方法现在是clearGui()。RD党的加载项可能需要重建。

Calculator和SamplingStatCalculator类不再提供其数据的任何格式。现在应该使用jorphan.gui Renderer类完成格式化。

删除已弃用的方法JMeterUtils.split() - 改为使用JOrphanUtils版本。

从SaveGraphicsService中删除了saveUsingJPEGEncoder()方法。到目前为止它尚未使用,并且在JMeter中使用了唯一的Sun特定类。

新功能/改进:

  • 将域和域支持添加到HTTP授权管理器
  • HttpClient现在与无效证书等的JDK http采样器的行为相同
  • 添加了httpclient.parameters.file以允许定义HttpClient参数
  • 错误33964 - 如果省略名称/类型,Http请求可以将文件作为整个帖子正文发送
  • 错误41705 - 向HTTP采样器添加内容编码选项以用于POST请求
  • 错误40933 错误40945 - 检索嵌入的资源URL时可选的RE匹配
  • 错误27780 - (补丁19936)创建multipart / form-data HTTP请求而不上传文件
  • 错误42098 - 在HTTP GET中对参数值使用指定的编码
  • 错误42506 - JMeter线程现在使用独立的SSL会话
  • 错误41707 - HTTP代理XML-RPC支持
  • 错误41880 - 向HTTP代理服务器添加内容类型过滤
  • 错误41876 - 添加更多选项以控制HTTP代理生成的内容
  • 错误42158 - 改进对HTTP代理服务器中的多部分/表单数据请求的支持
  • 错误42173 - 让HTTP代理处理请求的编码和undecode参数值
  • 错误42674 - 如果未指定,则默认为先发制人的HTTP授权
  • 支持HTTP采样器中的“文件”协议
  • 现在,在创建新采样器时,Http Autoredirects默认启用
  • 错误40103 - 各种LDAP增强功能
  • 错误40369 - LDAP:采样器中的稳定搜索结果
  • 错误40381 - LDAP:更具描述性的字符串
  • BeanShell后处理器不再忽略具有零长度结果数据的样本
  • 添加了beanshell.init.file属性以在启动时运行BeanShell脚本
  • 错误39864 - 现在从当前或bin目录中找到BeanShell init文件
  • BeanShell元素现在支持ThreadListener和TestListener接口
  • BSF Sampler将其他变量传递给脚本
  • 为WebService(SOAP)采样器添加了超时
  • 错误40825 - 添加JDBC准备语句支持
  • 扩展JDBC采样器:Commit,Rollback,AutoCommit
  • 错误41457 - 添加TCP Sampler选项以不重用连接
  • 错误41522 - 在示例结果中使用JUnit采样器名称
  • 错误42223 - FTP采样器现在可以上传文件
  • 错误40804 - 更改计数器默认为max = Long.MAX_VALUE
  • 使用属性jmeter.home(如果存在)在启动JMeter时覆盖user.dir
  • 新的-j选项可以轻松更改jmeter日志文件
  • HTTP镜像服务器工作台元素
  • 错误41253 - 扩展XPathExtractor以使用非NodeList XPath表达式
  • 错误42088 - 为布尔值添加XPath断言
  • 添加了__V变量函数来解析嵌套变量名
  • 错误40369 - 等于响应断言
  • 错误41704 - 允许为CSV DataSet指定charset编码
  • 错误41259 - 注释字段添加到所有测试元素
  • 将标准偏差添加到摘要报告
  • 错误41873 - 为AssertionResult添加名称并在ViewResultsFullVisualizer中显示AssertionResult
  • 错误36755 - 使用UTF-8编码保存XML测试文件
  • 使用树视图侦听器的ISO日期时间格式(之前的年份未显示)
  • 改进CSV文件的加载:如果可能,使用标头来确定格式; 如果不是毫秒,则猜测时间戳格式
  • 错误41913 - TransactionController现在创建样本作为事务的子样本
  • 错误42582 - 树视图侦听器中的JSON漂亮打印
  • 错误40099 - 在ForEachController中启用对象变量
  • 错误39693 - 查看结果表使用图标而不是复选框
  • 错误39717 - 在结果树中使用图标
  • 错误42247 - 改善HCI
  • 允许用户取消关闭对话框

非功能性改进:

  • Functor调用现在可以进行单元测试
  • 用javax.net替换com.sun.net类
  • 将外部jar定义解压缩到build.properties文件中
  • 在构建类路径中使用特定的jar名称,以便更快地检测到错误
  • 整理ORO电话; 现在只有一个缓存,大小由oro.patterncache.size给出,默认为1000
  • 错误42326 - .jmx文件中的元素顺序发生变化

外部jar更新:

  • Htmlparser 2.0-20060923
  • xstream 1.2.1 / xpp3_min-1.1.3.4.O
  • 蜡染1.6
  • BSF 2.4.0
  • 公共收藏3.2
  • 公地的HttpClient-3.1-RC1
  • commons-jexl 1.1
  • commons-lang-2.3(已添加)
  • JUnit 3.8.2
  • 速度1.5
  • commons-io 1.3.1(已添加)

Bug修复:

  • 错误39773 - NTLM现在需要本地主机名 - 修复其他呼叫
  • 错误40438 - 设置“httpclient.localaddress”无效
  • 错误40419 - 中文邮件翻译修复
  • 错误39861 - 修复拼写错误
  • 错误40562 - 重定向不再调用RE后处理器
  • 错误40451 - 如果未由采样器设置,则设置标签
  • 在远程模式下修复CounterConfig.java中的NPE
  • 错误40791 - 摘要报告使用的计算器
  • 错误40772 - 正确解析CSV日志文件中缺少的字段
  • 错误40773 - 未正确解析XML日志文件时间戳
  • 错误41029 - JMeter -t无法关闭输入JMX文件
  • 错误40954 - 分布式测试中的统计模式显示错误的结果
  • 修复使用返回null的sampler时的ClassCast异常,例如TestAction
  • 错误41140 - 后处理器以相反的顺序运行
  • 错误41277 - 将延迟和编码添加到CSV输出
  • 错误41414 - Mac OS X可能会向-jar类路径添加额外项目
  • 在远程测试中保存线程计数时修复NPE
  • 错误34261 - HtmlParser中的 NPE(允许缺少属性)
  • 错误40100 - 在调用close之前检查FileServer类型
  • 错误39887 - jmeter.util.SSLManager:无法加载密钥库错误消息
  • 错误41543 - 网络服务器返回“500内部服务器错误”且内容长度为0时的异常
  • 错误41416 - 不要在SOAP-RPC采样器中使用分块输入进行文本框输入
  • 错误39827 - 文件的SOAP Sampler内容长度
  • 修复Clear.java中的类强制转换异常
  • 错误40383 - 如果已设置,请不要设置内容类型
  • 如果尚未保存测试计划,Mailer Visualiser测试按钮现在可用
  • 错误36959 - 快捷方式“ctrl c”和“ctrl v”对树元素不起作用
  • 错误40696 - 从STYLE URL()属性中检索嵌入的资源
  • 错误41568 - 使用“计数器”时远程运行测试时出现问题
  • 修复了假定时间戳始终为结束时间戳的各种类:
    • SamplingStatCalculator
    • JTLData
    • RunningSample
  • 错误40325 - 允许为WebServiceSampler指定proxyuser和proxypassword
  • 将HttpClient代理定义更改为使用NTCredentials; 为此添加了http.proxyDomain属性
  • 错误40371 - 响应断言“模式测试”滚动条问题
  • 错误40589 - 嵌入URL中的Unescape XML实体
  • 错误41902 - 当responseCode = -1时,HTTPSampler中的NPE
  • 错误41903 - ViewResultsFullVisualizer:复制和粘贴时状态列看起来很糟糕
  • 错误41837 - 代理中的参数值损坏
  • 错误41905 - 无法在Java 1.6中剪切/粘贴/选择标题管理器字段
  • 错误41928 - 使HTTP请求采样器发送的所有请求标头出现在示例结果中
  • 错误41944 - ResultSaver未递归处理子结果
  • 错误42022 - HTTPSampler不允许多个同名的标头
  • 错误42019 - 内容类型未存储在具有子结果的重定向HTTP请求中
  • 错误42057 - 如果method为null,则连接可以为null
  • 错误41518 - JMeter更改POST请求的HTTP标头内容类型
  • 错误42156 - HTTPRequest HTTPClient错误地在POST中urlencodes参数值
  • 错误42184 - 添加子样本时未添加到样本的子样本的字节数
  • 错误42185 - 如果HTTP采样器遵循重定向,并设置为下载图像,则会多次下载图像
  • 错误39808 - 无效的重定向导致不正确的采样时间
  • 错误42267 - 代理记录中的并发GUI更新失败
  • 错误30120 - 如果添加一个新的简单控制器作为子级,则重置简单控制器的名称
  • 错误41078 - 合并导致测试计划的名称更改
  • 错误40077 - 创建新元素从现有元素复制值
  • 错误42325 - 为LogicControllers实现“清除”方法
  • 错误25441 - 有时检测不到TestPlan更改(isDirty)
  • 错误39734 - 在复制/粘贴操作后共享监听器
  • 错误40851 - 具有0次迭代的循环控制器,停止评估迭代字段
  • 错误24684 - 如果jmeter的路径中有空格,则远程启动问题
  • 加载CSV数据文件时使用监听器配置
  • 函数方法setParameters()需要同步
  • 将CLI长可选参数修复为require“=”(对于短选项)
  • 修复SlowSocket与Httpclient(http和https)一起正常工作
  • 错误41612 - 嵌套在如果控制器行为不正常的循环
  • 错误42232 - 更改语言清除UDV内容
  • Jexl函数不允许变量

版本2.2

不兼容的变化:

时间戳现在设置为采样器开始时间(结束时)。要恢复到先前的行为,请将属性sampleresult.timestamp.start更改为false(或对其进行注释)

JMX输出格式已简化,文件不向后兼容

JMeter.BAT文件不再将目录更改为JMeter主目录,而是从当前工作目录运行。jmeter-n.bat和jmeter-t.bat文件将更改为包含输入文件的目录。

现在稍后启动监听器以允许使用变量名称。这可能会导致一些问题; 如果是这样,请在jmeter.properties中定义以下内容: 
jmeterengine.startlistenerslater = false

现在,GUI在加载测试计划时默认会扩展树。可以通过设置JMeter属性onload.expandtree = false来禁用此功能

已知问题:

  • 后处理器以相反的顺序运行(参见 Bug 41140
  • 模块控制器无法在非GUI模式下工作
  • 随着测试的进行,聚合报告和一些其他侦听器使用越来越多的内存
  • 并不总是正确处理非默认编码
  • 安装路径中的空间会导致客户端 - 服务器模式出现问题
  • 语言更改不会传播到所有测试元素
  • SamplingStatCalculator保留所有样本的列表以用于计算目的; 这可能会导致长时间运行测试中的内存耗尽
  • 如果服务器证书已过期或未在本地安装,则无法正确处理它们

新功能:

  • 报告功能
  • XPath Extractor后处理器。处理单个和多个匹配。
  • 更简单的JMX文件格式(2.2)
  • BeanshellSampler代码可以直接更新ResponseData
  • 错误37490 - 允许UDV作为持续时间断言的延迟
  • HttpClient的慢速连接仿真
  • 增强的JUnitSampler,以便默认情况下断言错误和异常不会附加到错误消息中。用户必须在采样器中明确检查追加
  • 增强了webservice采样器的文档,以解释它如何与CSVDataSet一起使用
  • 增强了javascript函数的文档来解释转义逗号
  • 允许CSV数据集文件名是绝对的
  • 报告树编译器错误更好
  • 如果default为空,请不要重置Regex Extractor变量
  • includecontroller.prefix属性已添加
  • 正则表达式提取器设置组计数
  • 现在可以将整个屏幕保存为图像,而不仅仅是右侧窗格
  • 错误38901 - 向SOAP Sampler添加可选的SOAPAction标头
  • 新的BeanShell测试元素:Timer,PreProcessor,PostProcessor,Listener
  • __split()函数现在清除下一个变量,因此它可以与ForEach Controller一起使用
  • 错误38682 - 将CallableStatement功能添加到JDBC Sampler
  • 更容易更改RMI / Server端口
  • 添加属性jmeter.save.saveservice.xml_pi以在JTL文件中提供可选的xml处理指令
  • 将字节和URL添加到可以保存在示例日志文件(XML和CSV)中的项目
  • 后处理器“保存对文件的响应”现在使用样本保存生成的文件名,文件名可以包含在样本日志文件中。
  • 更改jmeter.bat DOS脚本,使其适用于任何目录
  • 用于从命令行定义nonProxyHosts的新-N选项
  • 新的-S选项,用于根据输入文件定义系统属性
  • 错误26136 - 允许配置本地地址
  • 加载测试计划时默认展开树 - 可以通过设置属性onload.expandtree = false来禁用
  • 错误11843 - URL重写器现在可以缓存会话ID
  • 计数器预处理器现在支持格式化数字
  • 添加对HEAD PUT OPTIONS TRACE和DELETE方法的支持
  • 允许更改默认HTTP实现
  • (可选)将活动线程计数(组和所有)保存到结果文件
  • 变量/函数现在可以在Listener文件名中使用
  • 新的__time()函数; 定义START.MS/START.YMD/START.HMS属性和变量
  • 将线程名称添加到树和表视图
  • 添加调试功能:什么类,调试,调试关闭
  • 非缓存计算器 - 由Table Visualiser用于减少内存占用
  • 摘要报告 - 与聚合报告类似,但占用的内存较少
  • 错误39580 - CSV数据集的回收选项
  • 错误37652 - 支持Ajp Tomcat协议
  • 错误39626 - 从文件加载SOAP / XML-RPC请求
  • 错误39652 - 允许截断AxisGraph上的标签
  • 允许使用htmlparser 1.6
  • 错误39656 - 如果提供,则始终使用SOAP操作
  • 自动包含user.properties文件中的属性
  • 添加__jexl()函数 - 评估Commons JEXL表达式
  • (可选)从system.properties中的user.properties和系统属性加载JMeter属性。
  • 错误39707 - 允许正则表达式匹配URL
  • 向Table Visualiser添加开始时间
  • HTTP采样器现在可以为任何所需的媒体类型提取嵌入式资源

Bug修复:

  • 在模块控制器中未选择模块时修复NPE
  • 当没有ResponseData存在时,在XStream中修复NPE
  • 使用Java 1.5和没有x-jars运行时删除?xml前缀
  • 错误37117 - setProperty()函数应返回“”; 添加了原始设置的可选返回
  • 修复CSV输出时间格式
  • 错误37140 - 在RegexFunction中更好地处理编码
  • 加载所有cookie,而不仅仅是第一个; 修复类强制转换异常
  • 修复默认Cookie路径名(删除页面名称)
  • 修复了resultcode属性名称
  • 错误36898 - 将编码应用于RegexExtractor
  • 添加用于保存子结果,断言,延迟,samplerData,responseHeaders,requestHeaders和encoding的属性
  • 错误37705 - 同步计时器现在在运行停止后正常工作
  • 错误37716 - 代理请求现在正确处理文件发布
  • HttpClient Sampler现在可以节省延迟
  • 在测试计划上使用JavaScript函数时修复NPE
  • 在htmlparser中修复Base Href解析
  • 错误38256 - 处理没有路径的cookie
  • 错误38391 - 累积定时器延迟时使用很长时间
  • 错误38554 - 随机函数现在使用长数字
  • 错误35224 - 允许LDAP采样器的重复属性
  • 错误38693 - Webservice采样器现在可以使用https协议
  • 错误38646 - Regex Extractor现在清除匹配失败时的旧变量
  • 错误38640 - 修复WebService Sampler池
  • 错误38474 - HTML Link Parser不遵循框架链接
  • 错误36430 - 计数器现在使用long而不是int来增加范围
  • 错误38302 - 修复XPath功能
  • 错误38748 - JDBC DataSourceElement因远程测试而失败
  • 错误38902 - 有时-1似乎不必要地返回响应代码
  • 错误38840 - 使XML Assertion线程安全
  • 错误38681 - 包含控制器现在可以在非GUI模式下工作
  • 将写入(OS,IS)实现添加到TCPClientImpl
  • Sample Result转换器将响应代码保存为“rc”。以前它保存为“rs”但用“rc”读取; 它现在也将以“rc”读取。XSL样式表现在也接受“rc”或“rs”
  • 修复计数器功能,使每个计数器实例独立(以前每个用户计数器在函数实例之间共享)
  • 修复TestBean示例以使它们正常工作
  • 修复JTidy解析器,使其不会跳过带有背景图像的body标签
  • 修复HtmlParser解析器,以便捕获所有背景图像
  • 错误39252从XML数据设置SoapSampler样本结果
  • 错误38694 - WebServiceSampler未正确设置数据编码
  • 结果收集器现在关闭侦听器读取的输入文件
  • 错误25505 - 第一次HTTP采样失败,“HTTPS主机名错误:应该是'localhost'”
  • 错误25236 - 从断言结果侦听器中删除双滚动条
  • 错误38234 - 图形侦听器除以零问题
  • 错误38824 - 阐明忽略状态的行为
  • 错误38250 - jmeter.properties“language”现在支持国家/地区后缀,zh_CN和zh_TW等
  • jmeter.properties文件现在在读取后关闭
  • 错误39533 - StatCalculator添加了错误的项目
  • 错误39599 - ConcurrentModificationException
  • HTTPSampler2现在可以正确处理Auto和Follow重定向
  • 错误29481 - 修复重新加载样本结果,因此子结果不计算两次
  • 错误30267 - 正确处理AutoRedirects
  • 错误39677 - 允许JMETER_BIN变量中的空格
  • 使用Commons HttpClient cookie解析和管理。修复cookie处理的各种问题。
  • 错误39773 - NTCredentials需要主机名

其他变化

  • 更新到HTTPClient 3.0(从2.0)
  • 更新到Commons Collections 3.1
  • 改进树视图中的请求数据格式
  • 扩展的用户文档
  • 为所有罐子添加了清单,通知和许可证
  • 将htmlparser接口解压缩到单独的jar文件中,以便可以替换解析器
  • 删除了不再需要的SQL配置GUI(或工作!)
  • HTTPSampler不再记录未找到页面的警告(404)
  • StringFromFile现在可以调用为__StringFromFile(以及_StringFromFile)
  • 更新到Commons Logging 1.1

版本2.1.1

新功能:

  • 新的包含控制器允许测试计划引用外部jmx文件
  • 添加了新的JUnitSampler以使用JUnit Test类
  • 新的Aggregate Graph监听器能够绘制聚合统计信息
  • 可以使用属性user.classpath和Test Plan元素提供其他类路径条目

Bug修复:

  • 从2.0测试计划正确填充AccessLog Sampler和JDBC测试元素
  • BSF Sampler现在从保存的测试计划中填充文件名和参数
  • 错误36500 - 在WebServiceSampler中更优雅地处理丢失的数据
  • 错误35546 - 将合并添加到右键单击菜单
  • 错误36642 - Summariser在2.1中停止工作
  • 错误36618 - CSV标题行与保存的数据不匹配
  • JMeter现在应该在JVM 1.3下运行(但不是用1.3构建)

版本2.1

新功能:

  • 新的测试脚本文件格式 - 更小,更紧凑,更易读
  • 新的样本结果文件格式 - 更小,更紧凑
  • XSchema断言
  • XML树显示
  • CSV DataSet配置项
  • 新的JDBC连接池配置元素
  • 同步定时器
  • setProperty函数
  • 保存错误响应数据
  • Ant JMeter XSLT现在可选地显示失败的响应并具有内部链接
  • 允许省略JavaScript变量名称
  • 更改了以下采样器以从采样器名称设置样品标签
  • 所有测试元素都可以作为图形图像保存到文件中
  • 错误35026 - 向代理添加RE模式匹配
  • 错误34739 - 增强常量吞吐量计时器
  • 错误25052 - 使用响应编码在响应断言中创建比较字符串
  • 新的可选图标
  • 允许通过属性文件定义图标
  • 用于2.1格式XML测试输出的新样式表
  • 将采样器,配置元素和侦听器保存为PNG
  • 增强了对WSDL处理的支持
  • 主题和队列消息的新JMS采样器
  • JMS采样器的操作方法
  • 错误35525 - 添加了西班牙语本地化
  • 错误30379 - 允许覆盖server.rmi.port
  • 增强了监听器监听器以保存计算的统计数据
  • 函数和变量现在可以在测试计划的顶层工作

Bug修复:

  • 错误34586 - XPath始终保持为/
  • BeanShellInterpreter没有正确处理null对象
  • 修复中文资源包名称
  • 如果需要CSV文件,请保存字段名称
  • 确保XML文件已关闭
  • 现在为TestBean组件显示正确的图标
  • 允许在创建菜单时缺少可选的jar
  • 更改采样器以从采样器名称设置采样标签,就像HTTP的情况一样
  • 修复各种采样器以避免在提供不完整数据时使用NPE
  • 修复Cookie管理器使用秒; 添加调试
  • 错误35067 - 使用-t选项时设置文件名
  • 不要在Proxy中用UDV替换TestElement。*属性
  • 错误35065 - 不要在文件保护程序中保存旧的扩展名
  • 错误25413 - 不要不必要地启用“重新启动”按钮
  • 错误35059 - 运行时控制器停止工作
  • 清除LDAP扩展采样器创建的任何剩余连接
  • 错误23248 - 模块控制器不记得保存和重新加载之间的东西
  • 修复中文语言环境
  • 错误29920 - 如有必要,更改默认语言环境以确保在选择英语时选择默认属性。
  • Tomcat监视器标题的错误修复
  • 修复了webservice采样器,使其与用户定义的变量一起使用
  • 修复了LDAP配置GUI元素的屏幕边框
  • 错误31184 - 确保在JDBC采样器中指定编码
  • TCP采样器 - 仅共享具有相同主机的套接字:端口详细信息; 纠正手册
  • 在JTidy和Html Parsers中提取嵌入标记的src属性

版本2.0.3

新功能:

  • XPath断言和XPath函数
  • 开关控制器
  • ForEach Controller现在可以循环遍历各组
  • 允许更改CSVRead分隔符(请参阅jmeter.properties)
  • 错误33920 - 允许其他属性文件
  • 错误33845 - 允许直接覆盖Home目录

Bug修复:

  • Regex Extractor嵌套常量没有放在正确的位置 Bug 32395
  • 如有必要,将时间重置为现在,以便延迟正常。
  • 假定调度程序中缺少开始/结束时间,而不是1970年
  • 错误28661 - 304响应没有出现在听众中
  • DOS脚本现在更好地处理不同的磁盘
  • 错误32345 - HTTP重写器无法使用HTTP请求默认值
  • 捕获运行时异常,因此一个侦听器中的错误不会影响其他侦听器
  • 错误33467 - __threadNum()错误地提取了数字
  • 错误29186,33299 - 在第二个参数中修复“ - ”的CLI解析
  • 修复CLI解析错误:-D arg1 = arg2。记录更多启动参数。
  • 修复JTidy和HTMLParser解析器以处理表单src =和link rel = stylesheet
  • JMeterThread现在将错误记录到出现在控制台上的jmeter.log中
  • 确保动态检查WhileController条件
  • 错误32790确保每次重新评估控制器条件
  • 错误30266 - 记录如何显示代理记录响应
  • 错误33921 - 合并不应更改文件名
  • 现在关闭文件可以保存更改
  • 错误33559 - 修复了运行时控制器

其他变化:

  • 为了帮助进行变量评估,JMeterThread提前设置了“采样开始”(参见jmeter.properties)
  • 错误33796 - 删除具有null /空值的cookie
  • 更好地检查JavaScript函数中的参数计数
  • 线程组现在默认为1循环而不是永久循环
  • 所有Beanshell访问现在都是通过一个类; 在运行时只需要BSH jar
  • 错误32464 - 在jmeter.bat中记录Direct Draw设置
  • 错误33919 - 增加计数器字段大小
  • 错误32252 - ForEach没有初始化计数器

版本2.0.2

新功能:

  • 而控制器
  • BeanShell初始化脚本
  • 结果保护程序可以选择仅保存失败的结果
  • 显示为HTML可以选择不下载帧和图像等
  • 现在可以一次启用/禁用/复制/粘贴多个树元素
  • 添加了__split()函数
  • 错误28699允许断言将不成功的响应 - 例如404 - 视为成功
  • Bug 29075 Regex Extractor现在可以从http响应头和正文中提取数据
  • __log()函数现在可以写入stdout和stderr
  • URL修改器现在可以选择忽略查询参数

Bug修复:

  • 如果控制器现在在第一个错误条件 Bug 31390之后工作
  • Regex GUI正在失去Header / Body复选框 错误29853的跟踪
  • 显示为HTML现在可以处理帧和相关图像
  • 右键单击打开,替换为merge
  • 修复一些拖放问题
  • 修复了foreach演示示例,因此它可以工作
  • 错误30741 SSL密码提示现在再次起作用
  • StringFromFile现在在测试结束时关闭文件; 现在开始和结束可选
  • 错误31342 SOAP Sampler标头的固定文本
  • 现在必须先停止代理才能将其删除 Bug 25145
  • Link Parser现在支持BASE href Bug 25490
  • 错误30917 Classfinder忽略重复的名称
  • 错误22820允许清除计数器值
  • 错误28230修复HTTP Sampler中的NPE,检索嵌入的资源
  • 改善StopTest的处理; 捕获并记录更多错误
  • 如果未定义第一个变量,ForEach Controller将不再运行任何样本
  • 错误28663 NPE在远程JDBC执行中
  • 错误30110 stopTest处理中的死锁
  • 错误31696使用Scheduler时,持续时间无法正常工作
  • JMeterContext现在使用ThreadLocal - 应该修复一些潜在的NPE错误

版本2.0.1

错误修复版本。TBA。

版本2.0

  • HTML解析得到改进; 现在可以选择3个解析器,现在可以检测和下载大多数嵌入式元素。
  • 现在可以通过定义JMeter属性HTTPSamper.delegateRedirects = true(默认为false)将重定向委托给URLConnection
  • 为采样器和断言等添加停止线程和停止测试方法如果采样器在处理完样本后检测到需要停止测试线程的错误,则可以调用setStopThread(true)或setStopTest(true)
  • 线程组Gui现在有一个额外的窗格来指定采样器错误后发生的事情:继续(如现在),停止线程或停止测试。这需要在某个阶段扩展到较低的水平。
  • 添加了关闭运行菜单。这与Stop相同,只是它让线程正常完成(即在下一个样本完成后)
  • 通过在运行服务器时定义属性hold_samples = true,可以将远程样本缓存到测试结束。需要做更多的工作才能从GUI控制它
  • 代理服务器可以选择跳过记录浏览器标题
  • 代理重启效果更好(停止等待守护进程完成)
  • 调度程序如果已经通过则忽略启动
  • 调度程序现在具有延迟功能
  • 添加了Summariser测试元素(主要用于非GUI)测试。这会经常向System.out和/或日志文件打印摘要统计信息(默认情况下为3分钟)。可以使用多个摘要; 样本按汇总者名称累计。
  • 额外代理服务器选项:创建禁用保持活动状态的所有采样器在样本集之间添加分隔符标记将响应断言添加到每个集合中的第一个采样器
  • 测试计划有一个评论字段
  • 帮助页面现在可以推送到后台
  • 单独的功能帮助页面
  • 新功能/修正功能
    • __property()和__P()函数
    • __log()和__logn() - 用于写入日志文件
    • _StringFromFile现在可以处理一系列文件,例如dir / file01.txt,dir / file02.txt等
    • _StringFromFile()函数现在可以使用变量或函数作为文件名
  • 新的/修正的断言
    • 响应断言现在适用于URL,它可以更好地处理空数据
    • 响应断言现在也可以匹配响应代码和响应消息
    • HTML断言使用JTidy检查格式良好的HTML
  • 如果控制器(尚未完全正常运行)
  • 交易控制器(汇总其子女的时间)
  • 新的采样器
    • 基本BSF采样器(可选)
    • BeanShell Sampler(可选,需要从www.beanshell.org下载
    • 基本TCP采样器
  • (可选)启动BeanShell服务器(允许远程访问JMeter变量和方法)

版本1.9.1

TBA

版本1.9

  • 样本结果日志文件现在可以是CSV或XML格式
  • 用于在测试计划运行期间通知迭代事件的新事件模型
  • 用于执行任意javascript语句的新Javascript函数
  • 许多GUI改进
  • 新的预处理器和后处理器取代了修改器和基于响应的修改器。
  • 兼容jdk1.3
  • JMeter函数现在是完全递归和通用的(可以使用函数作为函数的参数)
  • 集成的帮助窗口现在支持超文本链接
  • 新的随机函数
  • 新的XML断言
  • 新的LDAP采样器(alpha代码)
  • 运行JMeter的新Ant任务(在extras文件夹中)
  • 新的Java Sampler测试实现(以帮助开发人员)
  • 更有效地使用内存,加快.jmx文件的加载速度
  • 新的SOAP采样器(alpha代码)
  • Graph Results可视化工具中的新中位数计算
  • 为开发人员收益添加了默认配置元素
  • 测试运行期间的各种性能增强
  • 新的简单文件记录器,用于在测试运行期间最小化GUI开
  • 新函数:StringFromFile - 从文件中获取值
  • 新功能:CSVRead - 从文件中获取多个值
  • 现在更长的函数需要编码 - 如果特殊值是文字值,则应使用“\”进行转义
  • 新剪切/复制/粘贴功能
  • SSL测试应该以较少的用户捏造和非gui模式工作
  • Mailer Model在非gui模式下工作
  • 新的吞吐量控制器
  • 新模块控制器
  • 现在可以安排测试从特定时间到特定时间运行
  • 远程JMeter服务器可以从非gui客户端启动。此外,在gui模式下,只需单击即可启动所有远程服务器
  • ThreadGroups现在可以串行或并行运行(默认)
  • 用于覆盖属性的新命令行选项
  • 新尺寸断言

版本1.8.1

  • 错误修复发布。修复了许多错误。
  • 从测试树中删除了冗余的“Root”节点。
  • 在测试树中重新引入图标。
  • 一些重组代码以改进构建过程。
  • 查看结果树添加了将结果作为Web文档查看的选项(此时仍有错误)。
  • 聚合侦听器中的新总行(此时仍有错误)。
  • 改进JMeter的区域设置的能力的改进。
  • SSL Manager的改进。

版本1.8

  • 改进汇总报告的计算。
  • 简化应用程序日志记录
  • 新的持续时间断言。
  • 固定和改进的Mailer Visualizer。
  • HTTP Sampler恢复资源(套接字和文件句柄)的改进。
  • 改进JMeter对测试开始/停止的内部处理。
  • 修复和添加Interleave和随机控制器行为的选项。
  • 新的计数器配置元素。
  • 新用户参数配置元素。
  • 提高了文件打开的性能。
  • 函数和其他元素可以访问全局变量。
  • JMeter GUI中提供的帮助系统。
  • 可以禁用测试元素。
  • 运行JMeter(主要是)时可以更改语言/区域设置。
  • 查看结果树可以配置为仅记录错误。
  • 各种错误修复。

版本1.7.3

  • 新功能提供更多在测试运行期间动态更改请求的功能。
  • 日语和德语的新语言翻译。
  • 删除恼人的Log4J错误消息。
  • 改进了对加载JMeter 1.7版本测试计划文件(.jmx文件)的支持。
  • JMeter现在支持需要用户名/密码身份验证的代理服务器。
  • 表示测试停止的对话框不会使JMeter挂起停止测试的问题。
  • GUI可以运行多个远程JMeter服务器(修复了阻止此操作的GUI错误)。
  • 用于帮助在GUI中创建函数调用的对话框。
  • HTTP请求中的新保持活动开关表示JMeter应该或不应该使用Keep-Alive作为套接字。
  • HTTP Post请求可以在Path字段中具有GET样式参数。代理现在正确记录它们。
  • 新的用户定义的测试范围的静态变量。
  • 查看结果树现在显示更多信息,包括请求名称(与测试树中的名称匹配)以及完整请求和POST数据。
  • 删除了过时的View Results Visualizer(改为使用View Results Tree)。
  • 性能增强。
  • 内存使用增强功能。
  • 图形可视化GUI改进。
  • Mailer Visualizer的更新和修复。

版本1.7.2

  • JMeter现在在测试停止运行时通知用户。
  • HTTP代理服务器在重新直接关闭的情况下记录HTTP请求。
  • 可以指示HTTP请求遵循重定向或忽略它们。
  • 各种GUI改进。
  • 新的随机控制器。
  • 新的SOAP / XML-RPC采样器。

版本1.7.1

  • JMeter的体系结构进行了改进,以便在GUI代码和测试引擎代码之间实现更完全的分离。
  • 使用Avalon代码将测试计划保存为XML作为配置对象
  • 所有侦听器都可以将数据保存到文件并在以后加载相同的数据。

版本1.7Beta

  • 更好的XML支持特殊字符(Tushar Bhatia)
  • 非GUI功能和非GUI测试计划执行(Tushar Bhatia)
  • 从基础JMeter类中删除Swing依赖性
  • 国际化(Takashi Okamoto)
  • AllTests bug修复(neth6@atozasia.com)
  • ClassFinder错误修复(neth6@atozasia.com)
  • 新的循环控制器
  • Proxy Server从浏览器记录HTTP样本(并在用户手册中记录)
  • 多部分表格支持
  • 标头自定义的HTTP标头类
  • 从响应中提取HTTP头信息(Jamie Davidson)
  • Mailer Visualizer重新添加到JMeter
  • JMeter现在url对参数名称和值进行编码
  • 如果他们的gui没有被初始化,听众就不再给出例​​外
  • HTTPS和授权协同工作
  • 新的Http采样自动解析HTML响应以便下载图像,并包括在总时间内下载这些图像以供请求(Neth neth6@atozasia.com)
  • 可以解析来自服务器的HTTP响应以获取链接和表单,并且可以在运行时提取动态数据并将其添加到测试样本中(记录)
  • 新的升级功能(Jonathan O'Keefe)
  • 新的可视化器(Neth)
  • 功能测试的新断言

版本1.6.1

  • 修复了测试脚本的保存和加载(不再需要额外的行)
  • 可以保存和加载特殊字符(例如“&”和“<”)。
  • 可以保存和加载定时器和监听器。
  • 针对cookie的小错误修复(如果你的cookie值包含“=”,那么它就会破坏)。
  • URL可以对80以外的端口进行采样,并且可以测试HTTPS,前提是您有必要的jar(JSSE)

版本1.6 Alpha

  • 新UI
  • GUI和逻辑代码的分离
  • 新模块的新插件框架
  • 增强性能
  • 分层测试逻辑以获得更大的灵活性
  • 添加了对保存测试元素的支持
  • 使用单个客户端添加了对分布式测试的支持

版本1.5.1

  • 修复了如果标题名称不符合预期,导致cookie无法读取的错误。
  • 在发送到采样器之前克隆条目 - 防止重定位从线程中弄乱信息
  • 修复方便对话框的小错误,用于向测试样本添加参数。Bug阻止对话框中的条目出现在测试样本中。
  • 添加了xerces.jar到发行版
  • 将junit.jar添加到发行版并创建了一些测试。
  • 开始研究新框架。cvs中的新文件,但尚未影响程序。
  • 修复了根据所选计时器阻止HTTPJMeterThread延迟的错误。

 

版本1.5

  • 抽象出Sampler,SamplerController和TestSample的概念。Sampler表示理解协议的代码(例如HTTP,或FTP,RMI,SMTP等)。它实际上是与正在测试的任何东西建立连接的代码。SamplerController表示了解如何组织和运行一组测试样本的代码。它是将采样器及其测试样本绑定在一起并运行它们的原因。TestSample表示了解如何从用户收集有关特定测试的信息的代码。对于网站,它将表示URL以及与URL一起发送的任何信息。
  • UI已更新,以便更方便地输入测试样本。
  • 添加了线程组,允许用户设置多个并发运行的测试,并允许在这些测试之间共享测试样本。
  • 现在可以保存和加载测试样本。
  • ......还有许多小改动/改进......

 

Apache JMeter 1.4.1-dev

  • 在大量补丁之后清理了URLSampler代码以提高可读性。(SM)
  • Made JMeter发送一个特殊的“用户代理”标识符。(SM)
  • 修复了重定向不发送cookie和身份验证信息的问题,并通过jikes编译删除了警告。感谢Wesley Tanaka的补丁(SM)
  • 修复了URLSampler中的一个错误,该错误导致在测试URL列表和Cookie处理问题时跳过一个URL。感谢Graham Johnson的补丁(SM)
  • 修复了POST操作的问题。感谢Stephen Schaub的补丁(SM)

 

Apache JMeter 1.4 - 1999年7月11日

  • 修复了POST操作的问题。感谢Brendan Burns补丁(SM)
  • 为那些不提供它的窗口管理器添加了关于“关于”框的关闭按钮。感谢Jan-Henrik Haukeland指出它。(SM)
  • 添加了简单的Spline样本可视化工具(JPN)

 

Apache JMeter 1.3 - 1999年4月16日

  • 运行垃圾收集器并在开始采样之前运行完成,以确保每次都保持相同的状态(SM)
  • 修复了一些NullPointerExceptions(SM)
  • 添加了HTTP身份验证功能(RL)
  • 添加了窗口样本可视化器(SM)
  • 修复了命令行参数的愚蠢错误。感谢Jorge Bracer指出这一点(SM)

 

Apache JMeter 1.2 - 1999年3月17日

  • 使用JMeter(SM)集成cookie功能
  • 添加了Cookie管理器和Netscape文件解析器(SD)
  • 修复了JDK 1.1(SD)的编译错误

 

Apache JMeter 1.1 - 1999年2月24日

  • 创建了从属性文件创建URL别名的机会,以及将别名与URL序列而不是单个URL(SM)相关联的能力感谢Simon Chatfield提供了非常好的建议和代码示例。
  • 删除了TextVisualizer并将其替换为更有用的FileVisualizer(SM)
  • 添加了已知的错误列表(SM)
  • 删除了Java Apache徽标(SM)
  • 修正了几个拼写错误(SM)
  • 添加了UNIX makefile(SD)

 

Apache JMeter 1.0.1 - 1999年1月25日

  • 删除了待处理的问题文档问题(SM)
  • 修复了unix脚本(SM)
  • 添加了使用Java 2(SM)“java -jar ApacheJMeter.jar”直接运行JAR的可能性
  • 一些小更新:修复了Java 2(tm)发布后的Swing位置,许可证更新和小清理(SM)

 

Apache JMeter 1.0 - 1998年12月15日

    • 初始版本。(SM)
posted @ 2019-02-13 10:28  ╰☆ぷ天然ルo槑ご  阅读(3329)  评论(0编辑  收藏  举报