变化
5.0版
摘要
新的和值得注意的
核心改进
在许多领域,休息支持得到了改善
- 多部分/表单数据请求现在适用于PUT,DELETE ......
- 现在也可以发送带附加文件的JSON Body
- 在“参数”选项卡中输入的参数现在在正文中使用,而不是被忽略
在分布式测试中,JMeter现在自动为引线主机和端口添加线程名称前缀,这使得HTML报告中的线程计数正确无需任何其他配置,因为之前需要
XPath 2.0在一个名为XPath2提取器的新元素中得到支持,提供更简单的XML命名空间处理,最新的XPath语法和更好的性能
升级到HTTP Components 4.6最后的API已经完成,JMeter不再依赖于此库的弃用API
现在可以以更简单的方式控制循环中断和循环切换到下一次迭代。这在流控制操作和结果状态操作处理程序元素中 可用
Controller现在导出一个包含其当前索引的变量,名为__jm __ <元素的名称> __ idx。因此,例如,如果您的While Controller名为WC,那么您可以通过$ {__ jm__WC__idx}访问循环索引
脚本/调试增强功能
搜索功能已得到改进,允许您在搜索结果中迭代树,并通过下一个 / 上一个 / 替换 / 替换/查找按钮 进行必要的替换
在“查看结果树”中,请求和响应标头/正文明确分开,以便您更好地检查请求和响应。您还可以在所有选项卡中搜索特定值
录制功能已得到改进,以便在浏览器中导航时提供始终位于顶部的弹出窗口,允许您在应用程序中导航时命名事务。
您现在可以从菜单
实时报告和Web报告
报告功能已得到增强
每秒新的图表总事务数已添加到HTML Web报告中
现在可以通过sample_variables随时间绘制可用作JMeter变量的自定义指标。这些自定义指标图表将显示在“ 自定义图表”部分的“HTML报告”中
每秒点击次数图表现在考虑了嵌入式资源
在实时报告中,发送和接收的字节现在发送到后端(InfluxDB或Graphite)
功能
引入了一个新函数__threadGroupName来获取ThreadGroup名称。
不兼容的变化
- 从JMeter 5.0开始,当使用默认的HC4实现时,JMeter将在每个线程组迭代时重置HTTP状态(SSL状态+连接)。如果您不想要此行为,请设置httpclient.reset_state_on_thread_group_iteration = false
- 从JMeter 5.0开始,就上述注释而言,不推荐使用https.use.cached.ssl.context并且不再使用它。
- 从JMeter 5.0开始,当使用CSV输出时,子结果现在也将输出到CSV文件。要恢复到先前的行为设置jmeter.save.saveservice.subresults = false,请参阅 错误62470, 错误60917, 错误62550。
- 从JMeter 5.0开始,CSS / JQuery Extractor已重命名为CSS Selector Extractor
- 从JMeter 5.0开始,Test Action已重命名为Flow Control Action
改进
HTTP采样器和测试脚本记录器
- 错误62260 - 改善休息支持。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误58757 - HTTP请求:更新了HttpComponents的弃用方法以使用httpclient-4.5.X的最后一个API。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误62212 - 记录器:通过在所有窗口上方提供弹出窗口来改进UX,以便在使用浏览器时更改事务名称和暂停。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误62248 - HTTP请求:在参数选项卡中输入的参数应该在正文中使用而不是被忽略。部分基于由Blazemeter贡献的Artem Fedorov补丁。
- 错误60015 - Multipart / form-data仅适用于使用HTTPClient4的POST,而它应该用于PUT,DELETE,......由Ubik Load Pack提供(ubikloadpack.com支持)
- 错误62317 - HTTP(S)测试脚本记录器:允许将ResultSaver添加到创建的采样器
其他采样器
- Pull请求#376 - JUnitSampler将除测试用例中的断言失败之外的异常记录为警告。供稿人:Davide Angelocola(fisglobal.com上的davide.angelocola)
- 错误62244 - 将测试操作重命名为流控制操作
- 错误62302 - 将JSR223采样器移动到菜单中。由orimarko在gmail.com提供
- 错误62595 - SMTPSampler不允许配置在握手时使用的SSL / TLS协议。供稿人:Felipe Cuozzo(fmail.com的felipe.cuozzo)
控制器
- 错误62237 - While Controller:导出包含当前迭代索引的变量。供稿人:Ubik Load Pack(ubikloadpack.com支持)
听众
- 错误62195 - 保存对文件的响应:改进组件和UI。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误62209 - InfluxBackendListenerClient:如果错误代码和响应代码为空或正常,则必须发送第一个断言失败消息
- 错误62269 - 错误62269 - 查看结果树:响应和请求选项卡应包含标题和正文选项卡。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误62270 - 查看结果树:允许在请求标头,响应标头和请求正文中进行搜索。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误62276 - InfluxDBBackendListenerClient / GraphiteBackendListenerClient:将已发送和已接收的字节添加到度量标准。供稿人:Ubik Load Pack(ubikloadpack.com支持)
定时器,断言,配置,预处理器和后处理器
- 错误62320 - 计数器:引用名称属性不清楚
- 错误60991 - XPath Extractor:实现XPath 2.0。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误62593 - 将CSS / JQuery Extractor重命名为CSS Selector Extractor。由orimarko在gmail.com提供
功能
- 错误62178 - 将默认值添加到__V函数。由orimarko在gmail.com提供
- 错误62178 - 添加函数__threadGroupName函数以获取ThreadGroup名称。主要由orimarko在gmail.com贡献
- 错误62533 - 允许在函数__dateTimeConvert中使用纪元时间作为日期字符串值
- 错误62541 - 允许__jexl3,__ jexl2函数支持新语法var x; 。由orimarko在gmail.com提供
- 错误61834 - 功能助手对话框:通过显示变量并在评估之间保持可用来改进测试
国际化
报告/仪表板
- 错误62243 - 仪表板:选项“ --forceDeleteResultFile ”/“ - f ”选项删除“ -o ”选项引用的文件夹
- 错误62367 - HTML报告生成器:每秒添加图表总事务数。主要由Martha Laks(laks.martha at gmail.com)提供
- 错误62166 - 报告/仪表板:提供在JMeter仪表板中注册自定义图形和指标的功能。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误62542 - 报告/仪表板:当图表为空时显示有关过滤器的更多信息。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误62426 - 优化报告生成的性能。基于Allen(444104595,qq.com)的反馈
- 错误62550 - 修改SubResult命名策略
- 错误60917 - 使用嵌入式资源下载进行负载测试:每秒点击次数不考虑下载的资源
一般
- 错误62684 - 分布式测试:自动添加到线程名称前缀以标识引擎。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误62155 - 搜索功能:使搜索文本字段获得焦点
- 错误62156 - 搜索功能:区分匹配搜索的节点和包含与搜索匹配的子节点的节点
- 错误62234 - 搜索/替换功能:增强UX并添加替换/下一个/上一个/替换和查找功能。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误62238 - 添加切换到Current Loop的下一次迭代的功能。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误62239 - 添加打破当前循环的功能
- 错误61635 - 添加菜单以重新启动JMeter
- 错误62470 - CSV输出:当jmeter.save.saveservice.subresults = true时,启用子结果的记录。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误62473 - 设置“ saveservice_properties ”具有反直觉行为
- 错误62354 - 正确计算和使用每个用户的第二个单位(由gffagot05在gmail.com报告)
- 错误62700 - 介绍jsr223.init.file以允许在JMeter启动时调用JSR-223脚本
- 错误62128 -尝试猜测JMETER_HOME正确,当jmeter.bat从别的目录下的批处理文件调用。由logox01提供(logox01 at gmx.at)
- Pull请求#386 - 为RMI密钥库创建脚本添加参数支持。供稿人:Logan Mauzaize(t524467 at airfrance.fr)
- 错误62065 - 使用Maven工件代替嵌入式模块JAF模块
- 错误61714 - 更新实时结果文档
- 请求#382 - 在文档中纠正错误。Perze Ababa报道(perze.ababa at gmail.com>)
- 拉请求#392 - 纠正文档中的拼写错误。Aaron Levin报道
- 拉请求#379 - 改进中文翻译。由XmeterNet提供
非功能性变化
- 拉请求#358, 拉请求#365, 拉请求#366, 拉请求#375 - 更新到最新的checkstyle(v8.8)。将Checkstyle扩展为src中的文件并进行测试 ; 修复新检查的文件。根据Graham Russell(graham at ham1.co.uk)的贡献
- 错误62095 - 边界提取器中右边界参数的正确描述。供稿人:orimarko(orimarko at gmail.com)
- 错误62113 - 更新到最新的Bouncycastle(v1.60)。基于Olaf Flebbe的贡献(来自apache.org的oflebbe)
- 错误62171 - 删除.md5校验和并仅为源和二进制存档保留.sha512校验和
- 更新为groovy-all-2.4.15(来自groovy-all-2.4.13)
- 更新为asm-6.1(从6.1开始)
- 更新为tika-core和tika-parsers 1.18(从1.17开始)
- 错误62482 - 将文档同步到ForEachController的实现。基于orimarko(orimarko at gmail.com)的贡献
- 错误62529 - 更新为httpclient-4.5.6(来自httpclient 4.5.5)并更新为freemarker-2.3.28(来自freemarker-2.3.23)。基于orimarko的补丁(orimarko在gmail.com)
- 已更新至httpmime-4.5.6(来自httpmime-4.5.5)
- 更新为咖啡因-2.6.2(来自咖啡因-2.6.1)
- 已更新至cglib-nodep-3.2.7(来自cglib-nodep-3.2.6)
- 更新为commons-dbcp2-2.4.0(来自commons-dbcp2-2.2.0)
- 更新为commons-pool2-2.6.0(来自commons-pool2-2.5.0)
- 更新为httpcore-4.4.10(来自httpcore-4.4.9)
- 更新为httpcore-nio-4.4.10(来自httpcore-nio-4.4.9)
- 更新到log4j-2.11.0(来自log4j-2.10.0)
- 更新为ph-css-6.1.1(来自ph-css-6.0.0)
- 更新为ph-commons-9.1.2(来自ph-commons-9.0.0)
- 更新至rhino-1.7.10(来自+ rhino-1.7.7.2)
- 更新为commons-lang3-3.8(来自commons-lang3-3.7)
Bug修复
HTTP采样器和测试脚本记录器
- 错误62114 - HTTP(S)测试脚本记录器:客户端证书身份验证使用创建的第一个SSLManager。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误61058 - HTTP请求:添加选项httpclient4.deflate_relax_mode以避免在缩小似乎无效的流时出现“ZLIB输入流的意外结束”。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误43612 - HTTP PUT不支持请求参数。由Artem Fedorov(blazemeter.com上的artem.fedorov)实施,由BlazeMeter Ltd.提供。
- 错误60190 - 无条件地为POST添加Content-Type 。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误62462 - 提取 请求#387 - 再次授权SPNEGO中的凭据。
- 错误58807 - 仅在线程组迭代时重置SSL状态(https.use.cached.ssl.context = false已损坏)
- 错误62716 - 记录时,JMeter在使用承载令牌时从生成的标题管理器中删除授权
其他采样器
- 错误62235 - Java 9 - org.apache.jmeter.util.HostNameSetter的非法反射访问
- 错误62464 - 设置JMS发布者采样器的开始和结束时间,即使初始化失败也是如此。
- 错误62616 - FTPSampler:上传文件大小不计入sentBytes
控制器
- 错误62265 - ModuleController行为奇怪
听众
- 错误62097 - 仅在新数据到达时更新聚合报告中的JTable。这样,行的选择将保持更长时间。
- 错误62203 - Influxdb BackendListener客户端:将用户标记存储到注释和内部事务。供稿人:Sergey Batalin(mail.ru上的sergey_batalin)
- 错误62251 - TextGraphiteMetricsSender在网络错误的情况下不会使丢失的连接失效
- 错误60705 - 在移动列时修复聚合报表和朋友的标题。
定时器,断言,配置,预处理器和后处理器
- 错误61664 - HTTP授权管理器:摘要仅适用于旧版RFC 2069,未实现RFC 2617。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误62252 - HTTP标头合并逻辑与文档不对应
- 错误62554 - BoundaryExtractor:要检查的字段未重置
- 错误62553 - 即使属性“Per thread user(User)”设置为TRUE,Random元素也可能返回相同的值
- 错误62637 - 在计算同步计时器的延迟时考虑调度程序
功能
国际化
- 错误62310 - 精确吞吐量计时器标签的法语翻译
报告/仪表板
- 错误62333 - 报告仪表板 - 当一个系列不包含任何值时,图形颜色逻辑错误。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 错误62283 - 报告仪表板 - 当粒度<= 1天时,日期未在图表上正确显示
- 错误62520 - 当我们将鼠标悬停在'Latency Vs Request'图表中的点时,工具提示文本应为'Median Latency'
文档
- 错误62211 - 修复HTTP请求服务器文档。由orimarko在gmail.com提供
- 拉请求#388 - 修正错字。供稿人:Giancarlo Romeo(gmail.com的giancarloromeo)
一般
- 错误62107 - 当JM_LAUNCH包含空格时,JMeter无法在Windows下启动
- 错误62110 - 损坏的JUnit类(由于缺少依赖性)会破坏JMeter菜单。供稿人:Ubik Load Pack(ubikloadpack.com支持)
- 拉请求#377 - 文档的小修复。供稿人:Peter Doornbosch(luminis.eu的peter.doornbosch)
- 错误62124 - 录制模板:默认情况下,添加更多排除项并使用“事务名称”
- 错误62127 - 将文件名存储为String而不是FileEditor中的File。例如,在CSV数据集配置中使用时,这将阻止将文件名从Unix样式路径分隔符转换为Windows样式。
- 错误56150 - 滚动菜单项时保持索引正确。
- 错误62240 - 如果不能正确初始化,则SampleMonitor实现是TestBean
- 错误62295 - 在复制多个元素的选择时更正元素的顺序。
- 错误62397 - 使用JSON Path Tester时,不要在逗号处断行
- 错误62281 - 防止MapProperty中的NPE。由belugabehr修补(dam6923 at gmail.com)
- 错误62457 - 在用户手册中,UUID函数的示例是错误的。供稿人:helppass(hotmail.com上的onegaicimasu)
- 错误 62478 - 在GUI函数帮助器中构造函数字符串时,在参数中转义逗号。报告由blue414(blue414在163.com)
- 错误62463 - 当为分布式运行设置client.rmi.localport时,修复端口的使用。
- 错误62545 - 在RenderAsJSON中缩进JSON时,不要使用冒号作为“tab”字符串的一部分。
- 部分 错误62637 -避免整数溢出具有非常大的价值在交易时TimerService#adjustDelay
- 错误62683 - 当用户打开完全无效的测试计划时,错误对话框没有文本。
谢谢
我们感谢上面的bug和改进部分中提到的所有贡献者:
- 格雷厄姆罗素(graham at ham1.co.uk)
- 在gmail.com的orimarko
- Davide Angelocola(fisglobal.com上的davide.angelocola)
- Ubik Load Pack
- Olaf Flebbe(来自apache.org的)
- Peter Doornbosch(luminis.eu的peter.doornbosch)
- logox01(logox01 at gmx.at)
- Sergey Batalin(mail.ru的sergey_batalin)
- XMeter
- Imane Ankhila(在ahlane.net的iankhila)
- jffagot05(gmail.com的jffagot05)
- Perze Ababa(perze.ababa at gmail.com)
- Martha Laks(来自gmail.com的laks.martha)
- Logan Mauzaize(t524467 at airfrance.fr)
- belugabehr(在gmail.com的dam6923)
- Giancarlo Romeo(gmail.com的giancarloromeo)
- helppass(hotmail.com上的onegaicimasu)
- blue414(blue414 at 163.com)
- 亚伦莱文
- 艾伦(qq.com的444104595)
- Felipe Cuozzo(fmail.com的felipe.cuozzo)
- bangnab(gros上的ambrosetti.nicola)
我们也感谢帮助我们改进JMeter的bug记者。
如果我们遗漏了其他人,请道歉。
已知问题和解决方法
- 查看结果树可能会冻结渲染大响应,特别是如果此响应没有空格,请参阅 错误60816。这是因为在使用没有空格的长文本调用JEditorPane.setText()或JTextArea.setText()时,标识的Java Bug UI卡住了。
- 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错误无法解析行/列属性中的“ px ”单位。请参阅Bug JDK-8031109 修复方法是使用JDK9 b65或更高版本。
- 使用键盘进行JTable选择(SHIFT + 向上/向下)在Mac OSX上完全无法使用Java 7。这是由于已知的Java错误JDK-8025126 修复是使用JDK 8 b132或更高版本。
以上摘自官网文章,此处仅做记录