以前的变化历史

此页面仅详细介绍了在以前版本中所做的更改。
当前更改在Changes中有详细说明。

更改部分按时间顺序从顶部(最近)到底部(最近)

版本 5.4.2

概括

此版本是针对漏洞 CVE-2021-44228 的修复版本:Apache Log4j2 JNDI 功能无法防止攻击者控制的 LDAP 和其他 JNDI 相关端点。

新的和值得注意的

用户体验改进

不兼容的更改

改进

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

其他采样器

控制器

听众

计时器、断言、配置、前处理器和后处理器

职能

I18N

报告/仪表板

一般的

非功能性变化

  • 将 Apache log4j2 更新到 2.16.0(从 2.13.3)。

Bug修复

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

其他采样器

控制器

听众

计时器、断言、配置、前处理器和后处理器

职能

I18N

报告/仪表板

文档

一般的

谢谢

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

我们还要感谢帮助我们改进 JMeter 的错误报告者。

如果我们遗漏了其他任何人,我们深表歉意。

已知问题和解决方法

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 JMeter,它将为您创建注册表项,然后您可以以普通用户身份重新启动 JMeter,您将不再有警告。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
    如果您在具有 SSL 证书(其本身或其信任链中的 SSL 证书之一)的网站上运行 HTTPS 请求,该证书具有使用 MD2 的签名算法(如md2WithRSAEncryption)或大小低于 1024 位的 SSL 证书。此错误与 Java 8+ 中增加的安全性有关。
    要允许您执行 HTTPS 请求,您可以通过编辑 Java jdk.certpath.disabledAlgorithms属性来降低 Java 安装的安全性。根据您的情况,删除 MD2 值或大小约束。
    此属性在此文件中:
    JAVA_HOME/jre/lib/security/java.security
    有关详细信息,请参阅 错误 56357
  • 在 Mac OSX 下,聚合图会由于数字的镜像效应而显示错误的值。这是由于一个已知的 Java 错误,请参阅错误JDK-8065373 修复是使用 JDK8_u45 或更高版本。
  • 查看结果树可能无法在 HTML 渲染器下显示某些 HTML 代码,请参阅 错误 54586。这是由于一个已知的 Java 错误导致无法解析行/列属性中的“ px ”单位。请参阅错误JDK-8031109 修复是使用 JDK9 b65 或更高版本。
  • 带有键盘的 JTable 选择(SHIFT  +  up/down)在 Mac OSX 上的 Java 7 中完全不可用。这是由于一个已知的 Java 错误JDK-8025126 修复是使用 JDK 8 b132 或更高版本。
  • 自 Java 11 起,JavaScript 实现Nashorn 已被弃用。如果您使用基于 Nashorn 的 JavaScript,Java 将发出以下弃用警告。
    Warning: Nashorn engine is planned to be removed from a future JDK release
    
    要使这些警告静音,请将-Dnashorn.args=--no-deprecation-warning添加到您的 Java 参数中。这可以通过设置环境变量JVM_ARGS来实现
    export JVM_ARGS="-Dnashorn.args=--no-deprecation-warning"
    
  • 在 Java 15 中,JavaScript 实现Nashorn 已被删除。要重新添加兼容 JSR-223 的 JavaScript 引擎,您有两种选择:
    使用 Mozilla Rhino
    rhino-engine-1.7.13.jar复制到$JMETER_HOME/lib/ext中。
    使用 OpenJDK Nashorn
    OpenJDK Nashorn 实现作为一个模块提供。要使用它,您必须下载它并将其添加到模块路径中。下面概述了下载 15.0 版及其依赖项并设置模块路径的 hacky 方法:
    mkdir lib/modules
    pushd lib/modules
    wget https://repo1.maven.org/maven2/org/openjdk/nashorn/nashorn-core/15.0/nashorn-core-15.0.jar
    wget https://repo1.maven.org/maven2/org/ow2/asm/asm/9.0/asm-9.0.jar
    wget https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar
    wget https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.0/asm-util-9.0.jar
    wget https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar
    wget https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar
    popd
    export JVM_ARGS="--modulepath $PWD/lib/modules"
    ./bin/jmeter
          

版本 5.4.1

概括

新的和值得注意的

用户体验改进

不兼容的更改

  • LAF 更改恢复后重新启动,它已在 JMeter 5.3 中删除

改进

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

其他采样器

控制器

听众

计时器、断言、配置、前处理器和后处理器

职能

I18N

报告/仪表板

一般的

非功能性变化

  • 将 SaxonHE 更新到 9.9.1-8(从 9.9.1-7)
  • 将 asm 更新到 9.0(从 7.3.1)
  • 将 bouncycastle 更新至 1.67(从 1.66)
  • 将咖啡因更新到 2.8.8(从 2.8.0)
  • 将 commons-codec 更新到 1.15(从 1.14)
  • 将 commons-io 更新到 2.8.0(从 2.7)
  • 将 commons-net 更新到 3.7.2(从 3.7)
  • 将杰克逊更新到 2.10.5(从 2.10.3)
  • 将 junit 更新到 4.13.1(从 4.13)
  • 将 ph-commons 更新到 9.5.1(从 9.4.1)
  • 将 ph-css 更新到 6.2.3(从 6.2.1)
  • 将 groovy 更新到 3.0.7(从 3.0.5)
  • 将 xstream 更新到 1.4.15(从 1.4.14)

Bug修复

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

  • 错误 64955 - 重新加载时未重置密钥库密码
  • 错误 65002 - HTTP(S) 测试脚本记录器创建无效的基本身份验证 URL。由 Ubik 加载包 (https://ubikloadpack.com) 提供
  • 错误 65004 - HTTP(S) 测试脚本记录器计算错误的 HTTP 请求中断应用程序。由 Ubik 加载包 (https://ubikloadpack.com) 提供
  • 错误 64543 - 在 MacOSX 上,Darklaf- IntelliJ 主题在 javax.swing.ToolTipManager.initiateToolTip 中引发 NPE
  • 错误 65024 - 发送带参数的 mime 类型会引发 IllegalArgumentException
  • 错误 65029 - 启用下载嵌入式 URL 时,更努力地正确猜测小程序的 URL

其他采样器

  • 错误 65034 -在未设置 EOM 字节时忽略BinaryTCPClientImpl上的SocketTimeoutException 。由提交 c190641e4f0474a34a366a72364b0a8dd25bfc81 引入的回归修复了 Bug 52104 - 。该错误是关于处理等待 EOM 的情况。

控制器

听众

  • 错误 64821 - 导入 XML 格式的 jtl 文件时,子采样器将被重命名
  • 错误 65052 - view.results.tree.renderers_order属性 中缺少 XPath2 测试器和 JSON JMESPath 测试器

计时器、断言、配置、前处理器和后处理器

职能

I18N

报告/仪表板

文档

  • 错误 64960 - 更改线程组文档中的调度程序参考。由 Ori Marko 提供
  • 错误 65006 - 完整的 HTTP 请求默认值元素的插图(图 4.4)包含误导性信息

一般的

  • 错误 64957 - 导入示例测试计划时,JMeter 显示 NullPointerException
  • 错误 64961 - Darklaf:在 Windows 7 上,BasicEditorPaneUI.cleanDisplayProperties 中的 NPE 与 Darklaf Intellij
  • 错误 64963 - 空白注释工具提示可见
  • 错误 64969 - RemoteJMeterEngineImpl#rexit 不会在退出时取消导出 RemoteJMeterEngineImpl。由 luo_isaiah 在 qq.com 提供
  • 错误 64984 - Darklaf LAF:选择测试元素在 Windows 上的某些屏幕分辨率下不起作用。在 Jannis Weis 的帮助下
  • 错误 65008 - 不考虑从 PostProcessor 调用的 SampleResult.setIgnore()
  • 错误 64993 - Daklaf LAF:菜单导航无法使用键盘快捷键。在 Jannis Weis 的帮助下
  • 错误 65013 - 未正确导入带有引用参数的 POST multipart/form-data cURL 代码

谢谢

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

我们还要感谢帮助我们改进 JMeter 的错误报告者。

如果我们遗漏了其他任何人,我们深表歉意。

已知问题和解决方法

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 JMeter,它将为您创建注册表项,然后您可以以普通用户身份重新启动 JMeter,您将不再有警告。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
    如果您在具有 SSL 证书(其本身或其信任链中的 SSL 证书之一)的网站上运行 HTTPS 请求,该证书具有使用 MD2 的签名算法(如md2WithRSAEncryption)或大小低于 1024 位的 SSL 证书。此错误与 Java 8+ 中增加的安全性有关。
    要允许您执行 HTTPS 请求,您可以通过编辑 Java jdk.certpath.disabledAlgorithms属性来降低 Java 安装的安全性。根据您的情况,删除 MD2 值或大小约束。
    此属性在此文件中:
    JAVA_HOME/jre/lib/security/java.security
    有关详细信息,请参阅 错误 56357
  • 在 Mac OSX 下,聚合图会由于数字的镜像效应而显示错误的值。这是由于一个已知的 Java 错误,请参阅错误JDK-8065373 修复是使用 JDK8_u45 或更高版本。
  • 查看结果树可能无法在 HTML 渲染器下显示某些 HTML 代码,请参阅 错误 54586。这是由于一个已知的 Java 错误导致无法解析行/列属性中的“ px ”单位。请参阅错误JDK-8031109 修复是使用 JDK9 b65 或更高版本。
  • 带有键盘的 JTable 选择(SHIFT  +  up/down)在 Mac OSX 上的 Java 7 中完全不可用。这是由于一个已知的 Java 错误JDK-8025126 修复是使用 JDK 8 b132 或更高版本。
  • 自 Java 11 起,JavaScript 实现Nashorn 已被弃用。如果您使用基于 Nashorn 的 JavaScript,Java 将发出以下弃用警告。
    Warning: Nashorn engine is planned to be removed from a future JDK release
    
    要使这些警告静音,请将-Dnashorn.args=--no-deprecation-warning添加到您的 Java 参数中。这可以通过设置环境变量JVM_ARGS来实现
    export JVM_ARGS="-Dnashorn.args=--no-deprecation-warning"
    
  • 在 Java 15 中,JavaScript 实现Nashorn 已被删除。要重新添加兼容 JSR-223 的 JavaScript 引擎,您有两种选择:
    使用 Mozilla Rhino
    rhino-engine-1.7.13.jar复制到$JMETER_HOME/lib/ext中。
    使用 OpenJDK Nashorn
    OpenJDK Nashorn 实现作为一个模块提供。要使用它,您必须下载它并将其添加到模块路径中。下面概述了下载 15.0 版及其依赖项并设置模块路径的 hacky 方法:
    mkdir lib/modules
    pushd lib/modules
    wget https://repo1.maven.org/maven2/org/openjdk/nashorn/nashorn-core/15.0/nashorn-core-15.0.jar
    wget https://repo1.maven.org/maven2/org/ow2/asm/asm/9.0/asm-9.0.jar
    wget https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar
    wget https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.0/asm-util-9.0.jar
    wget https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar
    wget https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar
    popd
    export JVM_ARGS="--modulepath $PWD/lib/modules"
    ./bin/jmeter
          

版本 5.4

概括

新的和值得注意的

用户体验改进

错误 62179 - 错误 64658 - 启动屏幕现在是应用程序模式而不是系统模式,因此在 JMeter 启动时它不会阻止其他应用程序。

不兼容的更改

  • 从某些类中删除 LogKit 记录器功能。这旨在完全删除 LoggingManager类(自 JMeter 3.2 起已弃用),但由于 jmeter-plugins 依赖于它,因此 LoggingManager和我们的LogKit -adapter 将保留在此版本中(但仍不推荐使用)。

改进

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

其他采样器

  • 错误 64555 - 通过 JMSProperties 设置 JMSType 标头字段。丹尼尔·范登奥登供稿

控制器

听众

  • 拉取请求 #544 - 添加将“原始”结果发送到 InfluxDB 的 BackendListener。由 Graham Russell 供稿(graham at ham1.co.uk)

计时器、断言、配置、前处理器和后处理器

职能

I18N

报告/仪表板

  • 错误 64824 - 仪表板/HTML 报告:将KO重命名为FAIL
  • 错误 64936 - 将 generate_report_ui.generation_timeout 增加到 5 分钟以处理大型性能测试

一般的

  • 错误 64446 - 更好地在行尾解析带有反斜杠的 curl 命令,并支持带有数据参数的PUT方法
  • 拉取请求 #599 - 确保添加到工具栏的所有按钮的行为/外观一致。詹尼斯·韦斯供稿
  • 错误 64581 - 允许SampleResult#setIgnore影响采样器错误的行为
  • 错误 64680 - 启动时回退到 JMETER_HOME以检测 JMeter 的安装目录
  • 错误 64787 - 拉取请求 #630 - 添加韩语翻译。由 Woonsan Ko 供稿(woonsan at apache.org)
  • 错误 64776 - 添加安装附加 SecurityProvider 的功能。由 Timo 提供(Leefers.eu 的 ASF.Software.Timo)

非功能性变化

  • 构建系统从 Gradle 升级到 6.7(从 6.6)
  • 拉取请求 #594 - 将 neo4j-java-driver 更新到 4.2.0(从 1.7.5)
  • 错误 64454 - 更精确的错误消息,当在 JDBC 采样器中找不到数据源值时
  • 错误 64440 -即使在 GUI 模式下也 通过JMeterUtils#reportToUser报告日志异常
  • 拉取请求 #591 - 从 travis 文件中删除不推荐使用的 sudo 标志。邓黎明 (liming.d.pro at gmail.com)
  • 将 Darklaf 更新到 2.4.10(从 2.1.1)
  • 将 Groovy 更新到 3.0.5(从 3.0.3)
  • 拉取请求 #596 - 在文档中使用中性词
  • 错误 63809 - 拉取请求 #557 - 将 commons-collections 更新到 4.4(从 3.2.2),同时保留旧 commons-collections 3.x 的 jar 以保持兼容性
  • 拉取请求 #598 - 添加另一个选项以在构建页面中创建差异。由 jmetertea (github.com/jmetertea) 提供
  • 拉取请求 #609 - 使用较新的 API 进行 darklaf 安装。詹尼斯·维斯
  • 拉取请求 #612 - 更正README.md中的拼写错误。基于 Pooja Chandak 的补丁(poojachandak002 at gmail.com)
  • 拉取请求 #613 - 添加 Darklaf 属性的文档。詹尼斯·维斯
  • 将 SpotBugs 更新到 4.1.2(从 4.1.1),将 spotbugs-gradle-plugin 升级到 4.5.0(从 2.0.0)
  • 将 org.sonarqube Gradle 插件更新到 3.0(从 2.7.1 开始)
  • 将 Apache ActiveMQ 更新到 5.16.0(从 5.15.11)
  • 将 Bouncycastle 更新至 1.66(从 1.64)
  • 将 Apache commons-io 更新到 2.7(从 2.6)
  • 将 Apache commons-lang3 更新到 3.11(从 3.10)
  • 将 Apache commons-net 更新到 3.7(从 3.6)
  • 将 Apache commons-pool2 更新到 2.9.0(从 2.8.0)
  • 将 Apache commons-text 更新到 1.9(从 1.8)
  • 将 equalsverifier 更新到 3.4.2(来自 3.1.13)
  • 将 junit5 更新到 5.6.2(从 5.6.0)
  • 将 Apache log4j2 更新到 2.13.3(从 2.13.1)
  • 将 rsyntaxtextarea 更新到 3.1.1(从 3.1.0)
  • 将 JUnit5 更新到 5.7.0(从 5.6.2)
  • 将 Rhino 更新到 1.7.13(从 1.7.12)
  • 将 XStream 更新到 1.4.14(从 1.4.14.1)
  • 将 Apache commons-dbcp2 更新到 2.8.0(从 2.7.0)
  • 拉取请求 #635 - 更正文档中的一些图像比例。补丁由 Vincent Daburon 提供(vdaburon at gmail.com)

Bug修复

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

  • 错误 64479 - 回归:HTTP(s) 脚本记录器阻止在非 GUI 模式下正确关闭
  • 错误 64653 - 通过代理将 Javascript 和 JSON 排除在解析表单中的字符集之外

其他采样器

控制器

  • 错误 64795 - 生成摘要报告可能不会在配置的时间间隔 ( summariser.interval ) 内输出摘要行:澄清文档

听众

计时器、断言、配置、前处理器和后处理器

  • 错误 64638 - JSON JMESPath 断言/JSON 断言:打开 GUI 显示一个水平滚动条,不断滑动
  • 错误 64915 - 选中“使用 Cache-Control/Expires 标头”时 JMeter 缓存管理器行为不端

职能

I18N

报告/仪表板

  • 错误 64547 - 报告/仪表板:确保图表每秒响应代码不会被 SampleResult 中的空响应代码破坏。由 Ubik 加载包 (https://ubikloadpack.com) 提供
  • 错误 64617 - HTML 报告:在图表中响应时间百分比随时间变化,第 90、95、99 个百分位实际上对应于 0.90、0.95 和 0.99 个百分位
  • 错误 64553 - 使用事务控制器时,发送字节数和接收字节数在 influxdb(BackendListener) 中显示为 0
  • 错误 64624 - 在报告错误消息中对 JSON 字符串使用不那么激进的转义

文档

  • 拉取请求 #571 - 使用代理脚本记录器时生成的 CA 的正确记录名称。更大公关的一部分。Vincent Daburon(gmail.com 上的 vdaburon)
  • 更改镜像服务器的特殊标头功能的文档以反映实现。

一般的

  • 错误 64448 - 右键单击​​上下文菜单中的用户定义变量重复
  • 错误 64499 - 如果线程未停止,则在jmeterengine.stopfail.system.exit=true 时退出 JMeter会花费太多时间
  • 错误 64510 - Darklaf- IntelliJ 主题在 MacOS 上的 DarkTreeUI 中抛出 NPE
  • 错误 64594 - 无法在使用 PowerTableModel 的组件中输入变量值而不是数值(影响 3rd 方插件,如吞吐量整形计时器)
  • 错误 64475 - 菜单生成 HTML 报告:当报告生成因超时而失败时,错误消息不明确。由 Ubik 加载包 (https://ubikloadpack.com) 提供
  • 错误 64627 - 通过 JMeterContext 的 API 方法对控制流进行编程操作不像 5.0 之前那样工作。由 Till Neunast 提供
  • 错误 64647 - 发行版中缺少 groovy-dateutil
  • 错误 64640 - Darklaf:com.github.weisj.darklaf.ui.DarkPopupFactory.getPopupType 的 NPE(DarkPopupFactory.java:96)
  • 错误 64641 - Darklaf:com.github.weisj.darklaf.ui.tree.DarkTreeUI.isChildOfSelectionPath(DarkTreeUI.java:603) 的 NPE ~[darklaf-core-2.4.2-SNAPSHOT.jar:2.4.2-SNAPSHOT]
  • 错误 64453 - Darklaf:将测试计划另存为新文件夹失败
  • 错误 64625 - Darklaf:尝试在浏览中选择文件夹会导致错误弹出窗口和堆栈跟踪
  • 错误 64711 - Textarea 颜色在黑暗模式下效果不佳。詹尼斯·韦斯供稿
  • 错误 64935 - 损坏的插件类不应阻止 JMeter 启动

谢谢

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

  • 迈克尔·魏德曼 (https://github.com/michaelweidmann)
  • 邓黎明 (liming.d.pro at gmail.com)
  • jmetertea (https://github.com/jmetertea)
  • Ubik 加载包
  • 詹尼斯·维斯
  • 丹尼尔·范登奥登
  • 直到 Neunast (https://github.com/tilln)
  • Pooja Chandak (poojachandak002 at gmail.com)
  • Vincent Daburon(gmail.com 上的 vdaburon)
  • Woonsan Ko (woonsan at apache.org)
  • Timo(Leefers.eu 的 ASF.Software.Timo)
  • 格雷厄姆·拉塞尔(ham1.co.uk 的格雷厄姆)

我们还要感谢帮助我们改进 JMeter 的错误报告者。

  • 三森博吉(mis.dev 上的三森)

如果我们遗漏了其他任何人,我们深表歉意。

已知问题和解决方法

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 JMeter,它将为您创建注册表项,然后您可以以普通用户身份重新启动 JMeter,您将不再有警告。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
    如果您在具有 SSL 证书(其本身或其信任链中的 SSL 证书之一)的网站上运行 HTTPS 请求,该证书具有使用 MD2 的签名算法(如md2WithRSAEncryption)或大小低于 1024 位的 SSL 证书。此错误与 Java 8+ 中增加的安全性有关。
    要允许您执行 HTTPS 请求,您可以通过编辑 Java jdk.certpath.disabledAlgorithms属性来降低 Java 安装的安全性。根据您的情况,删除 MD2 值或大小约束。
    此属性在此文件中:
    JAVA_HOME/jre/lib/security/java.security
    有关详细信息,请参阅 错误 56357
  • 在 Mac OSX 下,聚合图会由于数字的镜像效应而显示错误的值。这是由于一个已知的 Java 错误,请参阅错误JDK-8065373 修复是使用 JDK8_u45 或更高版本。
  • 查看结果树可能无法在 HTML 渲染器下显示某些 HTML 代码,请参阅 错误 54586。这是由于一个已知的 Java 错误导致无法解析行/列属性中的“ px ”单位。请参阅错误JDK-8031109 修复是使用 JDK9 b65 或更高版本。
  • 带有键盘的 JTable 选择(SHIFT  +  up/down)在 Mac OSX 上的 Java 7 中完全不可用。这是由于一个已知的 Java 错误JDK-8025126 修复是使用 JDK 8 b132 或更高版本。
  • 自 Java 11 起,JavaScript 实现Nashorn 已被弃用。如果您使用基于 Nashorn 的 JavaScript,Java 将发出以下弃用警告。
    Warning: Nashorn engine is planned to be removed from a future JDK release
    
    要使这些警告静音,请将-Dnashorn.args=--no-deprecation-warning添加到您的 Java 参数中。这可以通过设置环境变量JVM_ARGS来实现
    export JVM_ARGS="-Dnashorn.args=--no-deprecation-warning"
    
  • 在 Java 15 中,JavaScript 实现Nashorn 已被删除。要重新添加兼容 JSR-223 的 JavaScript 引擎,您有两种选择:
    使用 Mozilla Rhino
    rhino-engine-1.7.13.jar复制到$JMETER_HOME/lib/ext中。
    使用 OpenJDK Nashorn
    OpenJDK Nashorn 实现作为一个模块提供。要使用它,您必须下载它并将其添加到模块路径中。下面概述了下载 15.0 版及其依赖项并设置模块路径的 hacky 方法:
    mkdir lib/modules
    pushd lib/modules
    wget https://repo1.maven.org/maven2/org/openjdk/nashorn/nashorn-core/15.0/nashorn-core-15.0.jar
    wget https://repo1.maven.org/maven2/org/ow2/asm/asm/9.0/asm-9.0.jar
    wget https://repo1.maven.org/maven2/org/ow2/asm/asm-commons/9.0/asm-commons-9.0.jar
    wget https://repo1.maven.org/maven2/org/ow2/asm/asm-util/9.0/asm-util-9.0.jar
    wget https://repo1.maven.org/maven2/org/ow2/asm/asm-tree/9.0/asm-tree-9.0.jar
    wget https://repo1.maven.org/maven2/org/ow2/asm/asm-analysis/9.0/asm-analysis-9.0.jar
    popd
    export JVM_ARGS="--modulepath $PWD/lib/modules"
    ./bin/jmeter
          

5.3 版

概括

新的和值得注意的

用户体验改进

添加了改进几个组件的Darklaf外观。

树缩进级别更容易遵循:

具有 Darklaf Darcula 主题的 JMeter 树
具有 Darklaf Darcula 主题的 JMeter 树
带有 Darklaf IntelliJ 主题的 JMeter 树
带有 Darklaf IntelliJ 主题的 JMeter 树

新的外观和感觉主题。灯光:IntellJ、日晒灯、高对比度灯。黑暗:OneDark、Solarized Dark、HighContrast Dark。

当树中的一个元素被禁用时,它的所有后代都显示为灰色。例如,虽然 Contoller在下面的树中被禁用,所以它的孩子是灰色的。这纯粹是 UI 更改,行为没有改变。

当控制器被禁用时,它的孩子是灰色的
当控制器被禁用时,它的孩子是灰色的

即使在更改节点选择的情况下也会显示树上下文菜单。以前弹出窗口确实消失了,需要先选择一个节点,然后才能启动弹出窗口。

现在无需重新启动即可更新外观

使用CTRL  +  ALT  + 滚轮缩放字体。以前的快捷键是CTRL  +  SHIFT  +  wheel,但是,它与水平滚动冲突。

应用内缩放更加一致(例如,有时并非所有标签甚至面板都被缩放)。例如:日志查看器、JSR223 代码编辑器以前未使用放大/缩小功能进行缩放

树上下文菜单显示为整行,而不是仅用于标签

撤消和重做可编辑字段的支持。击键是CTRL  +  Z / CTRL  +  SHIFT  +  ZCMD  +  Z / CMD  +  SHIFT  +  Z取决于操作系统。撤消是在字段级别的基础上实现的(每个字段都有自己的历史),当树选择发生变化时,历史就会失效。

在选项菜单中标记当前选择的语言。

在选项菜单中标记当前选择的日志级别。

许多测试元素 UI 的返工(JUnit 请求、ForEach 控制器、If 控制器、吞吐量控制器、WhileController、计数器配置、XPath2 提取器、函数帮助器对话框、搜索弹出窗口、JMS 元素)

不兼容的更改

  • httpclient4.time_to_live的默认值已从2000修改为60000,这意味着 HTTP 连接的寿命将比以前更长。这对连接创建和 SSL 握手有影响,请参阅 Bug 64289
  • Groovy 3 的更新( Pull request #590 -)可能会破坏您测试的一些旧 Groovy 代码。查看Groovy 3 的更新说明

改进

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

其他采样器

  • 错误 64288 - JUnit 请求:改进 UX
  • 错误 64407 - 改进 JMS Publisher UX。由 Ubik 加载包 (https://ubikloadpack.com) 提供
  • 错误 64408 - 改进 JMS 订阅者 UX。由 Ubik 加载包 (https://ubikloadpack.com) 提供

控制器

听众

  • 错误 64150 - 查看结果树:允许在测试人员中编辑响应数据
  • 错误 63822 - 查看结果树:在切换渲染器模式时保持拆分窗格的位置

计时器、断言、配置、前处理器和后处理器

职能

I18N

  • 错误 64102 - 为工具菜单添加中文翻译。刘 XP 供稿(新浪网 liu_xp2003)

报告/仪表板

  • 错误 64380 - 向仪表板添加“中位数”字段并使响应时间百分位字段支持浮点数。由 Keith Mo 提供(https://github.com/keithmork)
  • 错误 64378 - 如果插件已注册图表并且不再出现在类路径中,则 HTML 报告生成不应失败,而是发出警告

一般的

非功能性变化

  • 构建系统从 Gradle 升级到 6.3(从 6.1),现在可以使用 Java 14 进行构建
  • 错误 63963 - 拉取请求 #546 - 将 jackson 更新到 2.10.3(从 2.9.10)
  • 错误 64120 - 将 jsoup 更新到 1.13.1(从 1.12.1)
  • 错误 63809 - 将 commons-dbcp2 更新到 2.7.0(从 2.5.0)
  • 将 Apache ActiveMQ 更新到 5.15.11(从 5.15.8)
  • 将 bouncycastle 更新至 1.64(从 1.60)
  • 将 asm 更新到 7.3.1(从 7.1)
  • 将 Apache commons-codec 更新到 1.14(从 1.13)
  • 将 Apache commons-pool 更新到 2.8.0(从 2.7.0)
  • 将 equalsverifier 更新到 3.1.9(来自 3.1.12)
  • 将 Apache Groovy 更新到 2.4.18(从 2.4.16)
  • 将 hsqldb 更新到 2.5.0(从 2.4.1)
  • 将 hamcrest 更新到 2.2(从 2.1)
  • 将 Apache httpclient 和 httpmime 更新到 4.5.12(从 4.5.10)
  • 将 Apache httpcore 和 httpcore-nio 更新到 4.4.13(从 4.4.12)
  • 将 Apache Tika 更新到 1.24.1(从 1.22)
  • 将 jmespath 更新到 0.5.0(从 0.3.0)
  • 将 Apache log4j 更新到 2.13.1(从 2.12.1)
  • 将 junit4 更新到 4.13(从 4.12)
  • 将 junit5 更新到 5.6.0(从 5.5.1)
  • 将 slf4j 更新到 1.7.30(从 1.7.28)
  • 将 ph-commons 更新到 9.4.1(从 9.3.7)
  • 将 ph-css 更新到 6.2.2(从 6.2.0)
  • 将 rsyntaxtextarea 更新到 3.1.0(从 3.0.4)
  • 将 rhino 更新到 1.7.12(从 1.7.11)
  • 将 SaxonHE 更新到 9.9.1-7(从 9.9.1-5)
  • 将 cglib 更新到 3.2.12(从 3.2.9)
  • 将 commons-lang3 更新到 3.10(从 3.9)
  • 将 freemarker 更新到 2.3.30(从 2.3.29)
  • 将 hamcrest-date 更新为 2.0.7(从 2.0.4)
  • 将 equalsverifier 更新到 3.1.13(来自 3.1.12)
  • 将 xstream 更新到 1.4.11.1(从 1.4.11)
  • 拉取请求 #559 - 在 TrustAllSSLSocketFactory 的源中添加一条注释,说明信任所有人是不安全的。基于来自 YYTVicky 的 PR(yytvicky at github)
  • 拉取请求 #588 - 添加有关使用 InfluxDB v2 获取实时结果的文档。基于 Jakub Bednář 的 PR(gmail.com 上的 jakub.bednar)

Bug修复

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

  • 错误 64400 - 使将记录的样本分类到事务控制器中更可预测
  • 错误 64267 - 禁用抢先式身份验证时,HTTP 采样器不会自动响应基本身份验证质询

其他采样器

控制器

听众

计时器、断言、配置、前处理器和后处理器

  • 错误 64091 - 使用低测试持续时间时,精确的吞吐量计时器可能会产生更少的样本
  • 错误 64142 - 由于缺少信息,测试计划中存在的 DebugPostProcessor 会在报告中中断 ActiveThread
  • 错误 64196 - 检查断言时更深入地递归到子采样器
  • 错误 64196 - 递归到AbstractScopedTestElement#getSampleList的 sampleResults
  • 错误 64381 - PreciseThroughputTimer:终止时,日志消息包含负值

职能

I18N

报告/仪表板

  • 错误 64059 - 响应时间百分比随时间变化,无法更改百分比

文档

  • 拉取请求 #547 - 正确的日志级别文档。由 jmetertea 提供
  • 拉取请求 #548 - 更正文档中的拼写错误。由 jmetertea 提供
  • 错误 64022 - 更正“忽略子控制器块”的中文翻译。由 yangxiaofei77 提供(yangxiaofei77 at gmail.com)
  • 拉取请求 #552 - 修复client.rmi.localport端口分配描述。由 anant-93 提供
  • 拉取请求 #543 - 澄清关于附加到文件的默认值的__StringToFile函数的文档?范围。由 Ori Marko 提供
  • 错误 64302 - 正确链接到可打印文档和 BeanShell 最佳实践中的 JMeter API 以及所有文档中的 JavaFX 实现网站。2477441814举报(2477441814在qq.com)

一般的

  • 错误 63945 - 文件系统更改后打开文件时出现 NPE
  • 错误 64034 - 如果JAVA_HOME路径 中有空格,Shell 脚本将失败。由 ray7219 提供(hotmail.com 上的 ray7219)
  • 错误 63856 -使用事务控制器时在父样本上 设置connectTime
  • 错误 64227 - 在 Windows 上加载模板时出错
  • TestPlan UI:如果用户单击取消,则跳过将条目添加到类路径

谢谢

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

  • 詹尼斯·维斯
  • Stefan Seide (stefan at trilobyte-se.de)
  • 米特茶
  • 射线7219
  • 塞巴斯蒂安·博加 (sebastian.boga at endava.com)
  • 刘XP(新浪网的liu_xp2003)
  • anant-93 (https://github.com/anant-93)
  • Ori Marko(gmail.com 上的orimarko)
  • 基思莫(https://github.com/keithmork)
  • drivera-armedia (https://github.com/drivera-armedia)
  • Ubik 加载包
  • Jakub Bednář (jakub.bednar at gmail.com)

我们还要感谢帮助我们改进 JMeter 的错误报告者。

  • 迈克尔·麦克德莫特 (mcdermott.michaelj at gmail.com)
  • yangxiaofei77 (yangxiaofei77 at gmail.com)
  • Markus Wolf(t-systems.com 上的 wolfm)
  • 皮埃尔·阿斯特鲁克 (pierre.astruc at evertest.com)
  • YYTVicky(github 上的 yytvicky)
  • 2477441814 QQ.com

如果我们遗漏了其他任何人,我们深表歉意。

已知问题和解决方法

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 JMeter,它将为您创建注册表项,然后您可以以普通用户身份重新启动 JMeter,您将不再有警告。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
    如果您在具有 SSL 证书(其本身或其信任链中的 SSL 证书之一)的网站上运行 HTTPS 请求,该证书具有使用 MD2 的签名算法(如md2WithRSAEncryption)或大小低于 1024 位的 SSL 证书。此错误与 Java 8+ 中增加的安全性有关。
    要允许您执行 HTTPS 请求,您可以通过编辑 Java jdk.certpath.disabledAlgorithms属性来降低 Java 安装的安全性。根据您的情况,删除 MD2 值或大小约束。
    此属性在此文件中:
    JAVA_HOME/jre/lib/security/java.security
    有关详细信息,请参阅 错误 56357
  • 在 Mac OSX 下,聚合图会由于数字的镜像效应而显示错误的值。这是由于一个已知的 Java 错误,请参阅错误JDK-8065373 修复是使用 JDK8_u45 或更高版本。
  • 查看结果树可能无法在 HTML 渲染器下显示某些 HTML 代码,请参阅 错误 54586。这是由于一个已知的 Java 错误导致无法解析行/列属性中的“ px ”单位。请参阅错误JDK-8031109 修复是使用 JDK9 b65 或更高版本。
  • 带有键盘的 JTable 选择(SHIFT  +  up/down)在 Mac OSX 上的 Java 7 中完全不可用。这是由于一个已知的 Java 错误JDK-8025126 修复是使用 JDK 8 b132 或更高版本。
  • 自 Java 11 起,JavaScript 实现Nashorn 已被弃用。如果您使用基于 Nashorn 的 JavaScript,Java 将发出以下弃用警告。
    Warning: Nashorn engine is planned to be removed from a future JDK release
    
    要使这些警告静音,请将-Dnashorn.args=--no-deprecation-warning添加到您的 Java 参数中。这可以通过设置环境变量JVM_ARGS来实现
    export JVM_ARGS="-Dnashorn.args=--no-deprecation-warning"
    

版本 5.2.1

概括

新的和值得注意的

此版本是一个小错误修复版本。请查看更改历史记录页面 以查看版本 5.2 的最新发行说明。

不兼容的更改

改进

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

其他采样器

  • 错误 63926 - JDBC 连接配置:添加设置连接属性的功能

控制器

听众

计时器、断言、配置、前处理器和后处理器

职能

I18N

报告/仪表板

一般的

非功能性变化

Bug修复

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

其他采样器

控制器

听众

  • 错误 63906 - 在故障转移测试期间用于 InfluxDB 后端侦听器的 NPE

计时器、断言、配置、前处理器和后处理器

职能

I18N

报告/仪表板

文档

一般的

  • 错误 63910 - 已发布的 5.2 版本中损坏的 maven poms
  • 错误 63911 - ApacheJMeter_config.jar 内容已更改(bin 移动到运行和丢失文件)

谢谢

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

我们还要感谢帮助我们改进 JMeter 的错误报告者。

如果我们遗漏了其他任何人,我们深表歉意。

已知问题和解决方法

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 JMeter,它将为您创建注册表项,然后您可以以普通用户身份重新启动 JMeter,您将不再有警告。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
    如果您在具有 SSL 证书(其本身或其信任链中的 SSL 证书之一)的网站上运行 HTTPS 请求,该证书具有使用 MD2 的签名算法(如md2WithRSAEncryption)或大小低于 1024 位的 SSL 证书。此错误与 Java 8+ 中增加的安全性有关。
    要允许您执行 HTTPS 请求,您可以通过编辑 Java jdk.certpath.disabledAlgorithms属性来降低 Java 安装的安全性。根据您的情况,删除 MD2 值或大小约束。
    此属性在此文件中:
    JAVA_HOME/jre/lib/security/java.security
    有关详细信息,请参阅 错误 56357
  • 在 Mac OSX 下,聚合图会由于数字的镜像效应而显示错误的值。这是由于一个已知的 Java 错误,请参阅错误JDK-8065373 修复是使用 JDK8_u45 或更高版本。
  • 查看结果树可能无法在 HTML 渲染器下显示某些 HTML 代码,请参阅 错误 54586。这是由于一个已知的 Java 错误导致无法解析行/列属性中的“ px ”单位。请参阅错误JDK-8031109 修复是使用 JDK9 b65 或更高版本。
  • 带有键盘的 JTable 选择(SHIFT  +  up/down)在 Mac OSX 上的 Java 7 中完全不可用。这是由于一个已知的 Java 错误JDK-8025126 修复是使用 JDK 8 b132 或更高版本。
  • 自 Java 11 起,JavaScript 实现Nashorn 已被弃用。如果您使用基于 Nashorn 的 JavaScript,Java 将发出以下弃用警告。
    Warning: Nashorn engine is planned to be removed from a future JDK release
    
    要使这些警告静音,请将-Dnashorn.args=--no-deprecation-warning添加到您的 Java 参数中。这可以通过设置环境变量JVM_ARGS来实现
    export JVM_ARGS="-Dnashorn.args=--no-deprecation-warning"
    

版本 5.2

概括

新的和值得注意的

此版本是主要版本。请查看更改历史记录页面 以查看版本 5.1.1 的最新发行说明。

不兼容的更改

  • HTTP(S) 测试脚本记录器现在在名称末尾附加数字,而之前它在开头添加它。请参阅 错误 63450
  • 将 XPath 断言与返回布尔值的 XPath 表达式一起使用时,如果没有匹配项则为 True无效并始终返回 true,请参阅 错误 63455
  • XML 解析现在拒绝不安全的 XML,这对以下特性有影响:
    • XML断言
    • XMLSchemAssertion
    • XPath 函数
    • XPath 1 & 2 提取器
    • XPath 1 & 2 断言

改进

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

  • 错误 63450 - HTTP(S) 测试脚本记录器:将数字放在末尾而不是开头
  • 错误 63790 - 嵌入式资源下载:通过删除源位置优化 CSS 解析

其他采样器

  • 错误 63406 - JDBC 连接配置:用于预初始化以初始化连接池的新选项。由 Franz Schwab 提供(exasol.com 上的franz.schwab)
  • 错误 63561 - JDBC 请求:只允许获取一定数量的行。由 Franz Schwab 提供(exasol.com 上的franz.schwab)
  • 错误 63801 - 添加对 Neo4j 数据库的 Bolt 协议支持。由 GraphAware (www.graphaware.com) 提供

控制器

  • 错误 63565 - 如果控制器:在使用“将条件解释为变量表达式?”时,JMeter 在耐力运行期间出现 GC 问题?未选中 => 改进文档

听众

  • 错误 63720 - BackendListener: InfluxDBBackendListenerClient 添加对 InfluxDB 2 的支持。由 Jakub Bednář (https://github.com/bednar) 提供
  • 错误 63770 - 查看结果树:添加 JMESPath 测试器。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)

计时器、断言、配置、前处理器和后处理器

  • 错误 62863 - 启用 PKCS11 密钥库以与 KeyStore Manager 一起使用。基于 Clifford Harms 的补丁(clifford.harms at gmail.com)。
  • 拉取请求 #457 - 通过使用 ThreadLocalRandom,PoissonRandomTimer 的性能略有提升。基于夏莉的补丁。
  • 错误 62787 - 支持 XPath2 的新XPath2 断言比XPath 断言具有更好的性能。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 63643 - 跳过通过FileServer 打开的文件的 BOM 并使用 BOM 来检测字符编码,如果没有明确给出。Havlicek Honza 报道(havlicek.honza at gmail.com)
  • 错误 63727 - 新的JMESPath 提取器元素可简化使用JMESPath技术从 JSON 中提取的过程。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 63763 - 新的JMESPath 断言元素可简化使用JMESPath技术对 JSON 的断言。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 63775 - 允许边界提取器接受空边界

职能

  • 错误 63219 - 新函数__StringToFile将字符串保存/附加到文件中。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • AtomicInteger用于__counter而不是我们自己的同步

I18N

报告/仪表板

  • 错误 63471 - 用于生成报告的StringConverter应该忽略数字周围的空白。

一般的

  • 错误 63396 - JSR223 测试元素:参数描述具有误导性,脚本相同
  • 错误 63480 - XPathAssertion 和 XPathAssertion2:提高来自变量的输入的测试覆盖率。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 63452 - 工具/从 cURL 导入:完全覆盖在 JMeter 用例中有效的所有命令行选项。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 63419 - 工具/从 cURL 导入:添加从文件导入一组 cURL 命令的功能。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 63760 - JOrphanUtils:添加随机字母数字密码生成器
  • 错误 63355 - 查看结果树:浏览器视图选项自 Java 11 起不可用,记录如何使其可用,请参阅
  • 错误 62861 - 线程组:提供配置新迭代是新用户还是同一用户的能力(将应用于 Cookie 管理器、缓存管理器和 httpclient.reset_state_on_thread_group_iteration)。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 63616 - 修复 Javadoc:
    JMeterContext#getThreadNum()
    从 0 而不是 1 开始。由 Ori Marko 供稿(orimarko at gmail.com)
  • 更新到 httpclient/httpmime 4.5.10(从 4.5.7)
  • 更新到 dnsjava 2.1.9(从 2.1.8)
  • 更新到 jsoup 1.12.1(来自 1.11.3)
  • 更新到 rsyntaxtextarea 3.0.4(来自 3.0.2)
  • 更新到咖啡因 2.8.0(从 2.6.2)
  • 更新到 commons-codec 1.13(从 1.11)
  • 更新到 commons-lang3 3.9(从 3.8.1)
  • 更新到 commons-pool 2.7(从 2.6)
  • 更新到 commons-text 1.8(从 1.6)
  • 更新到 freemarker 2.3.29(从 2.3.28)
  • 更新到 httpcore/httpcore-nio 4.12(从 4.11)
  • 更新到 jodd 5.0.13(从 5.0.6)
  • 更新到 log4j 2.12.1(从 2.11.1)
  • 更新到 ph-commons 9.3.7(来自 9.2.1)
  • 更新到 ph-css 6.2.0(来自 6.1.1)
  • 更新至 Mozilla Rhino 1.7.11(来自 1.7.10)
  • 更新到 Saxon-HE 9.9.1-5(从 9.9.1-1)
  • 更新到 slf4j 1.7.28(从 1.7.25)
  • 更新到 tika-core 和 tika-parsers 1.22(来自 1.21)
  • 将 jackson-annotations、jackson-core 和 jackson-databind 更新到 2.9.10(从 2.9.8)

非功能性变化

  • 从颠覆迁移到Git
  • 错误 63630 - 将构建从 Apache Ant 切换到 Gradle
  • 错误 63529 - 为 org.apache.jorphan.util.JOrphanUtils 添加更多单元测试。供稿人:John Bergqvist(diffblue.com 上的 John.Bergqvist)
  • 更新到最新的检查样式(8.22 版)
  • 清理CompareAssertion和其他位置的代码。基于 Graham Russell 的补丁(graham at ham1.co.uk)
  • 拉取请求 #491 - 增加 Graphite 指标覆盖率。由 Graham Russell 供稿(graham at ham1.co.uk)
  • 拉取请求 #520 - 用 lambda 表达式替换匿名类。由 Graham Russell 供稿(graham at ham1.co.uk)。
  • 拉取请求 #524 - 从 JUnit 4 迁移到 JUnit 5。由 Graham Russell 供稿(graham at ham1.co.uk)。

Bug修复

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

  • 错误 63298 - 带有编码 URL 的 HTTP 请求以解码格式发送
  • 错误 63364 - 设置subresults.disable_renaming=true时,子结果仍使用其父 SampleLabel 重命名,而它们不应该。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 63129 - JMeter 在首次提交页面时无法识别编码。部分基于 Naveen Nandwani (naveen.nandwani at india.nec.com) 的分析和公关
  • 错误 62672 - HTTP 请求在使用具有身份验证的代理时发送双重请求。基于 Artem Fedorov 的补丁(blazemeter.com 上的 artem.fedorov)并由 BlazeMeter 提供。
  • 错误 63574 - 如果Cache-Control标头丢失 ,HTTP 缓存管理器不会缓存资源。

其他采样器

  • 错误 63442 - 在 AccessLogSamplerBeanInfo 中减少对LogParser实现的扫描。
  • 错误 63563 - LdapExtSampler:当采样器因与 NamingException 不同的异常而失败时,不会生成 SampleResult
  • 错误 63469 - JMSPublisher:jms.client.ClientPool#clearClient 中的竞争条件

控制器

听众

  • 错误 63319 - 选择 90% 或 95% 列时聚合图中的ArrayIndexOutOfBoundsException
  • 错误 63423 - 聚合图中的表行选择经常丢失
  • 错误 63347 - 查看结果树:搜索字段非常小,以至于在 Windows 7 上甚至看不到单个字符
  • 错误 63433 - ListenerNotifier:如果文件名为 null,则在 Listener NullPointerException 中检测到问题。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 63674 - 启用 DataStripping 时,剥离结果,其层次结构中的子结果更深

计时器、断言、配置、前处理器和后处理器

  • 错误 63455 - XPath 断言:如果没有匹配项则为真,如果 XPath 表达式返回布尔值,则不起作用。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)

职能

I18N

报告/仪表板

文档

  • 错误 63513 - 将 MariaDB 示例添加到 JDBC 文档。由 Ori Marko 提供(gmail.com 上的orimarko)
  • 错误 63484 - 添加注释以使用 Apache Velocity 作为 JSR223 脚本语言。基于 Ori Marko 的补丁(orimarko at gmail.com)
  • 错误 63519 - 拉取请求 #471 -在 JMeter 教程中 使用正确的方法getLabelResource() 。供稿:孙涛(hotmail.com 的蜂鸣器>)

一般的

  • 错误 63394 - 当测试执行失败(由于缺少测试计划或其他原因)时,JMeter 应该以非零值失败。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 63464 - image/svg+xml 被错误地视为二进制
  • 错误 63490 - 在调度程序持续时间结束时,许多采样器同时执行
  • 拉取请求 #480 拉取请求 #482 - 修复评论和日志消息中的一些拼写错误。基于 Anass Benomar 的补丁(anassbenomar at gmail.com)
  • 错误 63751 - 更正中文翻译中的错字。王金亮报道(126网wjl31802)
  • 错误 63723 - 分布式测试:JMeter 控制器节点结束分布式测试,尽管一些线程仍然处于活动状态
  • 错误 63614 - 分布式测试:无法在负载测试结束时生成仪表板报告
  • 错误 63862 - 搜索对话框/在视图结果树中搜索:如果检查了正则表达式并且正则表达式无效,则未捕获异常
  • 错误 63793 - 修复不安全的 XML 解析

谢谢

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

  • Clifford Harms (clifford.harms at gmail.com)
  • Ubik 加载包
  • 夏莉
  • Naveen Nandwani (naveen.nandwani at india.nec.com)
  • Artem Fedorov(blazemeter.com 上的 artem.fedorov)
  • Ori Marko(gmail.com 上的orimarko)
  • 孙涛(hotmail.com 上的新人)
  • John Bergqvist(diffblue.com 上的 John.Bergqvist)
  • Franz Schwab(exasol.com 上的franz.schwab)
  • 格雷厄姆·拉塞尔(ham1.co.uk 的格雷厄姆)
  • Anass Benomar (anassbenomar at gmail.com)
  • 雅库布·贝德纳日
  • 帕斯卡舒马赫(apache.org 上的帕斯卡舒马赫)
  • 图形感知

我们还要感谢帮助我们改进 JMeter 的错误报告者。

  • Sergiy Iampol (sergiy.iampol at playtech.com)
  • 布赖恩·塔利 (brian.tully at acquia.com)
  • Amer Ghazal(gmail.com 上的 amerghazal)
  • Stefan Seide (stefan at trilobyte-se.de)
  • Havlicek Honza(gmail.com 上的 havlicek.honza)
  • 皮埃尔·阿斯特鲁克 (pierre.astruc at evertest.com)
  • 王金亮(wjl31802 at 126.com)

如果我们遗漏了其他任何人,我们深表歉意。

已知问题和解决方法

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 JMeter,它将为您创建注册表项,然后您可以以普通用户身份重新启动 JMeter,您将不再有警告。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
    如果您在具有 SSL 证书(其本身或其信任链中的 SSL 证书之一)的网站上运行 HTTPS 请求,该证书具有使用 MD2 的签名算法(如md2WithRSAEncryption)或大小低于 1024 位的 SSL 证书。此错误与 Java 8+ 中增加的安全性有关。
    要允许您执行 HTTPS 请求,您可以通过编辑 Java jdk.certpath.disabledAlgorithms属性来降低 Java 安装的安全性。根据您的情况,删除 MD2 值或大小约束。
    此属性在此文件中:
    JAVA_HOME/jre/lib/security/java.security
    有关详细信息,请参阅 错误 56357
  • 在 Mac OSX 下,聚合图会由于数字的镜像效应而显示错误的值。这是由于一个已知的 Java 错误,请参阅错误JDK-8065373 修复是使用 JDK8_u45 或更高版本。
  • 查看结果树可能无法在 HTML 渲染器下显示某些 HTML 代码,请参阅 错误 54586。这是由于一个已知的 Java 错误导致无法解析行/列属性中的“ px ”单位。请参阅错误JDK-8031109 修复是使用 JDK9 b65 或更高版本。
  • 带有键盘的 JTable 选择(SHIFT  +  up/down)在 Mac OSX 上的 Java 7 中完全不可用。这是由于一个已知的 Java 错误JDK-8025126 修复是使用 JDK 8 b132 或更高版本。
  • 自 Java 11 起,JavaScript 实现Nashorn 已被弃用。如果您使用基于 Nashorn 的 JavaScript,Java 将发出以下弃用警告。
    Warning: Nashorn engine is planned to be removed from a future JDK release
    
    要使这些警告静音,请将-Dnashorn.args=--no-deprecation-warning添加到您的 Java 参数中。这可以通过设置环境变量JVM_ARGS来实现
    export JVM_ARGS="-Dnashorn.args=--no-deprecation-warning"
    

版本 5.1.1

概括

新的和值得注意的

此版本主要是一个错误修复版本。请查看更改历史记录页面 以查看版本 5.1 的最新主要行为。

实时报告和网络报告

一个新的菜单条目已添加到工具菜单中。它允许从以前的 CSV/JTL 文件生成结果报告。


不兼容的更改

改进

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

  • 错误 62977 - 允许在没有默认 User-Agent 标头的情况下发送 HTTP 请求

其他采样器

  • 错误 63185 - LDAP 相关元素:添加选项以隐式信任 SSL/TLS 连接/禁用主机名验证。基于 Brian Wolfe(gmail.com 上的 wolfebrian2120)的贡献

控制器

听众

计时器、断言、配置、前处理器和后处理器

  • 错误 63178 - CSS 选择器提取器:提高基于 JODD (JoddExtractor) 的实现的性能

职能

I18N

报告/仪表板

  • 错误 59896 - 报告/仪表板:添加一个菜单项以从 CSV 文件按需生成报告。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)

一般的

  • 拉取请求 #444 - 更新到最新的 Spock v1.2(原为 1.0)。由 Graham Russell 供稿(graham at ham1.co.uk)
  • 拉取请求 #446 - 提高单元测试的可读性和 Spock 的使用。由 Graham Russell 供稿(graham at ham1.co.uk)

非功能性变化

  • 错误 63203 - 单元测试:将 @Deprecated 替换为@VisibleForTesting用于针对单元测试公开的方法/构造函数/类
  • 拉取请求 #449 - 重构和测试 ResponseTimePercentilesOverTimeGraphConsumer。由 Graham Russell 供稿(graham at ham1.co.uk)
  • 拉取请求 #450 - 抽象图消费者改进。由 Graham Russell 供稿(graham at ham1.co.uk)
  • 拉取请求 #451 - 改进一些单元测试和类。由 Graham Russell 供稿(graham at ham1.co.uk)

Bug修复

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

其他采样器

  • 错误 63202 - JMS Publisher:ObjectMessageRenderer 创建具有未初始化安全性的 XStream 实例

控制器

听众

  • 错误 63204 - RenderAsJSON#prettyJSONJSONParser#parse无法返回 JSONValue

计时器、断言、配置、前处理器和后处理器

  • 错误 62446 - 所需字段中的计数器文档错误。由 gmail.com 的 orimarko 提供
  • 错误 62327 - TestPlan:在库表中,如果修改了路径并保存了计划,则重新加载文件时修改会丢失

职能

  • 错误 63241 - 如果从非测试线程调用__threadGroupName会导致 NullPointerException

I18N

报告/仪表板

  • 错误 63198 - 响应时间与请求和延迟与请求图表与吞吐量不一致。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)

文档

一般的

  • 错误 63201 - SearchTreeDialog 消失在主 JFrame 后面。由 Benoit Vatan 提供(gmail.com 上的 benoit.vatan)
  • 错误 63220 - 函数助手对话框导出事务以供报告从 cURL 导入消失为主 JFrame。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 63207 - java.lang.NullPointerException:使用代理选项运行 JMeter 5.1 时为 null
  • 错误 58183 - 如果线程需要时间开始导致线程继续启动后加速时间,则可能不遵守加速

谢谢

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

  • Ubik 加载包
  • Benoit Vatan (benoit.vatan at gmail.com)
  • 格雷厄姆·拉塞尔(ham1.co.uk 的格雷厄姆)
  • 布赖恩·沃尔夫 (wolfebrian2120 at gmail.com)
  • gmail.com 上的 orimarko

我们还要感谢帮助我们改进 JMeter 的错误报告者。

如果我们遗漏了其他任何人,我们深表歉意。

已知问题和解决方法

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 JMeter,它将为您创建注册表项,然后您可以以普通用户身份重新启动 JMeter,您将不再有警告。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
    如果您在具有 SSL 证书(其本身或其信任链中的 SSL 证书之一)的网站上运行 HTTPS 请求,该证书具有使用 MD2 的签名算法(如md2WithRSAEncryption)或大小低于 1024 位的 SSL 证书。此错误与 Java 8+ 中增加的安全性有关。
    要允许您执行 HTTPS 请求,您可以通过编辑 Java jdk.certpath.disabledAlgorithms属性来降低 Java 安装的安全性。根据您的情况,删除 MD2 值或大小约束。
    此属性在此文件中:
    JAVA_HOME/jre/lib/security/java.security
    有关详细信息,请参阅 错误 56357
  • 在 Mac OSX 下,聚合图会由于数字的镜像效应而显示错误的值。这是由于一个已知的 Java 错误,请参阅错误JDK-8065373 修复是使用 JDK8_u45 或更高版本。
  • 查看结果树可能无法在 HTML 渲染器下显示某些 HTML 代码,请参阅 错误 54586。这是由于一个已知的 Java 错误导致无法解析行/列属性中的“ px ”单位。请参阅错误JDK-8031109 修复是使用 JDK9 b65 或更高版本。
  • 带有键盘的 JTable 选择(SHIFT  +  up/down)在 Mac OSX 上的 Java 7 中完全不可用。这是由于一个已知的 Java 错误JDK-8025126 修复是使用 JDK 8 b132 或更高版本。

5.1 版

概括

新的和值得注意的

核心改进

JDBC 测试已得到改进,可以设置初始化 SQL 语句并添加与不支持 QueryTimeout 的 JDBC 驱动程序的兼容性

  • 已实施各种错误修复,例如在使用 HTTPS 通过 HTTP(S) 测试脚本记录器记录请求时收集正确的标头
  • 在 5.0 版中,JMeter 已更改为使用自定义命名策略重命名 Sub 结果( 错误 62550)。这种变化对于功能测试来说可能很烦人,一个新的属性 subresults.disable_renaming=true已经被引入,以便在需要时恢复到以前的行为。另一种方法是在测试计划中检查功能测试模式,请参阅 错误 63055

用户体验改进

模板可以提供测试计划生成时填写的参数, 录制模板使用此功能

引入了一个新的工具菜单来收集这些条目,这些条目用于 JMeter 的一般用途,例如:

  • 函数助手对话框
  • 导出交易以供报告
  • 生成原理图视图,以 HTML 形式提供测试计划的概述
  • 从 cURL 导入,它允许您通过导入 cURL 命令来创建或更新您的测试计划
  • 编译 JSR223 测试元素
  • 创建堆转储
  • 创建线程转储

测试计划

能够从 cURL 命令创建测试计划。

脚本/调试增强

  • 用于编译所有 JSR223 元素的菜单项现在在工具菜单中可用

实时报告和网络报告

  • 使用-e-g选项时,现在会生成一个包含负载测试统计摘要的 JSON 文件。
  • 已修改随时间绘制的百分位数计算算法以针对每个时间段重新启动
  • 通过-f命令行选项报告文件夹不存在或不为空时的用户友好行为

不兼容的更改

  • 在HTML 报告的Response Time Percentiles Over Time(成功响应)图表中,在此版本之前,每个时隙的百分位数计算以前一个时隙的百分位数数据为基础。从这个版本开始,每个时隙都是独立的。请参阅 错误 62883
  • ClientJMeterEngine#rsetProperties签名已更改为使用HashMap<String,String>而不是 Properties,请参阅 Bug 63034
  • 引入了新的菜单项工具,帮助菜单中的一些菜单项现在位于此新菜单项下。请参阅 错误 63094
  • slf4j-ext已从库(lib 文件夹)和 JMeter pom 中删除。默认情况下不使用它,由于 CVE-2018-8088 和包含此问题修复的稳定版本不可用,我们决定将其删除。如果仍然需要,可以将其添加到 lib 文件夹中。

改进

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

  • 错误 62840 - HTTP 请求:添加选项httpclient4.gzip_relax_mode以避免在解压缩看似无效的流时出错
  • 错误 63025 - 增强 HTTP 请求的搜索和替换功能以包括端口和协议字段。Mohamed Ibrahim 的初始代码修复(gmail.com 上的 rollno748)

其他采样器

  • 错误 62934 - 为不支持 QueryTimeout 的 JDBC 驱动程序添加兼容性
  • 错误 62935 - 将自定义mail.*属性传递给 Mail Reader Sampler。由 Artem Fedorov(blazemeter.com 上的 artem.fedorov)实施并由 BlazeMeter 贡献。
  • 错误 63055 - 当测试以功能模式或属性subresults.disable_renaming=true 运行时,不要重命名 SampleResult 标签。由 Artem Fedorov(blazemeter.com 上的 artem.fedorov)实施并由 BlazeMeter 贡献。

控制器

听众

计时器、断言、配置、前处理器和后处理器

  • 错误 62766 - 密钥库配置:我们应该默认加载所有别名。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 62832 - JDBC 连接配置:能够设置初始化 SQL 语句。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)

职能

  • 错误 63037 - 使用CSVRead时,也在脚本基本路径中搜索文件。

I18N

报告/仪表板

  • 错误 62883 - 报告/仪表板:更改计算响应时间百分比随时间变化的百分比(成功响应)图表的方式
  • 错误 63060 - 报告生成器:生成器应该只检查它生成的文件夹/文件,并且只删除那些
  • 错误 63059 - 创建一个新的 JsonExporter,它将为 HTML Dashboard Statistics 表计算的数据内容导出为 JSON。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 63081 -仅通过命令行选项-g使用生成时,命令行选项-f不会删除报告文件夹。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)

一般的

  • 错误 62959 - 能够从 cURL 命令创建测试计划。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 拉取请求 #394 -在FieldStringEditor中允许值。基于 Mingun 的补丁(mail.ru 上的 alexander_sergey)
  • 错误 62826 - 更改 LAF 时,如果用户单击“是”弹出窗口,则重新启动 JMeter
  • 错误 62257 - 拉取请求 #401 - 展开/折叠快捷键-小键盘上的(减号)不起作用。由 Ori Marko 提供(gmail.com 上的orimarko)
  • 错误 62752 - 添加到文档:ctx.getThreadNum()从零开始,而${__threadNum}从一开始
  • 拉取请求 #411 -在org.apache.jmeter.save.SaveService中 使用SHA-1而不是SHA1。由 Paco 供稿(daocloud.io 上的 paco.xu)
  • 错误 62914 - 在线程组 UI 中添加关于测试持续时间的提示
  • 错误 62925 - 将 ThreadDump 支持添加到 JMeter 非 GUI
  • 错误 62870 - 模板:添加提供参数的功能。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 62829 - 允许为 HTTP 请求采样器、高级选项卡和命令行选项指定代理服务器方案。由 Hitesh Patel 供稿(hitesh.h.patel at gmail.com)
  • 错误 59633 - 菜单将测试计划另存为另存为测试片段将选择另存为 ...应在文件对话框中使用新文件名
  • 错误 61486 - 使 jmeter-server 和非 GUI 模式无头运行
  • 错误 63093 - 添加编译 JSR223 测试元素菜单项。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 63094 - 引入新的工具菜单
  • 错误 63101 - 提出一个菜单项以生成测试计划的可读概述
  • 错误 63144 - 查看侦听器树需要很长时间才能打开包含大量文本的响应。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)

非功能性变化

  • 拉取请求 #408 - 当未找到RenderInBrowser组件的 JavaFX 时,记录信息性消息而不是堆栈跟踪。
  • 拉取请求 #412 - 更新中文翻译。刘士 (liushilive at outlook.com) 供稿。
  • 拉取请求 #406 - 添加关于如何将安全管理器与 JMeter 一起使用的简短段落。
  • 错误 62893 - 使用 commons-text(1.6 版)中的 StringEscapeUtils,而不是 commons-lang3 中已弃用的那些。
  • 错误 62972 - 拉取请求 #435 - 替换对已弃用方法Class#newInstance的调用。
  • 错误 63034 - ClientJMeterEngine:使 rsetProperties 使用HashMap<String,String>而不是 Properties
  • 更新到 httpclient/httpmime 4.5.7(来自 4.5.6)
  • 更新到 httpcore 4.4.11(从 4.4.10)
  • 更新到 httpcore-nio 4.4.11(从 4.4.10)
  • 更新到 tika-core 和 tika-parsers 1.20(来自 1.18)
  • 更新到 commons-dbcp2-2.5.0(来自 commons-dbcp2-2.4.0)
  • 更新到 commons-lang3-3.8.1(来自 commons-lang3-3.8)
  • 更新到 groovy-all-2.4.16(来自 groovy-all-2.4.15)
  • 更新到 httpasyncclient-4.1.4.jar(从 4.1.3 开始)
  • 更新到 jsoup-1.11.3(来自 1.11.2)
  • 更新到 cglib-nodep-3.2.9(来自 cglib-nodep-3.2.7)
  • 更新到 ph-commons-9.2.1(来自 ph-commons-9.1.2)
  • 更新到 log4j-2.11.1(来自 log4j-2.11.0)
  • 更新到 xmlgraphics-commons 2.3(来自 2.2)
  • 错误 63033 - 更新到 Saxon-HE 9.9.1-1(从 9.8.0-12)。感谢 Saxonica
  • 更新到 xstream 1.4.11(来自 1.4.10)
  • 更新到 jodd 5.0.6(从 4.1.4)
  • 更新到 asm-7.0(从 6.1)
  • 更新到 ActiveMQ 5.15.8(从 5.5.16 开始)
  • 更新到 rsyntaxtextarea-3.0.2(来自 2.6.1)
  • 更新到 apache-rat-0.13(从 0.12 开始)
  • 更新到 jacocoant-0.8.3(从 0.8.2)
  • 更新到 hsqldb-2.4.1(从 2.4.0)
  • 更新到 mina-core-2.0.19(从 2.0.16 开始)
  • 错误 62818 - 将 xercesImpl 更新到 2.12.0(从 2.11.0)。Stefan Seide 报道(stefan at trilobyte-se.de)
  • 错误 62744 - 将 jquery 升级到版本 3.3.1,jquery-ui 到 1.12.1,引导到 3.3.7
  • 错误 62821 - 拉取请求 #405 - 使用 SHA-512 校验和而不是 MD5 来验证 jar 下载
  • 错误 63053 - 从用户文档中删除对从未实现的内部结构的引用。由 U. Poblotzki 报道(u.poblotzki at thalia.de)
  • 错误 63082 - 拉取请求 #437 - 将 utf-8 用于源中的属性文件
  • 错误 63177 - 在文档中将非 GUI 模式重命名为 CLI 模式

Bug修复

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

  • 错误 62785 - 拉取请求 #400 - 应用于 HTTP 采样器上传功能中使用的文件名的搜索路径不完整。由 Artem Fedorov(blazemeter.com 上的 artem.fedorov)实施并由 BlazeMeter 贡献。
  • 错误 62842 - HTTP(S) 测试脚本记录器:不支持 Brotli 压缩导致“内容编码错误
  • 错误 60424 - Hessian Burlap 应用程序:JMeter 在0x0A之前自动 插入0x0D(http 二进制发布数据)
  • 错误 62940 -当我们基于 IP 地址生成证书时, 使用不同的cn和类型的 SAN 扩展。
  • 错误 62916 - 如果在运行分布式测试后开始记录,HTTP 测试脚本记录器将失败并出现 UnsupportedOperationException
  • 错误 62987 - HTTP(S) 测试脚本记录器下的 TestBean 元素不起作用。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 63015 - 在第一次失败请求后通过代理 HTTP(S) 测试脚本记录器运行请求时出现异常 NoHttpResponseException。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 62852 - 使用代理时 HTTP 请求标头缺少信息。感谢 Oleg Kalnichevski (olegk at apache.org)
  • 错误 63048 - JMeter 不检索“快捷方式图标”或“图标”类型的链接资源。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)

其他采样器

  • 错误 62775 - 如果user.classpath 引用的文件夹中有许多 jar,则由于 JUnit,启动可能会非常缓慢
  • 错误 63031 - 不正确的 JDBC 驱动程序类:org.firebirdsql.jdbc.FBDrivery。由 Sonali 供稿(arora.sonali99 at gmail.com)

控制器

  • 错误 62806 - 在 GUI 或非 GUI 模式下,由 Run 克隆的 ModuleController 行为不同。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 62847 - 如果控制器不能使用 LoopController/WhileController/ForEachController 公开的索引变量
  • 错误 63064 - 忽略 IfController 中使用的表达式末尾和开头的空格

听众

  • 错误 62770 - 聚合图抛出ArrayIndexOutOfBoundsException
  • 错误 63069 - 如果用户在录制或测试运行时退出,ResultCollector 不会写入 XML 文件的结尾。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 63138 - InfluxDB BackendListenerClient:如果出现错误,日志正在调试中,应该是错误的

计时器、断言、配置、前处理器和后处理器

  • 错误 62774 - XPath2Extractor:范围变量已损坏。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 62860 - JSON 提取器:当未找到变量时, 避免 NPE 和嘈杂的错误消息“处理 JSON 内容时出错”

职能

I18N

报告/仪表板

  • 错误 62777 - Web 报告/仪表板:隐藏所有响应时间百分位数随时间变化(成功响应)失败。
  • 错误 62780 - Web 报告/仪表板:显示所有响应时间与请求失败。
  • 错误 62781 - Web 报告/仪表板:在响应时间概览中显示全部失败。
  • 错误 62782 - Web 报告/仪表板:删除重复/未使用的依赖项
  • 错误 62894 - 报告/仪表板:吞吐量在错误的列中,因为单位是毫秒,所以令人困惑
  • 错误 63016 - 如果源 csv 包含带引号的标签,则 HTML 报告为空。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)

文档

  • 在组件参考文档中将测试操作(旧名称)更改为流控制操作。由 Ori Marko 提供(gmail.com 上的orimarko)

一般的

  • 错误 62745 - 修复未定义的禁用图标。由 Till Neunast (https://github.com/tilln) 提供
  • 错误 62743 - 必须在分布式测试中启用客户端身份验证
  • 错误 62767 - 在特定条件下搜索时出现 NPE。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 62790 - 调用替换而不选择第一个匹配项时出现ArrayIndexOutOfBoundsException
  • 错误 62795 - JMeter 控制器节点有时会结束分布式测试,即使某些工作节点尚未完成
  • 错误 62336 - 拉取请求 #396 - 某些快捷方式在 Windows 上无法正常工作。供稿人:Michael Pavlov(gmail.com 上的 michael.paulau)
  • 错误 62889 - 使用 JSON 路径测试器显示时格式化 JSON 数组。
  • 错误 62900 - ObjectProperty#getStringValue() 可以抛出 NullPointerException
  • 错误 63099 - 仅在变量替换结构之外的函数帮助器对话框中转义逗号。
  • 错误 63105 - 为报告导出事务:修复 2 个错误
  • 错误 63106 - 应用命名策略不会刷新 UI
  • 错误 63180 - 应用命名策略允许多选,但只考虑第一个节点
  • 错误 63090 - 由于 CVE-2018-8088 删除 slf4j-ext

谢谢

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

  • 奥列格·卡尔尼切夫斯基 (olegk at apache.org)
  • 直到 Neunast (https://github.com/tilln)
  • Mingun(mail.ru 上的 alexander_sergey)
  • Ubik 加载包
  • Artem Fedorov(blazemeter.com 上的 artem.fedorov)
  • Stefan Seide (stefan at trilobyte-se.de)
  • 刘士 (liushilive at outlook.com)
  • 迈克尔·巴甫洛夫 (michael.paulau at gmail.com)
  • Ori Marko(gmail.com 上的orimarko)
  • Paco(daocloud.io 上的 paco.xu)
  • Hitesh Patel (hitesh.h.patel at gmail.com)
  • Sonali (arora.sonali99 at gmail.com)
  • 穆罕默德·易卜拉欣 (rollno748 at gmail.com)
  • U. Poblotzki (u.poblotzki at thalia.de)
  • 萨克尼卡

我们还要感谢帮助我们改进 JMeter 的错误报告者。

如果我们遗漏了其他任何人,我们深表歉意。

已知问题和解决方法

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 JMeter,它将为您创建注册表项,然后您可以以普通用户身份重新启动 JMeter,您将不再有警告。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
    如果您在具有 SSL 证书(其本身或其信任链中的 SSL 证书之一)的网站上运行 HTTPS 请求,该证书具有使用 MD2 的签名算法(如md2WithRSAEncryption)或大小低于 1024 位的 SSL 证书。此错误与 Java 8+ 中增加的安全性有关。
    要允许您执行 HTTPS 请求,您可以通过编辑 Java jdk.certpath.disabledAlgorithms属性来降低 Java 安装的安全性。根据您的情况,删除 MD2 值或大小约束。
    此属性在此文件中:
    JAVA_HOME/jre/lib/security/java.security
    有关详细信息,请参阅 错误 56357
  • 在 Mac OSX 下,聚合图会由于数字的镜像效应而显示错误的值。这是由于一个已知的 Java 错误,请参阅错误JDK-8065373 修复是使用 JDK8_u45 或更高版本。
  • 查看结果树可能无法在 HTML 渲染器下显示某些 HTML 代码,请参阅 错误 54586。这是由于一个已知的 Java 错误导致无法解析行/列属性中的“ px ”单位。请参阅错误JDK-8031109 修复是使用 JDK9 b65 或更高版本。
  • 带有键盘的 JTable 选择(SHIFT  +  up/down)在 Mac OSX 上的 Java 7 中完全不可用。这是由于一个已知的 Java 错误JDK-8025126 修复是使用 JDK 8 b132 或更高版本。

5.0 版

概括

新的和值得注意的

核心改进

多领域的休息支持得到改善

  • Multipart/form-data 请求现在适用于PUTDELETE ...
  • 现在还可以发送带有附件的 JSON 正文
  • 在参数选项卡中输入的参数现在在正文中使用,而不是被忽略

在分布式测试中,JMeter 现在自动为线程名称添加引擎主机和端口前缀,这使得 HTML 报告中的线程计数正确,无需任何其他配置,就像以前需要的那样

XPath 2.0 在一个名为XPath2 提取器的新元素中得到支持,提供更简单的 XML 命名空间处理、最新的 XPath 语法和更好的性能

升级到 HTTP 组件 4.6 的最后一个 API 已完成,JMeter 不再依赖此库的已弃用 API

现在可以以更简单的方式控制循环中断和循环切换到下一次迭代。这在Flow Control ActionResult Status Action Handler元素 中可用

而 Controller 现在导出一个包含其当前索引的变量,名为__jm__<Name of your element>__idx所以举个例子,如果你的 While Controller 被命名为 WC,那么你可以通过${__jm__WC__idx}访问循环索引

脚本/调试增强

搜索功能已得到改进,允许您在树中迭代搜索结果并通过下一个/上一个/替换/替换/查找按钮 进行必要的替换

在查看结果树中,请求和响应的标头/正文被清楚地分开,以便您更好地检查请求和响应。您还可以在所有这些选项卡中搜索特定值

记录功能已得到改进,当您在浏览器中导航时提供一个始终位于顶部的弹出窗口,允许您在应用程序中导航时命名交易。

您现在可以从菜单File  →  Restart 重新启动 JMeter

实时报告和网络报告

报告功能已增强

HTML Web 报告中添加了新的每秒总交易数图表

现在可以通过sample_variables 绘制作为 JMeter 变量随时间变化的自定义指标。这些自定义指标图表将在自定义图表部分的 HTML 报告中提供

每秒点击次数图表现在考虑了嵌入式资源

在实时报告中,发送和接收的字节现在被发送到后端(InfluxDB 或 Graphite)

职能

引入了一个新函数__threadGroupName来获取线程组名称。

不兼容的更改

  • 从 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,请参阅 Bug 62470 Bug 60917 Bug 62550
  • 自 JMeter 5.0 起,CSS/JQuery Extractor已重命名为CSS Selector Extractor
  • 自 JMeter 5.0 起,Test Action已重命名为Flow Control Action
  • 自 JMeter 5.0 起,JMeter 将 subResults 重命名为parentName-N,其中 N 是一个数字,以确保 Hits Per Second 图表包括资源下载,请参阅 Bug 62550 Bug 62470 Bug 60917

改进

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

  • 错误 62260 - 改进 Rest 支持。由 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 ,而它应该适用于PUTDELETE …… 由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 62317 - HTTP(S) 测试脚本记录器:允许将 ResultSaver 添加到创建的采样器

其他采样器

  • 拉取请求 #376 - JUnitSampler 将测试用例中的断言失败以外的异常记录为警告。由 Davide Angelocola 提供(fisglobal.com 上的 davide.angelocola)
  • 错误 62244 - 将测试操作重命名为流控制操作
  • 错误 62302 - 将 JSR223 采样器移到菜单上。由 Ori Marko 提供(gmail.com 上的orimarko)
  • 错误 62595 - SMTPSampler 不允许配置 SSL/TLS 协议以用于握手。费利佩·库佐 (felipe.cuozzo at gmail.com) 供稿

控制器

  • 错误 62237 - While 控制器:导出包含当前迭代索引的变量。由 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 提取器:实施 XPath 2.0。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 62593 - 将 CSS/JQuery 提取器重命名为 CSS 选择器提取器。由 Ori Marko 提供(gmail.com 上的orimarko)

职能

I18N

报告/仪表板

  • 错误 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 at qq.com)
  • 错误 62550 - 修改子结果命名策略
  • 错误 60917 - 使用嵌入式资源下载进行负载测试:每秒点击次数不考虑下载的资源

一般的

  • 错误 62684 - 分布式测试:自动为线程名称添加前缀以识别引擎。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 62155 - 搜索功能:使搜索文本字段获得焦点
  • 错误 62156 - 搜索功能:区分匹配搜索的节点和包含匹配搜索的子节点的节点
  • 错误 62234 - 搜索/替换功能:增强 UX 并添加替换/下一个/上一个/替换和查找功能。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 62238 - 添加切换到当前循环的下一次迭代的功能。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 62239 - 添加断开电流回路的功能
  • 错误 61635 - 添加菜单以重新启动 JMeter
  • 错误 62470 - CSV 输出:当jmeter.save.saveservice.subresults=true 时启用子结果的记录。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 62473 - 设置“ saveservice_properties ”具有反直觉行为
  • 错误 62354 - 正确计算和使用每个用户秒的单位(由 jffagot05 在 gmail.com 报告)
  • 错误 62700 - 引入jsr223.init.file以允许在 JMeter 启动时调用 JSR-223 脚本
  • 错误 62128 - 当从另一个目录中的批处理文件调用jmeter.bat时,尝试正确 猜测JMETER_HOME 。由 logox01 提供(gmx.at 上的 logox01)
  • 拉取请求 #386 - 添加对 RMI 密钥库创建脚本的参数支持。由 Logan Mauzaize 提供(t524467 at airfrance.fr)
  • 错误 62065 - 将 Maven 工件用于 JAF 模块而不是嵌入式模块
  • 错误 61714 - 更新实时结果文档
  • 拉取请求 #382 - 更正文档中的错字。由 Perze Ababa 报道(perze.ababa at gmail.com>)
  • 拉取请求 #392 - 更正文档中的错字。亚伦·莱文报道
  • 拉取请求 #379 - 改进中文翻译。由 XmeterNet 提供

非功能性变化

  • 拉取请求 #358 拉取请求 #365 拉取请求 #366 拉取请求 #375 - 更新到最新的 checkstyle (v8.8)。将 Checkstyle 扩展到srctest中的文件;修复了新检查的文件。基于 Graham Russell 的贡献(graham at ham1.co.uk)
  • 错误 62095 - 边界提取器中右边界参数的正确描述。由 Ori Marko 提供(gmail.com 上的orimarko)
  • 错误 62113 - 更新到最新的 Bouncycastle (v1.60)。基于 Olaf Flebbe 的贡献(oflebbe at apache.org)
  • 错误 62171 - 删除.md5校验和并仅保留源和二进制存档的.sha512校验和
  • 更新到 groovy-all-2.4.15(来自 groovy-all-2.4.13)
  • 更新到 asm-6.1(从 6.0)
  • 更新到 tika-core 和 tika-parsers 1.18(来自 1.17)
  • 错误 62482 - 将文档同步到 ForEachController 的实现。基于 Ori Marko 的贡献(orimarko at gmail.com)
  • 错误 62529 - 更新为 httpclient-4.5.6(来自 httpclient 4.5.5)并更新为 freemarker-2.3.28(来自 freemarker-2.3.23)。基于 Ori Marko 的补丁(orimarko at gmail.com)
  • 更新到 httpmime-4.5.6(来自 httpmime-4.5.5)
  • 更新到 caffeine-2.6.2(来自 caffeine-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

控制器

听众

  • 错误 62097 - 仅当新数据到达时更新汇总报告中的 JTable。这样,行的选择将保持更长的时间。
  • 错误 62203 - Influxdb BackendListener 客户端:将用户标签存储到注释和内部事务中。由 Sergey Batalin 供稿(mail.ru 上的 sergey_batalin)
  • 错误 62251 - TextGraphiteMetricsSender 不会在网络错误的情况下使丢失的连接无效
  • 错误 60705 - 当列移动时修复聚合报告和朋友的标题。
  • 错误 62463 - 分布式客户端/服务器设置:使用 SSL 时为远程对象使用不同的 RMI 端口

计时器、断言、配置、前处理器和后处理器

  • 错误 61664 - HTTP 授权管理器:摘要仅适用于旧版RFC 2069,未实施RFC 2617 。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 62252 - HTTP 标头合并逻辑与文档不对应
  • 错误 62554 - BoundaryExtractor:要检查的字段未重置
  • 错误 62553 - 即使属性“每线程用户(用户)”设置为 TRUE,随机元素也可能返回相同的值
  • 错误 62637 - 在计算同步定时器的延迟时考虑调度程序

职能

I18N

报告/仪表板

  • 错误 62333 - 报告仪表板 - 当一个系列不包含任何值时,图形颜色逻辑错误。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 62283 - 报告仪表板 - 当粒度 ≤ 1 天时,日期未正确显示在图表上
  • 错误 62520 - 当我们将鼠标悬停在“延迟与请求”图表中的点上时,工具提示文本应为“中值延迟”

文档

  • 错误 62211 - 修复 HTTP 请求服务器文档。由 Ori Marko 提供(gmail.com 上的orimarko)
  • 拉取请求 #388 - 修复错字。由 Giancarlo Romeo 供稿(giancarloromeo at gmail.com)

一般的

  • 错误 62107 - 当JM_LAUNCH包含空格 时,JMeter 无法在 Windows 下启动
  • 错误 62110 - 损坏的 JUnit 类(由于缺少依赖项)会破坏 JMeter 菜单。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 拉取请求 #377 - 文档的小修复。由 Peter Doornbosch 提供(luminis.eu 的 peter.doornbosch)
  • 错误 62124 - 记录模板:添加更多排除项并默认使用事务名​​称
  • 错误 62127 - 在 FileEditor 中将文件名存储为字符串而不是文件。这将防止文件名从 Unix 样式路径分隔符转换为 Windows 样式,例如在 CSV 数据集配置中使用时。
  • 错误 56150 - 滚动菜单项时保持索引正确。
  • 错误 62240 - 如果 SampleMonitor 实现是一个 TestBean,但不会正确初始化
  • 错误 62295 - 复制多个元素的选择时元素的正确顺序。
  • 错误 62397 - 使用 JSON 路径测试器时不要在逗号处换行
  • 错误 62281 - 在 MapProperty 中防止 NPE。belugabehr 的补丁(gmail.com 上的 dam6923)
  • 错误 62457 - 在用户手册中,UUID 函数的示例是错误的。由 helppass (onegaicimasu at hotmail.com) 提供
  • 错误 62478 - 在 GUI 函数帮助程序中构造函数字符串时,在参数中转义逗号。blue414 报道(blue414 at 163.com)
  • 错误 62463 - 当client.rmi.localport设置为分布式运行时,修复端口的使用。
  • 错误 62545 - 在 RenderAsJSON 中缩进 JSON 时,不要使用冒号作为“制表符”字符串的一部分。
  • 错误 62637的一部分- 在TimerService#adjustDelay 中处理非常大的值时避免整数溢出
  • 错误 62683 - 当用户打开完全无效的测试计划时,错误对话框没有文本。

谢谢

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

  • 格雷厄姆·拉塞尔(ham1.co.uk 的格雷厄姆)
  • Ori Marko(gmail.com 上的orimarko)
  • Davide Angelocola (davide.angelocola at fisglobal.com)
  • Ubik 加载包
  • Olaf Flebbe (oflebbe at apache.org)
  • Peter Doornbosch (peter.doornbosch at luminis.eu)
  • logox01(gmx.at 上的 logox01)
  • 谢尔盖·巴塔林 (sergey_batalin at mail.ru)
  • XMeter
  • Imane Ankhila (iankhila at ahlane.net)
  • jffagot05 (jffagot05 at gmail.com)
  • Perze Ababa (perze.ababa at gmail.com)
  • 玛莎拉克斯(laks.martha at gmail.com)
  • Logan Mauzaize (t524467 at airfrance.fr)
  • belugabehr (dam6923 at gmail.com)
  • Giancarlo Romeo(gmail.com 上的 giancarloromeo)
  • helppass (onegaicimasu at hotmail.com)
  • blue414 (blue414 at 163.com)
  • 亚伦·莱文
  • 艾伦(444104595 QQ.com)
  • Felipe Cuozzo (felipe.cuozzo at gmail.com)
  • bangnab (ambrosetti.nicola at gmail.com)

我们还要感谢帮助我们改进 JMeter 的错误报告者。

如果我们遗漏了其他任何人,我们深表歉意。

已知问题和解决方法

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 JMeter,它将为您创建注册表项,然后您可以以普通用户身份重新启动 JMeter,您将不再有警告。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
    如果您在具有 SSL 证书(其本身或其信任链中的 SSL 证书之一)的网站上运行 HTTPS 请求,该证书具有使用 MD2 的签名算法(如md2WithRSAEncryption)或大小低于 1024 位的 SSL 证书。此错误与 Java 8+ 中增加的安全性有关。
    要允许您执行 HTTPS 请求,您可以通过编辑 Java jdk.certpath.disabledAlgorithms属性来降低 Java 安装的安全性。根据您的情况,删除 MD2 值或大小约束。
    此属性在此文件中:
    JAVA_HOME/jre/lib/security/java.security
    有关详细信息,请参阅 错误 56357
  • 在 Mac OSX 下,聚合图会由于数字的镜像效应而显示错误的值。这是由于一个已知的 Java 错误,请参阅错误JDK-8065373 修复是使用 JDK8_u45 或更高版本。
  • 查看结果树可能无法在 HTML 渲染器下显示某些 HTML 代码,请参阅 错误 54586。这是由于一个已知的 Java 错误导致无法解析行/列属性中的“ px ”单位。请参阅错误JDK-8031109 修复是使用 JDK9 b65 或更高版本。
  • 带有键盘的 JTable 选择(SHIFT  +  up/down)在 Mac OSX 上的 Java 7 中完全不可用。这是由于一个已知的 Java 错误JDK-8025126 修复是使用 JDK 8 b132 或更高版本。

4.0 版

概括

新的和值得注意的

核心改进

JMeter 现在支持 JAVA 9。

提供新的边界提取器元素,可轻松提取并具有更好的性能

新的JSON 断言元素可用于对 JSON 响应进行断言。

新的精确吞吐量计时器元素可用,它产生具有给定恒定吞吐量的泊松到达。

JMS 点对点采样器已通过读取浏览清除选项进行了增强。

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

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

循环控制器ForEach 控制器 现在将它们的当前迭代公开为名为__jm__<Name of your element>__idx的变量,您可以像这样将其用于名为MyLoopController的循环控制器:

${__jm__MyLoopController__idx}
. 请参阅 错误 61802

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

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

用户体验改进

JMeter 现在默认使用Darcula LAF

工作台已从 UI 中删除,您现在可以将非测试元素用作测试计划的直接子元素。

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

HTTP(S) 测试脚本记录器现在允许您在以更易于阅读的方式记录的同时命名您的事务。

用户体验改进,其中最显着:

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

职能

新函数__digest提供了简单的 SHA-XXX、MDX 哈希计算:

${__digest(MD5,Apache JMeter 4.0 rocks !,,,)}
将返回0e16c3ce9b6c9971c69ad685fd875d2b

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

${__dateTimeConvert(01 Jan 2017,dd MMM yyyy,dd/MM/yyyy,)}
将于2017 年 1 月 1 日返回

新功能__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()

AbstractJavaSamplerClient使用的JavaSamplerContext已通过新方法进行了增强,以简化插件开发。

JMeter 现在将额外的 Maven 源和 javadoc 工件分发到Maven 存储库中

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

实时报告和网络报告

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

在 Web Report 中响应时间分布图更精确

已对报告生成进行了一些错误修复,请参阅 错误 61900 错误 61900 61956、 错误 61899 由于错误 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 线程组将在测试停止和关闭时运行。如果您不希望出现这种行为,请在关闭测试计划元素上的主线程后取消选中 Run tearDown Thread Groups,请参阅 错误 61656
  • 属性sampleresult.getbytes.headers_sizesampleresult.getbytes.body_real_size已被删除,请参阅 错误 61587
  • JMeter 现在将在您运行时保存您的测试计划。此行为可以由属性save_automatically_before_run控制,请参阅 错误 61731
  • 工作台元素已被删除,您现在直接将非测试元素添加为测试计划的子元素。加载包含元素 JMeter 的测试计划时,会将Mirror ServerProperty Display和 HTTP(s) Test Script Recorder元素作为测试计划的直接子元素移动。对于任何其他元素,它将创建一个名为 Workbench Test Fragment 的测试片段元素移动其中的元素
  • 以下类已被删除(org.apache.jmeter.functions.util.ArgumentEncoderorg.apache.jmeter.functions.util.ArgumentDecoder),请参阅 Pull request #335
  • 在 JMS 点对点采样器中,将超时设置为 0 现在意味着无限超时,而之前它将切换为 2000 毫秒,请参阅 错误 61829
  • 当断言在不同的范围内时,它们从最外层到最内层开始执行。见 错误 61846
  • JMeter 现在默认使用英语语言环境启动。此更改是由于缺少许多受支持语言的翻译。您可以通过在 jmeter 和 jmeter.bat(或者最好是 setenv.sh/setenv.bat)中修改 JVM_ARGS系统属性值来更改语言环境。如果您能提供支持语言的翻译,我们也将不胜感激。
  • SwitchController 现在默认修剪 switch 的内容,以避免与不需要的空格相关的问题。见 错误 61771
  • JMeter JVM 堆设置已从-Xms512m -Xmx512m更改为-Xms1g -Xmx1g
  • Beanshell 版本已升级到 bsh-2.0b6,其中引入了重大更改和更严格的解析规则

改进

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

  • 拉取请求 #316 - 警告空信任库加载。文森特·赫里尔 (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 证书。马修·巴克特供稿
  • 错误 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 请求/JavaSamplerClient:改进org.apache.jmeter.protocol.java.sampler.JavaSamplerContext
  • 错误 61762 - 开始下一个线程循环应该在任何地方使用

控制器

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

听众

  • 错误 57760 - 查看结果树:查看记录器示例结果时,Cookie 标题错误地显示为空(无 cookie)。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 61769 - 查看结果树:在 XPath 测试器、JSON 路径测试器和 CSS/JQuery 测试器中使用语法荧光笔。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 61776 - 查看结果树:在渲染 XML 视图中扩展添加展开/折叠所有菜单。由 Maxime Chassagneux 和 Graham Russell 提供
  • 错误 61852 - 查看结果树:添加边界提取器测试器
  • 错误 61794 - Influxdb 后端:只需在 GUI 后端侦听器上创建新行并在其名称前加上“ TAG_ ”前缀即可添加任意数量的自定义标签

计时器、断言、配置、前处理器和后处理器

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

职能

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

I18N

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

报告/仪表板

  • 错误 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 - 向子菜单添加思考时间不应考虑禁用元素
  • 错误 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 - Loop / ForEach 控制器应该为当前迭代公开一个变量。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 拉取请求 #349 - 添加 i18n 资源(zh_CN)。由郭海莉 (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 中心
  • 拉取请求 #371 - 修复XPath 断言文档中的示例。由 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 贡献(gmail.com 上的abalanonline)
  • 拉取请求 #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 - 为 groovy 单元测试添加 spock 框架。由 Graham Russell 供稿(graham at ham1.co.uk)
  • 拉取请求 #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 提供(gmail.com 上的 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 - ThroughputController:当吞吐量 = 0(总执行次数或执行百分比)时触发 StackOverFlowError

听众

  • 错误 61742 - BackendListener :修复 backend_graphite.send_interval 的默认值
  • 错误 61878 - BackendListener:NPE 如果 BackendListenerClient#getDefaultParameters 返回 null
  • 错误 61950 - 查看结果树:内容类型音频/mpegurl被错误地视为二进制

计时器、断言、配置、前处理器和后处理器

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

职能

I18N

报告/仪表板

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

一般的

  • 错误 61661 - 避免由于第 3 方线程侦听器插件抛出 RuntimeException 而导致的启动/关闭问题
  • 错误 61625 - BeanInfo 中使用的文件编辑器在所有 LAF 下表现异常,对 CSVDataSet、JSR223、BSF、Beanshell 元素有影响
  • 错误 61844 - Maven pom.xml:测试中使用的库应该有范围测试
  • 错误 61842 - 不进行更改保存会导致保存和复制相同的备份文件

谢谢

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

  • 伊戈尔·帕南特 (Panainte.i at gmail.com)
  • Emilian Bold (emi at apache.org)
  • Ubik 加载包
  • 贾斯汀·麦卡特尼 (be_strew at yahoo.co.uk)
  • 文森特·赫里尔 (https://github.com/vherilier)
  • Aleksei Balan(gmail.com 上的abalanonline)
  • 格雷厄姆·拉塞尔(ham1.co.uk 的格雷厄姆)
  • gmail.com 上的 orimarko
  • Artem Fedorov(来自 blazemeter.com 的 artem)
  • 火焰计有限公司
  • Benny van Wijngaarden (benny at smaragd-it.nl)
  • 马修·巴克特 (https://github.com/buckett)
  • 郭海莉 (https://github.com/hellyguo)
  • 彼得·多恩博斯 (https://bitbucket.org/pjtr/)
  • 杰里米·阿诺德(杰里米在 arnoldzoo.org)
  • Vladimir Sitnikov (sitnikov.vladimir at gmail.com)
  • 康斯坦丁·加里宁(hotmail.com 上的 kkalinin)

我们还要感谢帮助我们改进 JMeter 的错误报告者。
对于这个版本,我们要特别感谢以下记者在我们修复后所做的清晰报告和测试:

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

如果我们遗漏了其他任何人,我们深表歉意。

已知问题和解决方法

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 JMeter,它将为您创建注册表项,然后您可以以普通用户身份重新启动 JMeter,您将不再有警告。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
    如果您在具有 SSL 证书(其本身或其信任链中的 SSL 证书之一)的网站上运行 HTTPS 请求,该证书具有使用 MD2 的签名算法(如md2WithRSAEncryption)或大小低于 1024 位的 SSL 证书。此错误与 Java 8+ 中增加的安全性有关。
    要允许您执行 HTTPS 请求,您可以通过编辑 Java jdk.certpath.disabledAlgorithms属性来降低 Java 安装的安全性。根据您的情况,删除 MD2 值或大小约束。
    此属性在此文件中:
    JAVA_HOME/jre/lib/security/java.security
    有关详细信息,请参阅 错误 56357
  • 在 Mac OSX 下,聚合图会由于数字的镜像效应而显示错误的值。这是由于一个已知的 Java 错误,请参阅错误JDK-8065373 修复是使用 JDK8_u45 或更高版本。
  • 查看结果树可能无法在 HTML 渲染器下显示某些 HTML 代码,请参阅 错误 54586。这是由于一个已知的 Java 错误导致无法解析行/列属性中的“ px ”单位。请参阅错误JDK-8031109 修复是使用 JDK9 b65 或更高版本。
  • 带有键盘的 JTable 选择(SHIFT  +  up/down)在 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 采样器现在计算延迟,请参阅 错误 60156

将依赖项升级到最新可用版本,带来性能改进和错误修复

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

用户体验改进

为了更好地支持 HiDPI,我们做了更多的工作。

修复了一些在降低查看结果树的内存使用量的工作中出现的错误。

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

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

If Controller 和 While Controller UX 已改进

报告/仪表板改进

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

文档改进

合并关于不明确文档的反馈。

职能

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

新功能:

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

不兼容的更改

  • 在 InfluxDbBackendListenerClient 中,statut属性已重命名为status
  • 在 CookieManager 中,DEFAULT_POLICYDEFAULT_IMPLEMENTATION常量现在是私有的。
    如果您使用HC3CookieHandler (< JMeter 3.1) 配置的 ignorecookies 将被重置,请确保将其放回原处。
  • 默认情况下,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:删除实现选择框和清理类
  • 错误 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 数据集配置:为文件编码属性添加主文件编码值列表

控制器

听众

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

计时器、断言、配置、前处理器和后处理器

职能

I18N

  • 错误 61509 - 更好的标签/翻译/文档标签开始和计数器元素的最大值

报告/仪表板

一般的

  • ActionRouter中查找类时,请返回到加载ActionRouter的 jar 的位置。由 Emilian Bold 提供(emi at 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标头上设置字符集。它激怒了一些服务器。
    该字符集是在重构以使用更新的 http 客户端 API 时添加的。请参阅 错误 56141 - 了解更多信息。
  • 错误 61456 - 使用 JMeter 和奇怪的基本身份验证授权标头记录时出现java.lang.ArrayIndexOutOfBoundsException
  • 错误 61395 - 大型服务器响应截断会影响记录

其他采样器

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

控制器

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

听众

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

计时器、断言、配置、前处理器和后处理器

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

职能

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

I18N

报告/仪表板

  • 错误 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 - 从树中切割元素时,测试计划未标记为脏
  • 错误 61380 - 使用计时器关闭 JMeter 会释放大量中断的采样器
  • 错误 57055 - CheckDirty.doAction 应该清除SUB_TREE_SAVED的 previousGuiItems

谢谢

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

  • Anass Benomar (abenomar at umanis.com, Mithrandir0407 at github)
  • 安东尼·卡恩斯 (anthony.kearns atrightside.co)
  • Emilian Bold (emi at apache.org)
  • 刘XP(新浪网的liu_xp2003)
  • Ubik 加载包
  • Wolfgang Wagner (internetwolf2000 at hotmail.com)
  • 吴军龙(github id mybreeze77)

我们还要感谢帮助我们改进 JMeter 的错误报告者。
对于这个版本,我们要特别感谢以下记者在我们修复后所做的清晰报告和测试:

  • 刘XP(新浪网的liu_xp2003)
  • Alexander Podelko(雅虎网站上的 apodelko)

如果我们遗漏了其他任何人,我们深表歉意。

已知问题和解决方法

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 JMeter,它将为您创建注册表项,然后您可以以普通用户身份重新启动 JMeter,您将不再有警告。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
    如果您在具有 SSL 证书(其本身或其信任链中的 SSL 证书之一)的网站上运行 HTTPS 请求,该证书具有使用 MD2 的签名算法(如md2WithRSAEncryption)或大小低于 1024 位的 SSL 证书。此错误与 Java 8+ 中增加的安全性有关。
    要允许您执行 HTTPS 请求,您可以通过编辑 Java jdk.certpath.disabledAlgorithms属性来降低 Java 安装的安全性。根据您的情况,删除 MD2 值或大小约束。
    此属性在此文件中:
    JAVA_HOME/jre/lib/security/java.security
    有关详细信息,请参阅 错误 56357
  • 在 Mac OSX 下,聚合图会由于数字的镜像效应而显示错误的值。这是由于一个已知的 Java 错误,请参阅错误JDK-8065373 修复是使用 JDK8_u45 或更高版本。
  • 查看结果树可能无法在 HTML 渲染器下显示某些 HTML 代码,请参阅 错误 54586。这是由于一个已知的 Java 错误导致无法解析行/列属性中的“ px ”单位。请参阅错误JDK-8031109 修复是使用 JDK9 b65 或更高版本。
  • 带有键盘的 JTable 选择(SHIFT  +  up/down)在 Mac OSX 上的 Java 7 中完全不可用。这是由于一个已知的 Java 错误JDK-8025126 修复是使用 JDK 8 b132 或更高版本。

3.2 版

概括

新的和值得注意的

重要变化

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

JMeter 日志记录已迁移到 SLF4J 和 Log4j 2。这会影响配置和 3 rd方插件,请参阅下面的“记录更改”

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

核心改进

  • JMeter 现在提供了一个与 InfluxDB 接口的新 BackendListener 实现。
    此实现通过其HTTP API 使用异步 HTTP 调用向 InfluxDB 发送数据, 并为您提供以下带有注释的图表:
  • DNS 缓存管理器现在有一个允许静态主机解析的表。
  • JMS 发布者和订阅者现在允许在暂停错误时重新连接。
  • JMS Publisher 中的变量现在支持所有类型的消息。添加文件的编码类型以解析其内容
  • XPath Extractor 现在允许按索引或所有匹配项随机提取。
  • 响应断言现在允许在请求标头上工作,提供“或”组合并具有更好的单元格渲染器
  • JMeter 现在使用 Oracle Nashorn Javascript 引擎而不是 Rhino。这提供了更快的 Javascript 执行速度。
  • HTTP HC4 实现现在提供默认启用的抢先基本身份验证
  • CSS中的嵌入式资源下载已得到改进,以避免无用的重复解析以查找资源
  • 自从在项目中设置 Sonar 以来,已经完成了一项关于代码质量和代码覆盖率测试的重要工作。您可以在此处查看声纳报告。

用户体验改进

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

报告/仪表板改进

  • 统计数据已重新组织以澄清报告:
  • 现在可以根据正则表达式或样本名称自定义每个事务的 APDEX 阈值。下面的示例将为样本 sample(\\d+)、sampleA 和scenarioB 应用不同的阈值,而不是声明的默认阈值(500 和 1500 表示满足和容忍的阈值):
    jmeter.reportgenerator.apdex_satisfied_threshold=500
    jmeter.reportgenerator.apdex_tolerated_threshold=1500
    jmeter.reportgenerator.apdex_per_transaction=sample(\\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 后,以下 jars 已被删除(请参阅 错误 60589):
    • ApacheJMeter_slf4j_logkit.jar
    • avalon-framework-4.1.4.jar
    • commons-logging-1.2.jar
    • excalibur-logger-1.1.jar
    • logkit-2.0.jar
  • 放弃 HC3.1 支持后,commons-httpclient-3.1.jar已被删除(请参阅 错误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 的更多详细信息。请参阅 错误 60672
  • 错误 60729 - 随机变量配置元素现在允许最小值 == 最大值。以前的版本在 minimum==maximum 并且未设置配置的变量时记录错误。
  • 错误 60730 - JSON 后处理器现在设置_ALL变量(假设已检查计算连接变量),即使 JSON 路径仅匹配一次。在这种情况下,以前的版本没有设置_ALL变量。

移除的元素或功能

  • SOAP/XML-RPC 请求已作为 错误 60727的一部分被删除。使用 HTTP 请求元素作为替代。请参阅构建 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#getSOAPHeaderorg.apache.jmeter.protocol.http.control.HeaderManager#setSOAPHeader(Object)
  • org.apache.jmeter.protocol.http.util.Base64Encode已被弃用,您可以使用java.util.Base64作为替代

记录更改

JMeter 日志记录已迁移到 SLF4J 和 Log4j 2。这会影响日志记录配置和 3 rd方插件(如果他们使用 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 being a JMeter class
    Configurator.setAllLevels(loggerName, Level.DEBUG);
    

对 3 rd方插件日志记录的更改

3rd 方插件应将其日志代码从 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 at gmail.com)
  • 错误 60543 - HTTP 请求 / Http 请求默认 UX:移至高级面板超时、实施、代理。由 Philippe Mouawad(ubik-ingenierie.com 上的 p.mouawad)实施并由 Ubik Load Pack 贡献(ubikloadpack.com 上的支持)
  • 错误 60548 - HTTP 请求:允许折叠上面板
  • 错误 57242 - 未使用 HttpClient4 预先设置 HTTP 授权
  • 错误 60727 - 删除 commons-httpclient-3.1 和相关元素。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 60790 - HTTP(S) 测试脚本记录器:改进有关证书过期的信息并为启动/停止提供更好的 UX
  • 错误 60888 - HttpRequest:添加选项以允许重试所有请求,包括非幂等 HTTP 方法
  • 错误 60896 - HTTP(S) 测试脚本记录器:通过减少屏幕上的属性数量来改进 UX

其他采样器

  • 错误 60740 - 基于 Pull request #241 - 所有 JMS 消息(字节、对象……)和源(文件、文件夹)的支持变量。由 Maxime Chassagneux(gmail.com 上的 maxime.chassagneux)提供。
  • 错误 60585 - JMS 发布者和 JMS 订阅者:允许在错误时重新连接并在错误之间暂停。基于 拉取请求 #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 - 允许按列排序以查看表中的结果、汇总报告、汇总报告和汇总图表。基于 拉取请求 #245 - Logan Mauzaize (logan.mauzaize at gmail.com) 和 Maxime Chassagneux (maxime.chassagneux at gmail.com)。
  • 错误 60590 - BackendListener:将 Influxdb BackendListenerClient 实现添加到 JMeter。部分基于 拉取请求 #246 - Logan Mauzaize (logan.mauzaize at gmail.com) 和 Maxime Chassagneux (maxime.chassagneux at gmail.com)。
  • 错误 60591 - BackendListener:添加时间盒装采样。基于 拉取请求 #237 - Logan Mauzaize (logan.mauzaize at gmail.com) 和 Maxime Chassagneux (maxime.chassagneux at gmail.com)。
  • 错误 60678 - 查看结果树:文本渲染器,搜索不应弹出“未找到文本”
  • 错误 60691 - 查看结果树:在渲染器(XPath、JSON 路径测试器、RegExp 测试器和 CSS/JQuery 测试器)中,下面板有时不可见,因为上面板太大且无法调整大小
  • 错误 60687 - 当 GUI 收到大量事件时,它的响应速度更快。
  • 错误 60791 - 查看结果树:在搜索功能中按 Enter 键触发搜索,如果不匹配则显示红色背景
  • 错误 60822 - ResultCollector 不确保文件 HashMap 中的唯一文件名条目

计时器、断言、配置、前处理器和后处理器

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

职能

I18N

  • 改进法语中的“ save_as ”翻译。基于Maxime Chassagneux(gmail.com 上的 maxime.chassagneux)提出的 Pull request #252 。
  • 错误 60785 - 改进了日语翻译。Kimono 的补丁(kimono.outfit.am at gmail.com)。

报告/仪表板

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

一般的

  • 错误 58164 - 在开始负载测试之前检查 ResultCollector 侦听器上是否已存在文件
  • 错误 54525 - 搜索功能:通过替换功能增强它
  • 错误 60530 - 添加 API 以在测试运行时创建 JMeter 线程。基于 Logan Mauzaize (logan.mauzaize at gmail.com) 和 Maxime Chassagneux (maxime.chassagneux at gmail.com) 的贡献。
  • 错误 60514 - 能够对事务控制器的子项应用命名约定。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 60711 - 改进断言/标题管理器/用户参数 GUI/排除、包含在 HTTP(S) 测试脚本记录器中的删除按钮行为
  • 错误 60593 - 切换到 G1 GC 算法
  • 错误 60595 - 在 JMeter GUI 的开头添加 SplashScreen。由 Maxime Chassagneux(gmail.com 上的 maxime.chassagneux)提供。
  • 错误 55258 - 从工具栏中删除“关闭”图标并将“新建”添加到菜单。部分基于 Sanduni Kanishka (https://github.com/SanduniKanishka) 的贡献
  • 错误 59995 - 允许用户使用两个新菜单项更改字体大小,并使用jmeter.hidpi.scale.factor缩放字体。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 60654 - 验证功能:能够忽略 BackendListener。由 Maxime Chassagneux(gmail.com 上的 maxime.chassagneux)提供。
  • 错误 60646 - 工作台:默认保存
  • 错误 60684 - 线程组:验证由调度程序提前结束,持续时间为 0 或非常短。由 Andrew Burton(gmail.com 上的 andrewburtonatwh)提供。
  • 错误 60589 - 将 LogKit 迁移到 SLF4J - 删除 Avalon、LogKit 和 Excalibur,向后兼容第 3模块。由 Woonsan Ko 供稿(woonsan at apache.org)
  • 错误 60565 - 将 LogKit 迁移到 SLF4J - 优化日志记录语句。例如,消息格式参数、可抛出参数、简单参数中不必要的 if-enabled-logging 等。由 Woonsan Ko 供稿(woonsan at apache.org)
  • 错误 60564 - 将 LogKit 迁移到 SLF4J - 将 LogKit 记录器替换为 SLF4J 记录器,并保留当前的 ​​LogKit 绑定解决方案以向后兼容插件。由 Woonsan Ko 供稿(woonsan at apache.org)
  • 错误 60664 - 添加 UI 菜单以设置日志级别。由 Woonsan Ko 供稿(woonsan at apache.org)
  • 拉取请求 #276 - - 为波兰语语言环境添加了一些翻译。由 Bartosz Siewniak 供稿(barteksiewniak at gmail.com)
  • 错误 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 中显示 Authorization 标头,即使它已发送
  • 错误 60837 - GET with body, PUT 即使httpclient4.retrycount大于 0也不会重试
  • 错误 60842 - 使用基于 Lagarto 的 HTML 解析器加载嵌入式资源时修剪提取的 URL。
  • 错误 60928 - Http 请求:keepalive 与嵌入式资源一起使用时发生连接泄漏

其他采样器

控制器

听众

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

计时器、断言、配置、前处理器和后处理器

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

职能

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

I18N

报告/仪表板

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

一般的

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

谢谢

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

  • Jerome Loisel (loisel.jerome at gmail.com)
  • 刘XP(新浪网的liu_xp2003)
  • 陈启(qi.chensh at ele.me)
  • (加文在 16degrees.com.au)
  • Thomas Schapitz (ts-nospam12 at online.de)
  • Murdecai777 (https://github.com/Murdecai777)
  • Logan Mauzaize (logan.mauzaize at gmail.com)
  • Maxime Chassagneux(gmail.com 上的 maxime.chassagneux)
  • 忻隆 (298015902 at qq.com)
  • Ubik 加载包
  • 格雷厄姆·拉塞尔(ham1.co.uk 的格雷厄姆)
  • 桑杜尼卡尼什卡 (https://github.com/SanduniKanishka)
  • 安德鲁·伯顿(gmail.com 上的 andrewburtonatwh)
  • Woonsan Ko (woonsan at apache.org)
  • Bartosz Siewniak(gmail.com 上的 barteksiewniak)
  • 和服 (kimono.outfit.am at gmail.com)
  • Michael Osipov (michaelo at apache.org)
  • Stephane Leplus(ubik-ingenierie.com 上的 s.leplus)

我们还要感谢帮助我们改进 JMeter 的错误报告者。
对于这个版本,我们要特别感谢以下记者在我们修复后所做的清晰报告和测试:

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

如果我们遗漏了其他任何人,我们深表歉意。

已知问题和解决方法

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 JMeter,它将为您创建注册表项,然后您可以以普通用户身份重新启动 JMeter,您将不再有警告。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
    如果您在具有 SSL 证书(其本身或其信任链中的 SSL 证书之一)的网站上运行 HTTPS 请求,该证书具有使用 MD2 的签名算法(如 md2WithRSAEncryption)或大小低于 1024 位的 SSL 证书。此错误与 Java 8+ 中增加的安全性有关。
    要允许您执行 HTTPS 请求,您可以通过编辑 Java jdk.certpath.disabledAlgorithms属性来降低 Java 安装的安全性。根据您的情况,删除 MD2 值或大小约束。
    此属性在此文件中:
    JAVA_HOME/jre/lib/security/java.security
    有关详细信息,请参阅 错误 56357
  • 在 Mac OSX 下,聚合图会由于数字的镜像效应而显示错误的值。这是由于一个已知的 Java 错误,请参阅错误JDK-8065373 修复是使用 JDK8_u45 或更高版本。
  • 查看结果树可能无法在 HTML 渲染器下显示某些 HTML 代码,请参阅 错误 54586。这是由于一个已知的 Java 错误导致无法解析行/列属性中的“ px ”单位。请参阅错误JDK-8031109 修复是使用 JDK9 b65 或更高版本(但请注意,Java 9 尚未通过 JMeter 认证)。
  • 带有键盘的 JTable 选择(SHIFT  +  up/down)对于 Mac OSX 上的 JAVA 7 完全不可用。这是由于一个已知的 Java 错误JDK-8025126 修复是使用 JDK 8 b132 或更高版本。

3.1 版

概括

新的和值得注意的

改进报告/仪表板

仪表板已通过 3 个新图表和 1 个汇总表进行了改进:

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

新指标

引入了一个新的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,它允许您将 Gaussian、Uniform 和 Poisson 计时器计算的暂停时间乘以它。这使您可以从一个地方更新 Think Times 并提高工作效率。

核心改进

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

文档改进

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

不兼容的更改

  • 此版本中引入了 URL 的 CSS 解析缓存,默认启用。它由属性css.parser.cache.size控制。可以通过将其值设置为0来禁用它。请参阅 错误 59885
  • ThroughputController 默认值已更改。现在默认值是 Percent Executions,它是全局的,每个用户都没有。请参阅 错误 60023
  • 从 3.1 版开始,HTML 报告在计算指标时会忽略空事务控制器(可能由If Controller吞吐量控制器生成)。这提供了更准确的指标
  • 从 3.1 版开始,Summariser在计算实时统计信息时会忽略事务控制器生成的 SampleResults,请参阅 错误 60109
  • 从 3.1 版开始,当使用剥离模式(默认使用 StrippedBatch 时,响应也会因 SampleResults 失败而被剥离,您可以通过在user.properties中设置sample_sender_strip_also_on_error=false将其恢复为以前的行为,请参阅 错误 60137
  • 从 3.1 版开始,jmeter.save.saveservice.connect_time属性值为true,这意味着结果的 CSV 文件将包含一个包含连接时间的附加列,请参阅 错误 60106
  • 从 3.1 版本开始,Random Timer 子类(Gaussian Random Timer、Uniform Random Timer 和 Poisson Random Timer)实现接口org.apache.jmeter.timers.ModifiableTimer
  • 从 3.1 版本开始,如果您在 JSR223 Test Elements 中不选择任何语言,将使用 Apache Groovy 语言。请参阅 错误 59945
  • 从 3.1 版开始,CSV DataSet 现在会修剪变量名称,以避免在配置 CSV DataSet 时由于变量名称之间的空格而出现问题。除非您在变量名的开头或结尾使用空格,否则这不会对您产生任何影响。请参阅 错误 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)
    请参阅 错误 53039

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

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

改进

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

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

其他采样器

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

控制器

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

听众

  • 错误 59953 - GraphiteBackendListener:添加平均指标。由 Maxime Chassagneux 部分贡献(gmail.com 上的 maxime.chassagneux)
  • 错误 59975 - 查看结果树:当内容庞大时,文本渲染器会令人讨厌地向下滚动。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 60109 - Summariser:使其在其摘要计算中忽略 TC 生成的 SampleResult
  • 错误 59948 - 将格式化且健全的 HTML 源代码渲染添加到查看结果树
  • 错误 60252 - 将发送的千字节/秒添加到聚合报告和摘要报告
  • 错误 60267 - UX:在查看结果树中,应该可以通过键入转义来关闭配置弹出窗口。由 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 提取器:允许空默认值。由 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 提取器
  • 错误 60221 - CSV 数据集:修剪变量名称
  • 错误 59329 - 修剪 CSVDataSet 中输入文件名中的空格。

职能

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

I18N

  • 拉取请求 #214 - 添加西班牙语翻译以延迟启动线程。由 Asier Lostalé 提供(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 仪表板的统计报告中添加 Sent KB/s
  • 错误 60287 - 报告/仪表板:仪表板中的采样器表有一个新的 Top5 错误。由 Philippe Mouawad(ubik-ingenierie.com 上的 p.mouawad)实施并由 Ubik Load Pack 贡献(ubikloadpack.com 上的支持)

一般的

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

非功能性变化

  • 更新到 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 提供(ubik-ingenierie.com 上的 b.wiart)
  • 拉取请求 #218 - 杂项清理。由 Benoit Wiart 提供(ubik-ingenierie.com 上的 b.wiart)
  • 拉取请求 #216 - 尽可能重用模式。由 Benoit Wiart 提供(ubik-ingenierie.com 上的 b.wiart)
  • 错误 60364 - 文档测试覆盖率。由 Thomas Schapitz 供稿(ts-nospam12 at online.de)

Bug修复

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

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

其他采样器

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

控制器

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

听众

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

计时器、断言、配置、前处理器和后处理器

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

职能

I18N

一般的

  • 错误 59400 - 使用-X选项 时在停止时摆脱 UnmarshalException 。
  • 错误 59607 - 读取大型测试计划(大于 2GB)时 JMeter 崩溃。基于 Felix Draxler 的修复 (felix.draxler at sap.com)
  • 错误 59621 - 报告仪表板中的错误计数是一项。
  • 错误 59657 - 当属性jsyntaxtextarea.font.family设置时,仅在 JSyntaxTextArea 中设置字体。
  • 错误 59720 - Windows 上的批处理测试文件比较失败,因为 XML 文件生成为 EOL=LF
  • 代码清理。Graham Russell 的补丁(graham at ham1.co.uk)
  • 错误 59722 - 使用标准字符集来减少字符集名称拼写错误的可能性。
  • 错误 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 使 Total line 错误
  • 错误 60110 - 报告/仪表板:在响应时间百分位数中,滑块无用
  • 错误 60135 - 报告/仪表板:随着时间的推移活动线程应该在超时部分
  • 错误 60125 - 报告/仪表板:如果默认分隔符为\t ,则无法生成仪表板。基于来自 Tamas Szabadi 的报告(tamas.szabadi at rightside.co)
  • 错误 59439 - 报告/仪表板:AbstractOverTimeGraphConsumer.createGroupInfos() 应该是抽象的
  • 错误 59918 - Ant 生成的 HTML 报告已损坏(附加文件夹)
  • 错误 60295 - 当仅找到一个元素时,JSON 提取器不会索引数组元素。基于 Roberto Braga 的补丁(sociale.it 上的 roberto.braga)
  • 错误 60299 - 带有调度程序的线程组:结束时间过去时的奇怪行为

谢谢

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

  • 费利克斯·德拉克斯勒 (felix.draxler at sap.com)
  • 安东尼奥·戈麦斯·罗德里格斯 (ra0077 at gmail.com)
  • 格雷厄姆·拉塞尔(ham1.co.uk 的格雷厄姆)
  • Teemu Vesala(qentinel.com 上的 teemu.vesala)
  • Asier Lostalé(openbravo.com 上的 asier.lostale)
  • Thomas Peyrard(murex.com 上的 thomas.peyrard)
  • Benoit Wiart (b.wiart at ubik-ingenierie.com)
  • Maxime Chassagneux(gmail.com 上的 maxime.chassagneux)
  • Ubik 加载包
  • Tamas Szabadi (tamas.szabadi at rightside.co)
  • 罗伯托·布拉加 (roberto.braga at soziale.it)
  • gmail.com 上的 jarek102
  • Wyatt Epp(gmail.com 上的 wyatt.epp)
  • Thomas Schapitz (ts-nospam12 at online.de)

我们还要感谢帮助我们改进 JMeter 的错误报告者。
对于这个版本,我们要特别感谢以下记者在我们修复后所做的清晰报告和测试:

如果我们遗漏了其他任何人,我们深表歉意。

已知问题和解决方法

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在运行测试用例或 JMeter 本身时,某些 Linux 系统上 的 Java 存在一个错误,表现为以下错误:
     [java] WARNING: Couldn't flush user prefs:
     java.util.prefs.BackingStoreException:
     java.lang.IllegalArgumentException: Not supported: indent-number
    
    这不会影响 JMeter 的操作。此问题自 Java 7b05 起已修复。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 JMeter,它将为您创建注册表项,然后您可以以普通用户身份重新启动 JMeter,您将不再有警告。
  • 使用 Oracle Java 7 和 Mac Book Pro Retina Display,JMeter GUI 可能看起来很模糊。这是一个已知的 Java 错误,请参阅错误JDK-8000629。一种解决方法是使用修复此问题的 Java 7 update 40 运行时。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
    如果您在具有 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
  • 在 Mac OSX 下,聚合图会由于数字的镜像效应而显示错误的值。这是由于一个已知的 Java 错误,请参阅错误JDK-8065373 修复是使用 JDK7_u79、JDK8_u45 或更高版本。
  • 查看结果树可能无法在 HTML 渲染器下显示某些 HTML 代码,请参阅 错误 54586。这是由于一个已知的 Java 错误导致无法解析行/列属性中的“ px ”单位。请参阅错误JDK-8031109 修复是使用 JDK9 b65 或更高版本。
  • 带有键盘的 JTable 选择(SHIFT  +  up/down)对于 Mac OSX 上的 JAVA 7 完全不可用。这是由于一个已知的 Java 错误JDK-8025126 修复是使用 JDK 8 b132 或更高版本。

3.0 版

概括

新的和值得注意的

测试计划创建和调试改进

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

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

随着新的JSONPath后处理器的引入,JSON 现在是 JMeter 中的一等公民。这个后处理器与正则表达式后处理器非常相似,但非常适合 JSON 代码。它基于Jayway JSON Path 库

新的验证功能,一键运行具有1 个用户、无暂停和1次迭代的线程组选择

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

只需选中缓存已编译脚本(如果可用)复选框,元素(预处理器、后处理器、断言、侦听器等)将预编译脚本并缓存编译后的代码(如果底层语言支持)

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

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

javascript.use_rhino=false

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

  • 如果控制器
  • 选择了javascript语言的 JSR223 测试元素
  • __javaScript函数

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

由于新功能__jexl3,现在可以使用JEXL3。JEXL 是一种与 JSTL 非常相似的语言。

简化的 HTTP 请求 UI

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

HTTP 请求默认值改进

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

报告改进

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

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

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

GraphiteBackendListener 有一个新的 Server Hits 指标

Summariser 显示更具可读性的持续时间

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

Generate Summary Results +      1 in 00:00:01 =    1.7/s Avg:     1 Min:     1 Max:     1 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0
Generate Summary Results +    138 in 00:00:09 =   16.2/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%) Active: 9 Started: 9 Finished: 0
Generate Summary Results =    139 in 00:00:09 =   15.3/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%)
Generate Summary Results +    467 in 00:00:10 =   47.0/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%) Active: 19 Started: 19 Finished: 0
Generate Summary Results =    606 in 00:00:19 =   31.9/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%)
⋮
Generate Summary Results +   1662 in 00:00:10 =  166.1/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%) Active: 50 Started: 50 Finished: 0
Generate Summary Results =  28932 in 00:03:19 =  145.4/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%)
Generate Summary Results +   1664 in 00:00:10 =  166.4/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%) Active: 50 Started: 50 Finished: 0
Generate Summary Results =  30596 in 00:03:29 =  146.4/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%)
Generate Summary Results +   1661 in 00:00:10 =  166.1/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%) Active: 50 Started: 50 Finished: 0
Generate Summary Results =  32257 in 00:03:39 =  147.3/s Avg:     0 Min:     0 Max:     1 Err:     0 (0.00%)

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

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

协议和负载测试改进

已开始迁移到 HttpClient 4.5.2。虽然还没有完全完成,但它改进了 JMeter 中的许多方面

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

并行下载现在是现实的并且可以更好地扩展:

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

采样超时功能介绍

这个新的样本超时预处理器允许您在其范围内的元素上应用超时。在下面的屏幕截图中,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 创建的新徽标。
图标也进行了更新,以赋予更现代的风格并使其更有意义

大量修复烦人的小错误

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

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

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

新的快捷方式

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

核心改进

使用更好的默认值简化配置

许多属性的默认值已被修改,以使 JMeter 配置开箱即用。阅读“不兼容的更改”部分了解更多详细信息。

Apache Groovy 与 JMeter 捆绑在一起

Apache Groovy是著名的 JVM 脚本语言,现在与 Apache JMeter 捆绑在 lib 文件夹中。这允许您通过选择 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()保护方法替换,这与 错误 58100有关。这可能会影响 3 rd方插件。
  • 从 3.0 版开始,您可以在 Java8 下为使用 Javascript 引擎( __javaScriptIfController )的元素使用 Nashorn 引擎(默认 javascript 引擎是 Rhino )。如果您想使用它,请使用属性javascript.use_rhino=false,请参阅 错误 58406
    注意:在未来的版本中,我们将默认切换到 Nashorn。鼓励用户报告与使用 Nashorn 而不是 Rhino 相关的任何问题。
  • 从 3.0 版开始,如果消息源是“ From File ”并且“ Filename ”字段发生更改(例如,如果它使用已更改的变量),JMS Publisher 将重新加载文件的内容
  • org.apache.jmeter.gui.util.ButtonPanel已被删除,如果您在 3 rd方插件或自定义开发中使用它,请确保更新您的代码。请参阅 错误 58687
  • 属性jmeterthread.startearlier已被删除。请参阅 错误 58726
  • 属性jmeterengine.startlistenerslater已被删除。请参阅 错误 58728
  • 属性jmeterthread.reversePostProcessors已被删除。请参阅 错误 58728
  • 属性jmeter.toolbar.display已被删除,工具栏现在始终显示。请参阅 错误 59236
  • 属性jmeter.errorscounter.display已被删除,错误/警告计数器现在始终显示。请参阅 错误 59236
  • 属性xml.parser已被删除,不再使用它,因为org.apache.jmeter.util.JMeterUtils#getXMLParser已被弃用,也不再使用。请参阅 错误 59236
  • Summariser 侦听器现在以HH:mm:ss (Hour:Minute:Second) 格式显示持续时间,之前它以秒为单位显示持续时间。请参阅 错误 58776
  • org.apache.jmeter.protocol.http.visualizers.RequestViewHTTP.getQueryMap签名已更改,如果您使用它,请确保更新您的代码。请参阅 错误 58845
  • 如果接收到的消息数不等于预期的消息数,JMS 订阅者将认为样本是错误的。如果至少收到 1 条消息,它之前认为样本 OK。请参阅 错误 58980
  • 从 3.0 版开始,HTTP(S) 测试脚本记录器默认使用端口8888(在使用记录模板时配置)。请参阅 错误 59006
  • 从 3.0 版开始,依赖于 htmlparser 库 (HtmlParserHTMLParser) 的嵌入式资源解析器(自 2.10 起被基于 Lagarto 的实现取代)及其依赖项已被删除。
  • 从 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 采样器)
    请参阅 错误 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 请求已更新为使用 commons-dbcp2,此后行为略有不同,请确保您的数据库具有正确的“验证查询”。请参阅 错误 58786
  • 以下罐子已被删除:
  • JMeter 允许的最大重定向数现在是 20,之前是 5。这可以通过属性httpsampler.max_redirects进行更改。请参阅 错误 59382

弃用和移除的元素

  • MongoDB 元素(MongoDB 源配置、MongoDB 脚本)已被弃用,并将在下一版本的 JMeter 中删除。它们不再出现在菜单中,如果您需要它们修改not_in_menu属性。JMeter 团队建议不要再使用它们。请参阅 错误 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)已被弃用,将在下一个版本中删除。请参阅 错误 58903
  • Spline Visualizer 侦听器和 Distribution Graph 侦听器已被弃用,并将在下一版本的 JMeter 中删除。它们不再出现在菜单中,如果您需要它们修改not_in_menu属性。JMeter 团队建议不要再使用它们。请参阅 错误 58791

改进

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

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

其他采样器

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

控制器

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

听众

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

计时器、断言、配置、前处理器和后处理器

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

职能

  • 错误 58477 - __javaScript 函数:允许在 Java8 和更高版本中使用 Nashorn 引擎
  • 错误 58903 - 提供使用 commons-jexl3 的 __jexl3 函数和已弃用的 __jexl (1.1) 函数

I18N

一般的

  • 错误 58736 - 添加示例超时支持
  • 错误 57913 - 自动备份上次保存的 JMX 文件。由 Benoit Vatan 提供(gmail.com 上的 benoit.vatan)
  • 错误 57988 - 快捷方式 ( Ctrl  +  1 ... Ctrl  +  9 ) 快速将元素添加到测试计划中。由 Andrey Pokhilko (andrey at blazemeter.com) 实施并由 BlazeMeter Ltd. 提供。
  • 错误 58100 - 性能增强:用 ThreadLocalRandom 替换 Random。
  • 错误 58677 - TestSaveService#testLoadAndSave使用了错误的文件集。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 58689 - 添加快捷方式以展开/折叠树的一部分。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 58696 - 创建 Ant 任务以设置 Eclipse 项目
  • 错误 58653 - 带有动态图、表格的新 JMeter 仪表板/报告,以帮助分析负载测试结果。由 Ubik-Ingenierie 开发,由 Decathlon SA 和 Ubik-Ingenierie / UbikLoadPack 贡献
  • 错误 58699 - Workbench 更改在关闭时既未保存也未提示保存。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 58728 - 删除旧的行为属性
  • 错误 57319 - 升级到 HttpClient 4.5.2。在 Oleg Kalnichevski(apache.org 上的 olegk)和 Gary Gregory(apache.org 上的 ggregory)的大力帮助下。
  • 错误 58772 - 弃用 MongoDB 相关元素
  • 错误 58782 - ThreadGroup:改善人体工程学
  • 错误 58165 - 在 GUI 模式下显示自负载测试开始以来经过的时间。部分基于 Maxime Chassagneux 的贡献(gmail.com 上的 maxime.chassagneux)
  • 错误 58814 - JVM 不再识别选项MaxLiveObjectEvacuationRatio;从评论中删除
  • 错误 58810 - 配置元素计数器(和其他):复选框切换区域太大
  • 错误 56554 - JSR223 测试元素:自动生成编译缓存键。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 58911 - 标头管理器:应该可以在标头管理器之间复制/粘贴。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 58864 - 参数面板:向上/向下移动参数时,确保选择保持可见。基于 Benoit Wiart 的贡献(benoit dot wiart at gmail.com)
  • 错误 58968 - 添加新模板以允许记录包含思考时间的脚本。由 Antonio Gomes Rodrigues 供稿(ra0077 at gmail.com)
  • 错误 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:最小尺寸太小。文森特·赫里尔 (Vherilier at gmail.com) 供稿
  • 错误 58933 - JSyntaxTextArea:能够设置字体。由 Denis Kirpichenkov 供稿(denis.kirpchenkov at gmail.com)
  • 错误 58793 - 创建开发人员页面,解释如何构建和贡献
  • 错误 59046 - JMeter Gui 替换控制器应保留名称和选择。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 59038 - 弃用 HTTPClient 3.1 相关元素
  • 错误 59094 - 放弃对旧 JMX 文件格式的支持
  • 错误 59082 - 删除“ TestCompiler.useStaticSet ”参数。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 59093 - 选项解析错误消息可能会“丢失
  • 错误 58715 - 功能请求:将 groovy-all与 JMeter捆绑在一起
  • 错误 58426 - 改进 JMeter 在高分辨率设备 (HiDPI) 上的显示(增强的第 1 部分)
  • 错误 59105 - TableEditor:添加从剪贴板粘贴行和删除多项选择的功能。文森特·赫里尔 (Vherilier at gmail.com) 供稿
  • 错误 59197 - 线程组:应该可以只运行单个线程组或带有弹出菜单的线程组选择。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 59207 -发生错误时将errorsOrFatalsLabel 的字体颜色更改为红色。由 Antonio Gomes Rodrigues 供稿(ra0077 at gmail.com)
  • 错误 58941 - 创建一个在验证模式下运行线程组的新 Starter(仅1 个线程,1次迭代,没有暂停所有可定制的)
  • 错误 59236 - JMeter 属性:进行一些清理
  • 错误 59240 - 为 Logkit 引入 slf4j 适配器(这允许在插件和核心代码中使用 slf4j)
  • 错误 59153 - 如果 CSVDataSet 正在访问不存在的文件,则停止测试。由 Antonio Gomes Rodrigues 供稿(ra0077 at gmail.com)
  • 错误 59320 - 使用 GenericTestBeanCustomizer 在 GUI 中提供更好的工具提示(CSV 数据集配置、JDBC 连接配置、密钥库配置……)。基于 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 贡献(jmeter at ham1.co.uk)
  • 错误 58684 - JMeterColor 不需要扩展java.awt.Color。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 58687 - ButtonPanel 应该死掉。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 58705 - 使org.apache.jmeter.testelement.property.MultiProperty可迭代。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 58729 - 清理 extras 文件夹以实现可维护性
  • 错误 57110 - 修复了拼写+语法、格式、删除了注释掉的代码等。由 Graham Russell 供稿(jmeter at ham1.co.uk)
  • 在help.txt中运行 JMeter 的正确说明。由 Pascal Schumacher 提供(gmx.net 上的 pascalschumacher)
  • 错误 58704 - 非回归测试:如果测试并在非en_EN语言环境中运行并使用使用 CSV 数据集的 JMX 文件, Ant 任务批处理测试将失败
  • 错误 58897 - 改进 JUnit 测试代码。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 58949 - 清理 LDAP 代码。基于 Benoit Wiart 的补丁(benoit dot wiart at gmail.com)
  • 错误 58897 - 改进 JUnit 测试代码。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 58967 - 使用 JUnit 类别排除需要 gui 的测试。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 59003 - ClutilTestCase testSingleArg8testSingleArg9相同
  • 错误 59064 - 删除支持非常旧的 Avalon 格式 JTL(结果)文件的 OldSaveService
  • 错误 59165 - RSyntaxTextArea 与无头测试不兼容
  • 错误 59021 - 使用Double#compare而不是在NumberProperty#compareTo中重新实现它
  • 错误 59037 - 删除 HtmlParserHTMLParser 和对 htmlparser 和 htmllexer 的依赖
  • 错误 58465 - JMS 读取响应字段的命名和记录错误
  • 错误 58601 - 将saveservice.properties 修改检查从SVN 修订 ID更改为文件本身的 sha1 总和。
  • 错误58726 - 删除jmeterthread.startearlier参数。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 58784 - 使JMeterUtils#runSafe同步/异步 awt 调用可配置并更改可视化工具以使用异步版本。
  • 错误 58790 - CheckDirty 中的问题及其与 ActionRouter 的关系
  • 错误 59095 - 删除八年前已弃用的 UserParameterXMLParser。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)
  • 错误 59262 - 将二进制 jar 列表添加到 LICENSE;将其用于单元测试
  • 错误 59353 - 在 changes.xml 的“不兼容的更改”部分添加“已弃用和删除的元素”。由 Antonio Gomes Rodrigues 供稿(ra0077 at gmail.com)

Bug修复

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

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

其他采样器

  • 错误 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:如果优先级或过期字段为空,则会引发NumberFormatException
  • 错误 59345 - SMTPSampler 连接泄漏。基于 Luca Maragnani 的补丁(luca dot maragnani at gmail dot com)

控制器

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

听众

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

计时器、断言、配置、前处理器和后处理器

  • 错误 58079 -使用 HTTP CacheManager 时 不要缓存具有Vary标头的 HTTP 样本。
  • 错误 58912 - 响应断言 gui:删除超过 1 个选定行只会删除一行。由 Benoit Wiart 供稿(benoit dot wiart at gmail.com)

职能

  • 错误 57825 - 如果最小值等于最大值,__Random 函数将失败(与 错误54453相关的回归)

I18N

一般的

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

谢谢

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

  • Ubik 加载包
  • Benoit Vatan (benoit.vatan at gmail.com)
  • Jérémie Lesage (jeremie.lesage at jeci.fr)
  • 基里尔·扬科夫(myworkpostbox at gmail.com)
  • Amol Moye (amol.moye at thomsonreuters.com)
  • Samoht-fr (https://github.com/Samoht-fr)
  • 格雷厄姆·拉塞尔(ham1.co.uk 的 jmeter)
  • Maxime Chassagneux(gmail.com 上的 maxime.chassagneux)
  • Benoit Wiart(gmail.com 上的 benoit.wiart)
  • 迪卡侬
  • Ubik-Ingenierie SAS
  • 奥列格·卡尔尼切夫斯基 (olegk at apache.org)
  • 帕斯卡舒马赫(gmx.net 上的帕斯卡舒马赫)
  • Vincent Herilier(gmail.com 上的 vherilier)
  • Florent Sabbe(来自 ubik-ingenierie.com 的 dot sabbe)
  • 安东尼奥·戈麦斯·罗德里格斯 (ra0077 at gmail.com)
  • Harrison Termotto(stonybrook.edu 上的哈里森·特莫托)
  • Denis Kirpichenkov (denis.kirpchenkov at gmail.com)
  • 加里·格雷戈里(apache.org 上的 ggregory)
  • 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 上的自动测试仪)

我们还要感谢帮助我们改进 JMeter 的错误报告者。
对于这个版本,我们要特别感谢以下记者在我们修复后所做的清晰报告和测试:

  • gmail dot com 的 purnasatyap 用于测试和报告夜间构建
  • Sergey Batalin (sergey_batalin at mail dot ru) 用于夜间构建的测试和报告
  • Vincent Daburon (vdaburon at gmail dot com) 用于夜间构建的测试和报告

如果我们遗漏了其他任何人,我们深表歉意。

已知问题和解决方法

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在运行测试用例或 JMeter 本身时,某些 Linux 系统上 的 Java 存在一个错误,表现为以下错误:
     [java] WARNING: Couldn't flush user prefs:
     java.util.prefs.BackingStoreException:
     java.lang.IllegalArgumentException: Not supported: indent-number
    
    这不会影响 JMeter 的操作。此问题自 Java 7b05 起已修复。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 JMeter,它将为您创建注册表项,然后您可以以普通用户身份重新启动 JMeter,您将不再有警告。
  • 使用 Oracle Java 7 和 Mac Book Pro Retina Display,JMeter GUI 可能看起来很模糊。这是一个已知的 Java 错误,请参阅错误JDK-8000629。一种解决方法是使用修复此问题的 Java 7 update 40 运行时。
  • 您可能会遇到以下错误:
    java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
    如果您在具有 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
  • 在 Mac OSX 下,聚合图会由于数字的镜像效应而显示错误的值。这是由于一个已知的 Java 错误,请参阅错误JDK-8065373 修复是使用 JDK7_u79、JDK8_u45 或更高版本。
  • 查看结果树可能无法在 HTML 渲染器下显示某些 HTML 代码,请参阅 错误 54586。这是由于一个已知的 Java 错误导致无法解析行/列属性中的“ px ”单位。请参阅错误JDK-8031109 修复是使用 JDK9 b65 或更高版本。
  • 带有键盘的 JTable 选择(SHIFT  +  up/down)对于 Mac OSX 上的 JAVA 7 完全不可用。这是由于一个已知的 Java 错误JDK-8025126 修复是使用 JDK 8 b132 或更高版本。

2.13 版

概括

新的和值得注意的

新元素

带有 Graphite 实现的新 Async BackendListener

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

这是您可以使用GrafanaInfluxDB
获得的 Live Dashboard 阅读内容以了解更多详细信息。

Grafana 仪表板
Grafana 仪表板

核心改进

新的连接时间指标

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

聚合图表和报告

监听器 Aggregate Graph 和 Aggregate Report 之前只显示了 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 脚本、...

分布式测试

为了更好地在云中使用分布式测试,在服务器上开始测试时添加了重试行为。阅读本文了解更多详情。

分布式测试性能

从 JMeter 2.13 开始,剥离模式(StrippingBatch 是默认模式)现在还剥离来自 SubResults 的响应,从而提高消耗的网络带宽。

文档刷新

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

图形用户界面改进

模块控制器

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

工具栏

JMeter 的工具栏已针对某些图标(开始、切换等)进行了刷新。图标现在提供三种尺寸:22x22、32x32 和 48x48。
定义首选尺寸的属性是:

jmeter.toolbar.icons.size=value
值为 22x22(默认大小)、32x32 或 48x48。

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

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

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

HTTP(S) 测试脚本记录器

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

不兼容的更改

  • 从 2.13 开始,汇总图、汇总报告和汇总报告现在将百分比导出为 %,然后再导出与 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 - 性能:改进双向 SSL 身份验证的 SSLContext 重置
  • 错误 57565 - SamplerCreator:添加方法以允许实现将子项添加到创建的采样器
  • 错误 57606 - HTTPSamplerBase#errorResult 在异常时更改样本标签
  • 错误 57613 - HTTP 采样器:添加了 CalDAV 动词(报告、MKCALENDAR)。由 Richard Brigham 供稿(teamaol.com 上的richard.brigham)
  • 错误 48799 - 添加时间以建立与可用示例指标的连接。由 Andrey Pokhilko (andrey at blazemeter.com) 实施,由 BlazeMeter Ltd. 和 Pieter Ennes (apache.org at spam.ennes.nl) 贡献
  • 错误 57500 - 为分布式测试引入重试行为。由 Andrey Pokhilko 和 Dzimitry Kashlach 实施,由 BlazeMeter Ltd. 提供。

其他采样器

  • 错误 57322 - JDBC 测试元素:添加 ResultHandler 以处理可调用语句返回的 ResultSets(cursors)。由 Yngvi Þór Sigurjónsson 提供(gmail.com 上的 blitzkopf)

控制器

  • 错误 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 函数中将 Random 替换为 ThreadLocalRandom

I18N

一般的

非功能性变化

  • 更新到 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("file.separator")替换为File.separator(也将 " path.separator"替换为File.pathSeparator
  • 错误 57389 - 修复转换器中潜在的 NPE
  • 错误 57417 -从NullProperty中 删除未使用的方法isTemporary。这是 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 - 分布式测试:剥离模式不会从子结果中剥离响应(影响使用嵌入式资源下载的负载测试)。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 57562 - 查看结果树 CSS/JQuery 测试器:当语法错误并且 jmeter.log 中发生异常时,什么都不会发生
  • 错误 57514 - 汇总图、汇总报告和汇总报告在保存的文件中显示错误的百分比报告

计时器、断言、配置、前处理器和后处理器

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

一般的

  • 错误 57365 - 由于调用UIManager.setLookAndFeel为时已晚,选择的 LAF 设置不正确。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 57364 - 选项 < Look And Feel 不会更新所有 Windows 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 at t-systems.com) 供稿
  • 错误 57608 - 修复启动脚本与旧 Unix shell 的兼容性,例如在 Solaris 上

谢谢

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

  • Ubik 加载包
  • Yngvi Þór Sigurjónsson (blitzkopf at gmail.com)
  • Dzmitry Kashlach (dzmitrykashlach at gmail.com)
  • 火焰计有限公司
  • Benoit Wiart(gmail.com 上的 benoit.wiart)
  • 帕斯卡舒马赫(t-systems.com 上的 pascal.schumacher)
  • Maciej Franek (maciej.franek at gmail.com)
  • 理查德·布莱根 (richard.brigham at teamaol.com)
  • Pieter Ennes (apache.org at spam.ennes.nl)

我们还要感谢帮助我们改进 JMeter 的错误报告者。
对于这个版本,我们要特别感谢以下记者在我们修复后所做的清晰报告和测试:
  • Chaitanya Bhatt (bhatt.chaitanya at gmail.com) 对新的 BackendListener 和 Graphite Client 实现的全面测试。
  • Marcelo Jara(hotmail.com 上的 marcelojara)对 错误 57607的明确报告。
如果我们遗漏了其他任何人,我们深表歉意。

已知错误

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在运行测试用例或 JMeter 本身时,某些 Linux 系统上 的 Java 存在一个错误,表现为以下错误:
     [java] WARNING: Couldn't flush user prefs:
     java.util.prefs.BackingStoreException:
     java.lang.IllegalArgumentException: Not supported: indent-number
    
    这不会影响 JMeter 的操作。此问题自 Java 7b05 起已修复。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 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 错误,请参阅错误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 兼容。

新元素

临界区控制器

关键部分控制器允许序列化树中部分的执行。在测试期间,只会同时执行该部分的一个实例。

DNS缓存管理器

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

  • CDN(内容交付网络)
  • DNS 负载平衡。
  • 负载均衡器,例如 Amazon Elastic Load Balancer

核心改进

更智能地记录 Http 测试计划

测试脚本记录器在许多方面都得到了改进

  • 更好地匹配请求中的变量,使测试脚本记录器在记录过程中使您的采样器更加灵活
  • 能够从查看结果树中过滤从记录中排除的样本,这让您可以专注于记录的采样器分析,而不会打扰无用的样本结果
  • 更好的默认记录,因为这个版本的记录器将对创建的采样器进行编号,让您在查看结果树中轻松找到它们。事务控制器下的采样器分组将更加智能,使网页发出的所有请求都成为新事务控制器的子级

支持 Webdav 请求

您现在可以使用 HttpClient4 实现的 Http 请求针对 WebDav 服务器进行测试

更好地处理嵌入式资源

当检查下载嵌入资源时,JMeter 现在使用 User Agent 标头来下载或不根据About conditional comments下载嵌入在条件注释中的资源。

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

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

JMS 发布者/JMS 点对点

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

邮件阅读器采样器

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

SMTP 采样器

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

同步定时器

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

性能改进

通过解除无用的同步,函数的性能有了很大的提高。它涉及除 __StringFromFile、__XPath 和 __BeanShell 之外的所有函数,请参阅 错误 57114

__jexl2 性能已得到改进以避免争用点,请参阅 错误 56708

图形用户界面改进

撤消/重做支持

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

查看结果树

通过更改渲染器的位置并允许自定义排序(使用属性view.results.tree.renderers_order)来改进视图结果树的人体工程学。

响应时间图

添加响应时间图侦听器在 jmx 文件中/从 jmx 文件中保存/恢复其设置的功能。

日志查看器

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

文件打开

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

已知错误

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在运行测试用例或 JMeter 本身时,某些 Linux 系统上 的 Java 存在一个错误,表现为以下错误:
     [java] WARNING: Couldn't flush user prefs:
     java.util.prefs.BackingStoreException:
     java.lang.IllegalArgumentException: Not supported: indent-number
    
    这不会影响 JMeter 的操作。此问题自 Java 7b05 起已修复。
  • 请注意,在某些 Windows 系统下,您可能会收到以下警告:
    java.util.prefs.WindowsPreferences
    WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
    x80000002. Windows RegCreateKeyEx(…) returned error code 5.
    
    修复方法是以管理员身份运行 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 错误,请参阅错误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,请参见 Bug 54778。您可以选择不同的方式来处理这种情况,请参阅jmeter.properties中的cache_manager.cached_resource_mode
  • 从 JMeter 2.12 开始,日志查看器在关闭时将不再清除日志,即使关闭也会有日志可用。请参阅 错误 56920。 有关配置此组件的详细信息,请阅读提示和技巧 > 启用调试日志记录。

Bug修复

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

  • 错误 55998 - HTTP 记录 - 用用户定义的变量替换端口值不起作用
  • 错误 56178 - keytool 错误:AVA 中的转义字符无效: - 某些字符必须转义
  • 错误 56222 - 如果 jmeter.httpclient.strict_rfc2616=true 并且位置不是绝对的,则为 NPE
  • 错误 56263 - DefaultSamplerCreator 应将 BrowserCompatible Multipart 设置为 true
  • 错误 56231 - 将重定向位置处理从 HC3/HC4 采样器移动到 HTTPSamplerBase#followRedirects()
  • 错误 56207 - URL 在 HC3.1 和 HC4 采样器中的重定向上编码
  • 错误 56303 - 目标控制器组合列表的宽度应设置为当前面板大小,而不是控制器的标签大小
  • 错误 54778 - 在缓存中找到资源时,HTTP 采样器不应返回 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 提供(gmail.com 上的 hovinen)
  • 错误 56761 - JMeter 尝试停止已停止的 JMS 连接并显示“连接已关闭”
  • 错误 57068 - 在测试操作中输入负持续时间时不会引发错误
  • 错误 57078 - LagartoBasedHTMLParser 无法解析包含无类型输入的页面
  • 错误 57183 - JMSSampler:对于输入字符串:“” java.lang.NumberFormatException(对于到期或优先级字段)

控制器

  • 错误 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 编码

职能

I18N

一般的

  • 错误 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 at 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。基于James Liang的报告和分析
  • 错误 56119 - 每次使用计时器尝试上传文件都会失败。为不发送 Keep-Alive 标头的服务器启用空闲超时。
  • 错误 56272 - MirrorServer 应支持状态和重定向的查询参数
  • 错误 56772 - 解析嵌入式资源时处理 IE 条件注释
  • 错误 57026 - HTTP(S) 测试脚本记录器:更好的默认设置。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 57107 - 补丁提案:将 DAV 动词添加到 HTTP 采样器。由 Philippe Jung 提供(famille-jung.fr 上的 apache)
  • 错误 56357 - 证书不符合算法约束:添加注释以指示如何删除 Java 安装这些新的安全约束

其他采样器

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

控制器

  • 错误 56728 - 用于序列化测试块的新关键部分控制器。部分基于 Mikhail Epikhin 提供的补丁(yandex.ru 上的 epihin-m)
  • 错误 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 (dzmitrykashlach at gmail.com) 的补丁,由 BlazeMeter Ltd. 提供。
  • 错误 52061 - 允许访问 Regex Extractor 中的请求标头。基于来自 Dzmitry Kashlach (dzmitrykashlach at gmail.com) 的补丁,由 BlazeMeter Ltd. 提供。

职能

  • 错误 56708 - __jexl2 不适用于多个 CPU 内核。基于 Mikhail Epikhin(yandex.ru 上的 epihin-m)提供的分析和补丁
  • 错误 57114 - 性能:只有值作为实例变量的函数不应同步执行。基于 Ubik Load Pack 支持和 Vladimir Sitnikov 的分析,由 Vladimir Sitnikov 贡献的补丁(sitnikov.vladimir at gmail.com)

I18N

一般的

  • 错误 21695 - Unix jmeter 启动脚本假定它在 PATH 上,而不是链接上
  • 错误 56292 - 在启动文件中添加对 Java 版本的检查,并在 Java v8 引擎时禁用某些选项
  • 错误 56298 - JSR223 语言显示不显示将使用哪个引擎
  • 错误 56455 - 批处理文件:放弃对非 NT Windows shell 脚本的支持
  • 错误 52707 - 使打开文件对话框使用最后打开的文件夹作为开始文件夹。基于来自 Dzmitry Kashlach (dzmitrykashlach at gmail.com) 的补丁,由 BlazeMeter Ltd. 提供。
  • 错误 56807 - 能够强制刷新 ResultCollector 文件。由 Andrey Pohilko 提供(ya.ru 上的 apc4)
  • 错误 56921 - 模板:改进录制模板以忽略嵌入资源的大小写和 URL 参数。由 Ubik Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 42248 - 对测试计划树修改的撤消重做支持。由 Andrey Pohilko (apc4 at 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 添加到覆盖 equals 的内部类。由 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 开始)

谢谢

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

  • James Liang (jliang at andera.com)
  • Emmanuel Bourg (ebourg at apache.org)
  • 尼古拉·安布罗塞蒂 (ambrosetti.nicola at gmail.com)
  • Ubik 加载包
  • Mikhail Epikhin(yandex.ru 上的 epihin-m)
  • Dan Haughey (dan.haughey at swinton.co.uk)
  • 费利克斯舒马赫(felix.schumacher at internetallee.de)
  • Dzmitry Kashlach (dzmitrykashlach at gmail.com)
  • 安德烈·波希尔科(ya.ru 上的 apc4)
  • Bradford Hovinen(gmail.com 上的 hovinen)
  • 火焰计有限公司
  • 格雷厄姆·拉塞尔(ham1.co.uk 的格雷厄姆)
  • Philippe Jung (apache at famille-jung.fr)
  • Vladimir Sitnikov (sitnikov.vladimir at gmail.com)

我们还要感谢帮助我们改进 JMeter 的错误报告者。
对于这个版本,我们要特别感谢以下记者在我们修复后所做的清晰报告和测试: 如果我们遗漏了其他任何人,我们深表歉意。

2.11 版

概括

新的和值得注意的

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

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

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

JMS Publisher/Point to Point : 添加在 JMS 标头属性中设置类型值的功能

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

查看结果树:添加 XPath 测试器

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

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

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

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

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

Summariser 在非 GUI 模式下默认启用

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

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

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

已知错误

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 当 If 控制器的条件在第一次迭代时始终为假时,侦听器不会显示迭代计数(请参阅 错误 52496)。一种解决方法是在与 If 控制器相同(或更高)的级别添加采样器。例如,等待时间为 0 的测试操作采样器(不生成样本),或所有字段设置为 False 的调试采样器(以减少样本大小)。
  • 绿框左侧出现的数字是活动线程数/总线程数,总线程数只适用于本地运行的测试,否则显示为0(见 Bug 55510)。
  • 请注意,在运行测试用例或 JMeter 本身时,某些 Linux 系统上 的 Java 存在一个错误,表现为以下错误:
     [java] WARNING: Couldn't flush user prefs:
     java.util.prefs.BackingStoreException:
     java.lang.IllegalArgumentException: Not supported: 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 错误,请参阅错误JDK-8000629。一种解决方法是使用修复此问题的 Java 7 update 40 运行时。

不兼容的更改

  • 创建新的事务控制器时,从版本 2.11 开始,将取消选中属性“在生成的样本中包含计时器和前置处理器的持续时间”
  • 在非 GUI 模式下,从 2.11 开始以 30 秒的频率启用摘要器
  • JMeter 对重定向处理更宽松,并通过允许相对位置在 RFC2616 上放宽。请参阅jmeter.properties中的属性“ jmeter.httpclient.strict_rfc2616 ”以更改此行为,请参阅 错误 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 的提议提供。

I18N

一般的

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

改进

HTTP 采样器和代理

其他采样器

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

控制器

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

听众

计时器、断言、配置、前处理器和后处理器

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

职能

I18N

一般的

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

非功能性变化

  • 更新到 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)

谢谢

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

  • James Liang (jliang at andera.com)
  • UBIK 加载包(在 ubikloadpack.com 提供支持)

我们还要感谢帮助我们改进 JMeter 的错误报告者。
对于这个版本,我们要特别感谢以下记者在我们修复后所做的清晰报告和测试:
  • John Natsioulas(yahoo.com.au 上的 john_natsioulas)
  • 安东尼奥·戈麦斯·罗德里格斯 (ra0077 at gmail.com)
如果我们遗漏了其他任何人,我们深表歉意。

2.10 版

概括

新的和值得注意的

核心改进

新的性能改进

  • 对高吞吐量测试(无暂停)进行了巨大的性能改进,请参阅 错误 54777
  • 修复了不必要的 SSL 上下文重置问题,该问题提高了纯 HTTP 测试的性能,请参阅 错误 55023
  • 由于切换到 JODD/Lagarto HTML Parser,解析 HTML 页面中的嵌入式资源的性能得到了重要改进,请参阅 错误 55632

查看树结果中的新 CSS/JQuery 测试器

查看树结果中的新 CSS/JQuery 测试器使 CSS/JQuery 提取器成为 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 方法有一个主体(适用于 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 元素中,使代码更具可读性,并允许通过 CTRL+Z/CTRL+Y 进行 UNDO/REDO

带有语法颜色的 BSF 采样器

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

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

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

目前法语的所有标签都已翻译。其他语言已部分翻译,请随时通过阅读本地化(译者指南)贡献翻译

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

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

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

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

(alt + Arrow Up) 和 (alt + Arrow Down) 在父节点内移动元素
(alt + Arrow Left) 和 (alt + Arrow Right) 在树的深度上下移动元素

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

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

已知错误

  • Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。
  • 当 If 控制器的条件在第一次迭代时始终为假时,侦听器不会显示迭代计数(请参阅 错误 52496)。一种解决方法是在与 If 控制器相同(或更高)的级别添加采样器。例如,等待时间为 0 的测试操作采样器(不生成样本),或所有字段设置为 False 的调试采样器(以减少样本大小)。
  • Webservice 采样器不考虑 HTTP 响应状态来计算响应的状态,因此包含非空正文的响应 500 将被视为成功,请参阅 错误 54006。要解决此问题,请确保您始终阅读响应并在响应中添加响应断言检查文本。
  • 出现在绿色框左侧的数字是活动线程数/线程总数,这些仅适用于本地运行的测试;它们不包括在使用客户端-服务器模式时在远程系统上启动的任何线程(参见 错误 54152)。
  • 请注意,在运行测试用例或 JMeter 本身时,某些 Linux 系统上 的 Java 存在一个错误,表现为以下错误:
     [java] WARNING: Couldn't flush user prefs:
     java.util.prefs.BackingStoreException:
     java.lang.IllegalArgumentException: Not supported: 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 错误,请参阅错误JDK-8000629。一种解决方法是使用修复此问题的 Java 7 update 40 运行时。

不兼容的更改

  • 如果主题字段为空,SMTP 采样器现在使用 eml 文件主题
  • 在此版本中,负责写入测试结果的 PrintWriter 上的 autoFlush 已关闭。这会提高密集测试的吞吐量,但在 JMeter 崩溃的情况下会导致更多的测试数据丢失(非常罕见)。要恢复到以前的行为,请将jmeter.save.saveservice.autoflush属性设置为true
  • 函数助手对话框的 快捷方式现在是CTRL+SHIFT+F1(Mac OS 为 CMD + SHIFT + F1)。原始键序列(Ctrl+F1)在某些位置不起作用(它由 Java Swing ToolTipManager 使用)。因此,有必要更改快捷方式。
  • 默认情况下, Web 服务 (SOAP) 请求已从 GUI 中删除,因为 Element 已弃用。(使用 带有正文数据的HTTP 请求,另请参阅 Template Building a SOAP Webservice Test Plan),如果您需要显示它,请参阅jmeter.properties中的属性not_in_menu
  • 事务控制器现在将Generated Parent Sampler响应代码 (如果选中Generated Parent Sampler)设置为第一个失败子节点的响应代码,以防其中一个子节点失败,在以前的版本中,响应代码为空。
  • 在以前的版本中,IncludeController可以运行位于Thread Group内的测试元素,这种行为(未记录)可能会导致奇怪的行为,它已在此版本中被删除(参见 错误 55464)。包含测试元素的正确方法是使用包含控制器文档中所述的测试片段
  • HttpClient 3.1 和 HttpClient 4.x 采样器的重试计数已更改为0。以前默认值为 1,这可能会导致意外的额外流量。
  • 从此版本开始,HTTP(S) 测试脚本记录器尝试检测样本何时是先前重定向的结果。如果当前响应是重定向,JMeter 将保存重定向 URL。当接收到下一个请求时,会将其与保存的重定向 URL 进行比较,如果匹配,JMeter 将禁用生成的示例。要恢复到以前的行为,请设置属性proxy.redirect.disabling=false
  • 从此版本开始,在HTTP(S) Test Script Recorder中,如果 Grouping 设置为Put each group in a new Transaction Controller,则 Recorder 将创建Transaction Controller实例,其中Include duration of timer and pre-post processor in generated sample设置为 false . 此默认值更准确地反映了响应时间。
  • __escapeOroRegexpChars函数(转义 ORO 保留字符)不再修剪值(参见 错误 55328
  • commons-lang-2.6.jar已从jmeter/lib文件夹中的嵌入式库中删除,因为 JMeter 在运行时不需要它(它仅由 Apache Velocity 用于生成文档)。如果你使用任何依赖它的插件或第三方代码,你需要将它添加到jmeter/lib文件夹 中

Bug修复

HTTP 采样器和代理

  • 错误 54627 - JMeter 代理 GUI:当存在具有长名称的采样器时,采样器设置的类型会占据整个屏幕。
  • 错误 54629 - HTMLParser 不提取 <object> 标记 URL。
  • 错误 55023 - SSL 上下文重用功能 (51380) 对非 ssl 请求性能/吞吐量产生不利影响。基于 Brent Cromarty 的分析(yahoo.ca 上的 brent.cromarty)
  • 错误 55092 - 嵌入式资源 URL 格式错误时显示日志消息“WARN - jmeter.protocol.http.sampler.HTTPSamplerBase:检测到空 URL(不应发生)”。
  • 错误 55161 - SoapSampler.setPostHeaders 中的无用处理。由 Adrian Nistor 提供(伊利诺伊大学的 nistor1)
  • 错误 54482 - HC 无法使用非编码字符进行重定向。
  • 错误 54142 - 当路径包含“|”时 HTTP 代理服务器抛出异常 特点。
  • 错误 55388 - HC3 不允许 IP 源字段覆盖 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 供稿(yandex.ru 上的 epihin-m)
  • 错误 54950 - ModuleController:如果在第一次运行后发生更改并且引用的节点被禁用,则不考虑对引用模块的更改。
  • 错误 55201 - ForEach 控制器不包括开始索引并包括结束索引(澄清文档)。
  • 错误 55334 - 在不保存 TestPlan 的情况下将包含控制器添加到测试计划(由包含控制器组成)导致包含的代码在保存之前不被考虑在内。
  • 错误 55375 - 如果 ModuleController 的名称与目标节点相同,则在非 GUI 模式下出现 StackOverflowError。
  • 错误 55464 - 包含运行包含线程组的控制器

听众

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

计时器、断言、配置、前处理器和后处理器

  • 错误 54540 - “HTML 参数掩码”未在 IHM 中标记为弃用。
  • 错误 54575 - CSS/JQuery 提取器:选择 JODD 实现总是使用 JSOUP。
  • 错误 54901 - 响应断言 GUI 行为异常。
  • 错误 54924 - XMLAssertion 使用 JMeter JVM file.encoding 而不是响应编码,并且不清除 threadlocal 变量。
  • 错误 53679 - 具有本地化的恒定吞吐量计时器错误。卢多维克·加西亚报道

职能

I18N

  • 错误 55437 - ComboStringEditor 不会在语言更改时翻译 EDIT 和 UNDEFINED 字符串
  • 错误 55501 - __char 函数的法语描述编码不正确。由 Antonio Gomes Rodrigues 供稿(ra0077 at gmail.com)

一般的

  • 错误 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 提供(伊利诺伊大学的 nistor1)
  • 错误 55129 - 根据 CVE-2013-1571、VU#225657 更改 Javadoc 生成。
  • 错误 55187 - 在 HTTP CacheManager 中计算 ONE_YEAR_MS 时整数溢出。
  • 错误 55208 - JSR223 语言条目重复;折叠成小写。
  • 错误 55203 - TestBeanGUI - 发现错误的语言设置。
  • 错误 55065 - Spline3.converge() 中的无用处理。由 Adrian Nistor 提供(伊利诺伊大学的 nistor1)
  • 错误 55064 - ReportTreeListener.isValidDragAction() 中的无用处理。由 Adrian Nistor 提供(伊利诺伊大学的 nistor1)
  • 错误 55242 - 升级到 2.8 后 BeanShell 客户端 jar 抛出异常。
  • 错误 55288 - JMeter 应默认为 HTTP 请求重试 0 次。
  • 错误 55405 - 如果缺少 lib/api 或 lib/doc,ant download_jars 任务将失败。由安东尼奥·戈麦斯·罗德里格斯提供。
  • 错误 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 方法中的正文支持使用它的 API(如 ElasticSearch)。
  • 错误 53480 - 向 Http Sampler (HttpClient4) 添加 Kerberos 支持。基于 Felix Schumacher 的补丁(felix.schumacher at internetallee.de)
  • 错误 54874 - 除了源 IP 地址之外还支持设备。基于 Dan Fruehauf 的补丁(gmail.com 上的 malkodan)
  • 错误 55488 - 将 .ico 和 .woff 文件扩展名添加到代理记录器中的默认建议排除项。由安东尼奥·戈麦斯·罗德里格斯提供
  • 错误 55525 - 代理应支持密钥服务器条目的别名
  • 错误 55531 - 代理记录和重定向。添加了禁用重定向样本的代码。
  • 错误 55507 - 代理 SSL 记录不能很好地处理外部嵌入资源
  • 错误 55632 - 有一个新的 htmlParser 实现,用于解析具有更好性能的嵌入式资源
  • 错误 55653 - HTTP(S) 测试脚本记录器应将 TransactionController 属性“在生成的样本中包括计时器和前置处理器的持续时间”设置为 false

其他采样器

  • 错误 54788 - JMS 点对点采样器 - GUI 增强以提高可读性和易用性。由 Bruno Antunes 提供(gmail.com 上的 bmantunes)
  • 错误 54798 - 将 EML 文件中的主题用于 SMTP 采样器。由 Mikhail Epikhin 供稿(yandex.ru 上的 epihin-m)
  • 错误 54759 - 使用 HTTPS 的 SSLPeerUnverifiedException,记录了属性。
  • 错误 54896 - JUnit 采样器仅给出带有构造函数问题的“未能创建类的实例”消息。
  • 错误 55084 - 添加对 JDBC 请求的超时支持。由 Mikhail Epikhin 供稿(yandex.ru 上的 epihin-m)
  • 错误 55403 - 增强操作系统采样器:支持超时
  • 错误55518-添加能力限制“准备好的语句”,“准备好的更新语句”或“ callable语句”查询类型时限制每个连接的缓存准备的准备序列数

控制器

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

听众

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

计时器、断言、配置、前处理器和后处理器

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

职能

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

I18N

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

一般的

  • 错误 54584 - MongoDB 插件。基于 Jan Paul Ettles 的补丁(gmail.com 上的 janpaulettles)
  • 错误 54669 - 添加标志强制非 GUI JVM 在测试后退出。由斯科特埃蒙斯提供
  • 错误 42428 - 工作台未与测试计划一起保存。由 Dzmitry Kashlach 供稿(dzmitrykashlach at gmail.com)
  • 错误 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 - 下载大文件避免内存不足。
  • 错误 55085 - UX 改进:能够从模板创建新的测试计划。由 UBIK Load Pack 提供(在 ubikloadpack.com 提供支持)
  • 错误 55172 - 为插件提供一种添加顶级菜单和菜单项的方法。
  • 错误 55202 - 使用 RSyntaxTextArea 为脚本元素(BeanShell、BSF 和 JSR223)和 JDBC 元素添加语法颜色。贡献者 Milamber 基于 Marko Vlahovic 的补丁(vlahovic74 at gmail.com)
  • 错误 55175 - HTTPHC4Impl 重构以允许更好的继承。
  • 错误 55236 - 模板 - 提供重新加载模板详细信息的按钮。
  • 错误 55237 - 模板系统应支持相对文件名条目。
  • 错误55423 - BatchSampleSender:通过将 listener.processBatch 移到同步块之外来减少锁定粒度
  • 错误 55424 - 向现有 SampleSenders 添加剥离
  • 错误 55451 - 当文本内容足够长以添加滚动条时,使用 JSyntaxTextArea 测试元素 GUI 向下滚动
  • 错误 55513 - StreamCopier 不能与 System.err 或 System.out 一起使用,因为它关闭了输出流
  • 错误 55514 - SystemCommand 应支持任意输入和输出流
  • 错误 55515 - SystemCommand 应支持命令链接
  • 错误 55606 - 将 JSyntaxtTextArea 用于 Http 请求、JMS 测试元素
  • 错误 55651 - 将 JMeter 应用程序图标更改为 Apache 羽状图标

非功能性变化

  • 更新到 jsoup-1.7.2
  • 错误 54776 - 将 Bouncy Castle 的依赖更新到 1.48。由 Emmanuel Bourg 提供(apache.org 上的 ebourg)
  • 更新到 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 - 删除对激活框架的依赖。由 Emmanuel Bourg 提供(apache.org 上的 ebourg)
  • 将 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) 测试脚本记录器

谢谢

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

  • Bruno Antunes(gmail.com 上的 bmantunes)
  • Emmanuel Bourg (ebourg at apache.org)
  • 斯科特·埃蒙斯
  • Mikhail Epikhin(yandex.ru 上的 epihin-m)
  • Dzmitry Kashlach (dzmitrykashlach at gmail.com)
  • Luca Maragnani (luca.maragnani at gmail.com)
  • 米兰伯
  • Adrian Nistor(伊利诺伊大学的 nistor1)
  • 安东尼奥·戈麦斯·罗德里格斯 (ra0077 at gmail.com)
  • UBIK 加载包(在 ubikloadpack.com 提供支持)
  • Benoit Wiart(gmail.com 上的 benoit.wiart)

我们还要感谢帮助我们改进 JMeter 的错误报告者。
对于这个版本,我们要特别感谢以下记者在我们修复后所做的清晰报告和测试:
  • 伊曼纽尔·海登 (immanuel.hayden at gmail.com)
  • 丹尼·拉德 (dlade at web.de)
  • 布伦特克罗马蒂 (brent.cromarty at yahoo.ca)
  • 沃尔夫冈·海德 (wolfgang.heider at racon.at)
  • Shmuel Krakower (shmulikk at gmail.com)
如果我们遗漏了其他任何人,我们深表歉意。

2.9 版

新的和值得注意的

核心改进:

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

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

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

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

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

* TCP 采样器:新选项

TCP 采样器已通过新选项得到增强,以允许设置Close ConnectionSO_LINGEREnd of line(EOL) 字节值

* 引入了新函数__escapeOroRegexpChars(,)引用 ORO 正则表达式元字符

* ForEach 控制器:新字段

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

* Result Status Action Handler 现在有一个新选项“开始下一个线程循环”

* JMS Publisher:新选项

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

* 内存和性能改进

当多个后处理器用作采样器的子级时,此版本对每个线程和 CPU 的内存使用情况进行了显着改进

JSR223 元素(启用使用 Groovy、Scala 等作为脚本语言)已得到改进,以在文本区域中传递脚本时启用编译结果缓存

一些配置默认值已更改以默认提高性能(请参阅 错误 54412),请参阅新建和值得注意的部分中的描述。

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

* XPath 断言现在可以使用 JMeter 变量作为输入

GUI 和人体工程学改进:

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

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

从一个 JMeter 实例复制元素:

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

* HTTP 标头管理器

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

* 模块控制器

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

* HTTP 代理服务器

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

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

HTTP 代理服务器记录:

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

* HTTP 代理服务器不强制用户在 HTTP 采样器设置中选择采样器的类型,这允许在实现之间更轻松地切换,因为采样器不再设置此信息

* 丰富了 SamplerCreator 接口以满足插件提供商的新要求

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

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

已知错误

Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。

当 If 控制器的条件在第一次迭代时始终为假时,侦听器不会显示迭代计数(请参阅 错误 52496)。一种解决方法是在与 If 控制器相同(或更高)的级别添加采样器。例如,等待时间为 0 的测试操作采样器(不生成样本),或所有字段设置为 False 的调试采样器(以减少样本大小)。

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

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

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

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

请注意,在运行测试用例或 JMeter 本身时,某些 Linux 系统上的 Java 存在一个错误,表现为以下错误:

 [java] WARNING: Couldn't flush user prefs:
 java.util.prefs.BackingStoreException:
 java.lang.IllegalArgumentException: Not supported: indent-number
这不会影响 JMeter 的操作。

不兼容的更改

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

一些配置默认值已更改以默认提高性能(请参阅 错误 54412),请参阅新建和值得注意的部分中的描述。

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

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

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

  • 具有无效文件名(不存在或不可读)的 JSR223 测试元素将使测试失败,而不是使元素静默工作
  • 在 JSR223 测试元素中:在脚本执行之前设置 responseCodeOk、responseMessageOK 和success,如果设置了 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 在帖子中发送文件引发 FileNotFoundException
  • 错误 54331 - AjpSampler 在受保护的 GET 请求上抛出空指针

控制器

听众

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

计时器、断言、配置、前处理器和后处理器

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

职能

I18N

一般的

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

控制器

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

听众

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

计时器、断言、配置、前处理器和后处理器

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

职能

I18N

一般的

  • 错误 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
  • 升级到犀牛1.7R4

2.8 版

新的和值得注意的

核心改进:

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

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

HTTP Cookie 管理器(支持 IPv6)

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

内存和性能改进

此版本对 JMeterThread 的内存使用进行了重大改进

JSR223 元素(使用 Groovy、scala 等脚本语言启用)已得到改进,以启用:

  • 在可用时使用 Compilable 接口以提高 CPU 使用率
  • 将脚本用作文件时的编译缓存
查看跨版本的 JMeter 性能

操作系统进程采样器

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

HTTP 请求:PATCH 动词

将 PATCH 动词添加到 HTTP 采样器

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

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

HTTP 请求

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

各种各样的

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

报告改进:

响应时间图

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

响应时间图的设置

在表中查看结果

在表侦听器中添加延迟以查看结果

聚合图

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

GUI 和人体工程学改进:

HTTP 代理服务器简化

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

HTTP 代理服务器

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

在 JMeter 中查找

CTRL + F 用于新的查找功能

ESC 键现在关闭弹出窗口。

GNOME 3 中的用户界面

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

已知错误

Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。

当 If 控制器的条件在第一次迭代时始终为假时,侦听器不会显示迭代计数(请参阅 错误 52496)。一种解决方法是在与 If 控制器相同(或更高)的级别添加采样器。例如,等待时间为 0 的测试操作采样器(不生成样本),或所有字段设置为 False 的调试采样器(以减少样本大小)。

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

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

请注意,在运行测试用例或 JMeter 本身时,某些 Linux 系统上的 Java 存在一个错误,表现为以下错误:

 [java] WARNING: Couldn't flush user prefs:
 java.util.prefs.BackingStoreException:
 java.lang.IllegalArgumentException: Not supported: indent-number
这不会影响 JMeter 的操作。

不兼容的更改

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

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

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

函数助手对话框的快捷方式现在是 CTRL+F1(Mac OS 为 CMD + F1),CTRL+F(Mac OS 为 CMD+F1)现在打开搜索对话框。

默认情况下,TestCompiler 现在存储它在 Controller 实例中而不是在静态 Set 中看到的对的详细信息。[ 错误 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 上带有一些 KeyManagerFactory SPI 的ArrayStoreException
  • 错误 53511 - 访问日志采样器 SessionFilter 抛出 NullPointerException - cookie 管理器未正确初始化
  • 错误 53715 - JMeter 不加载 WSDL

控制器

听众

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

计时器、断言、配置、前处理器和后处理器

  • 错误 51512 - Cookie 未插入到带有 IPv6 主机标头的 HTTP 请求中

职能

I18N

一般的

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

改进

HTTP 采样器

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

其他采样器

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

控制器

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

听众

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

计时器、断言、配置、前处理器和后处理器

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

职能

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

I18N

一般的

  • 错误 53364 - 函数助手对话框中的函数列表排序
  • 错误 53418 - 新选项“延迟线程创建直到需要”,它将在需要时创建和启动线程,而不是在测试启动时创建它们
  • 错误 42245 - 在 HTTP 授权管理器中显示清晰的密码
  • 错误 53616 - 在 Gnome 3 的应用程序标题栏中显示“Apache JMeter”标题
  • 错误 53759 - ClientJMeterEngine 使用 SearchByClass(TestListener) 执行不必要的遍历
  • 错误 52601 - CTRL + F 用于新的查找功能
  • 错误 53796 - TestCompiler 使用静态 Set 可以变得巨大
  • 错误 53673 - 在 jmx 文件中添加 JMeter 版本
  • 向 JMeter 非 GUI 和 GUI 客户端添加对 HeapDump 的支持
  • 错误 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 - commons-lang 的 Maven groupId 错误

2.7 版

新的和值得注意的

操作系统进程采样器

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

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

JMS 采样器改进

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

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

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

测试动作采样​​器

允许过早退出循环

Web 服务采样器改进

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

使维护 HTTP 会话可配置

聚合图:具有平均、中值、90% 线、最小和最大列的聚集条形字符

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

聚合图的新设置

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

HTML 报告示例

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

邮件可视化器

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

日志中错误/致命消息数量的新视觉指示器

指示器显示日志中错误/致命消息的数量,可以单击它来切换日志查看器面板

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

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

详细信息框示例

插件作者

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

public boolean applies(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) throws Exception;

已知错误

Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。

当 If 控制器的条件在第一次迭代时始终为假时,侦听器不会显示迭代计数(请参阅 错误 52496)。一种解决方法是在与 If 控制器相同(或更高)的级别添加采样器。例如,等待时间为 0 的测试操作采样器(不生成样本),或所有字段设置为 False 的调试采样器(以减少样本大小)。

不兼容的更改

在替换用户定义的变量时,使用“正则表达式匹配”时,Proxy 将不再替换部分值。它将使用 Perl 5 单词匹配 ("\b")

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

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

Graph Full Results Listener 已被移除。

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

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 采样器 - 过早评估路径中的函数

其他采样器

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

控制器

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

听众

  • 错误 43450 - 侦听器/保存器假定 SampleResult 计数始终为 1;固定生成汇总结果

断言

职能

I18N

一般的

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

改进

HTTP 采样器

其他采样器

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

控制器

听众

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

计时器、断言、配置、前处理器和后处理器

职能

I18N

  • Mailer Visualizer 已国际化。添加了法语翻译。(见 错误 53246

一般的

  • 错误 45839 - 测试操作:允许过早退出循环
  • 错误 52614 - MailerModel.sendMail 有奇怪的方式来计算调试设置
  • 错误 52782 - 在参数表上添加详细信息按钮以显示行的详细信息
  • 错误 52674 - 代理:添加 Sampler Creator 以允许使用潜在的非文本 POST 正文(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 - 重构代理和 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 外观和感觉

允许从选项菜单设置系统或跨平台 LAF

JMeter GUI - 重复节点

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

JMeter 树视图 - 搜索工具

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

HTTP 请求 - 原始请求窗格

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

HTTP 请求 - 其他更改

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

HTTP 请求 - 文件协议

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

使用文件检索嵌入式资源:协议

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

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

嵌入资源的父成功失败

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

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

密钥库 - 多个证书

允许多个证书 (JKS)

聚合图改进

Aggregate Graph Listener 的一些改进:

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

聚合图表栏

计数器 - 新的重置选项

添加一个选项以在每次线程组迭代时重置计数器

职能

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

用户定义变量改进

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

查看结果树

如果结果太大,在查看结果树中而不是只显示一条消息,而是显示配置的尽可能多的结果

控制器 - 更改元素

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

JDBC 前处理器和后处理器

添加 JDBC 前处理器和后处理器

JDBC 事务隔离选项

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

泊松计时器

添加基于泊松的计时器

GUI 和操作系统交互

支持文件拖放。

确认删除对话框

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

通过设置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 格式的文件,但是不支持以旧格式保存文件。

可从 Maven 存储库获得的 JMeter jar

JMeter jar 现在可以从 Maven 存储库中获得。

已知错误

包含控制器在非 GUI 模式下存在一些问题(请参阅错误 40671、41286、44973、50898)。特别是,如果有两个同名的包含控制器,它可能会导致 NullPointerException。

Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。

当 If 控制器的条件在第一次迭代时始终为假时,侦听器不会显示迭代计数(请参阅 错误 52496)。一种解决方法是在与 If 控制器相同(或更高)的级别添加采样器。例如,等待时间为 0 的测试操作采样器(不生成样本),或所有字段设置为 False 的调试采样器(以减少样本大小)。

不兼容的更改

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

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

TCP Sampler 从 2.6 开始以不同的方式处理 SocketTimeoutException、SocketException 和 InterruptedIOException,当这些发生时,Sampler 被标记为失败。

自 2.6 以来,示例 Sender 实现现在在客户端解析其配置。可以使用属性 sample_sender_client_configured 更改此行为(将其设置为 false)。

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

Bug修复

HTTP 采样器和代理

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

其他采样器

  • 错误 51996 - 当多个线程同时进入 InitialContextFactory#lookupContext 时,JMS 初始上下文泄漏新创建的上下文
  • 错误 51691 - 授权不适用于 JMS 发布者和 JMS 订阅者
  • 错误 52036 - 由于缺少 clientId 字段,ActiveMQ 的持久订阅失败
  • 错误 52044 - 与许多线程一起使用的 JMS 订阅者会导致 javax.naming.NamingException:Something already bound with ActiveMQ
  • 错误 52072 - LengthPrefixedBinaryTcpClientImpl 可能会提前结束样本
  • 错误 52390 - AbstractJDBCTestElement:perConnCache 中的内存泄漏和同步问题

控制器

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

听众

  • 错误 52357 - 在表中查看结果不允许多个结果样本
  • 错误 52491 - 树侦听器/Http 请求视图中的 Post 数据参数解析不正确

断言

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

职能

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

I18N

一般的

  • 错误 51937 - JMeter 不能很好地处理丢失的 TestPlan 条目
  • 错误 51988 - 当变量字段为空时,CSV 数据集配置无法解析标头解析的默认分隔符
  • 错误 52003 - 查看结果树“自动滚动”在节点展开时无法正确滚动
  • 错误 27112 - 用户参数应使用滚动条
  • 错误 52029 - 命令行关闭仅发送到最后启动的引擎
  • 错误 52093 - 工具栏工具提示不切换语言
  • 错误 51733 - 如果您中断测试计划,SyncTimer 会搞砸
  • 错误 52118 - 新工具栏:没有运行测试时未禁用关闭和停止按钮
  • 错误 52125 - 如果在其中一个 TreeMap 中有更多具有相同响应时间的样本,则 StatCalculator.addAll(StatCalculator calc) 连接不正确
  • 错误 52339 - 分布式测试中的 JMeter 统计模式显示错误的响应时间
  • 错误 52215 - StatVisualizer、SummaryReport、Summariser 中的同步混淆和 StatGraphVisualizer 中的问题
  • 错误 52216 - TableVisualizer:currentData 字段同步不正确
  • 错误 52217 - ViewResultsFullVisualizer:root 和 treeModel 上的同步问题
  • 错误 43294 - XPath 提取器命名空间问题
  • 错误 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 - 返回当前“测试计划”名称的新函数

I18N

一般的

  • 错误 51892 - 默认镜像端口应该与默认代理端口不同
  • 错误 51817 - 在用户定义的变量控件中上下移动变量
  • 错误 51876 - 在 Samplers TreeView 中搜索的功能
  • 错误 52019 - 添加菜单选项以开始测试忽略暂停计时器
  • 错误 52027 - 允许从选项菜单设置系统或 CrossPlatform LAF
  • 错误 52037 - 在重新启动时记住用户设置的 LaF。
  • 错误 51861 - 改进 HTTP 请求 GUI 以更好地显示不带名称的参数(例如 GWT RPC 请求)(开发中)
  • 错误 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 发布者、JMS 订阅者、邮件阅读器采样器、SMTP 采样器和数据库配置中
  • 错误 29352 - 在分布式测试期间使用外部存储来保存样本,添加了 DiskStore 远程样本发送者:类似于 Hold,但将样本保存到磁盘直到测试结束。
  • 错误 52333 - 减少计算 SampleResult#nanoTimeOffset 的开销
  • 错误 52346 - Shutdown 检测是否有任何非守护线程剩余,这会阻止 JVM 退出。
  • 错误 52281 - 支持文件拖放
  • 错误 52471 - 通过使用线程池而不是为每个请求启动线程来提高镜像服务器性能
  • 复活 OldSaveService 以允许读取 Avalon 格式的 JMX 文件(在 2.4 中删除)
  • 添加一个对话框以在调用删除操作时确认删除元素
  • 错误 41788 - 需要作为选项的日志查看器(控制台窗口)
  • 添加选项以更改守护程序线程中的暂停时间(默认为 2000 毫秒),以检查 JVM 是否成功退出。除非暂停时间大于 0,否则现在不会启动线程。

非功能性变化

  • 修复 build.xml:支持脚本;本地化可重用的属性名称
  • 错误 51923 - 计数器功能错误或文档问题?(固定文档)
  • 将velocity.jar 更新到1.7(从1.6.2)
  • 将 js.jar 更新到 1.7R3(从 1.6R5)
  • 更新公共编解码器 1.5 ⇒ 1.6
  • 更新 commons-io 2.0.1 ⇒ 2.1
  • 更新 commons-jexl 2.0.1 ⇒ 2.1.1
  • 更新 jdom 1.1 ⇒ 1.1.2
  • 更新junit 4.9 ⇒ 4.10
  • 错误 51954 - 生成的文档包含导致额外空行的 </br> 条目
  • 错误 52075 - JMeterProperty.clone() 当前返回 Object;它应该返回 JMeterProperty
  • 将 httpcore 更新到 4.1.4
  • 错误 49753 - 请在 Maven 中央存储库上发布 jMeter 工件

版本 2.5.1

主要变化总结

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

已知错误

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

Once Only 控制器在线程组或循环控制器下的行为正确,但除此之外它的行为不一致(或明确指定)。

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

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

不兼容的更改

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 连接(与 HttpClient 3.1 impl 相比)
  • 错误 51750 - 检索所有嵌入式资源不遵循 IFRAME
  • 错误 51752 - 将“检索所有嵌入式资源”与并发池一起使用时,HTTP 缓存被破坏
  • 错误 39219 - HTTP 服务器:文件→打开后无法停止它
  • 错误 51775 - 通过 HttpClient(3.1 和 4.x)捕获时,主机标头中的端口号重复
  • 错误 50617 - 尽管检索了来自服务器的值,但监视器结果图例显示“死”服务器

其他采样器

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

控制器

听众

断言

职能

  • 错误 48943 - 与配置元素结合使用时,函数会被额外调用多次

I18N

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

一般的

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

改进

HTTP 采样器

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

其他采样器

  • Beanshell Sampler 现在支持 Interruptible 接口
  • 错误 51605 - WebService(SOAP) 请求 - 当在请求中选择一个值时,所有请求的 WebMethod 字段值都会暗中更改
  • WebService(SOAP) 请求 - 重新组织的 GUI 以实现更好的设计和用户友好性

控制器

听众

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

计时器、断言、配置、前处理器和后处理器

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

职能

I18N

一般的

  • 错误 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 采样器现在可以在解压缩之前报告请求的大小。
  • JMS 和邮件采样器已得到改进。
  • 新的测试片段测试元素使使用包含控制器更容易
  • 查看结果树侦听器有各种改进
  • 错误 30563 - 线程组应该在 Sample Error 上有一个 start next loop 选项
  • 有两种新的线程组类型 - setUp 和 tearDown - 它们在主线程组之前和之后运行。
  • 客户端-服务器模式现在支持通过 UDP 进行外部停止/关闭,
    可以在同一主机上启动多个 JMeter 服务器实例,而无需更改端口属性。
  • 错误 50516 - HTTP 标头管理器中的“主机”标头未包含在生成的 HTTP 请求中

已知错误

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

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

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

不兼容的更改

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

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

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

Bug修复

HTTP 采样器和代理

  • 错误 50178 - 作为线程组的子级添加的 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 面板 clearGui() 在 Java 1.6 中设置了不正确的默认策略

其他采样器

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

控制器

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

听众

  • 错误 50367 - 清除/清除视图结果树中的所有内容不会清除所选元素

断言

职能

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

I18N

一般的

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

改进

HTTP 采样器

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

其他采样器

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

控制器

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

听众

  • 查看结果树 - 在“Sampler result tab → Parsed”上添加一个对话框的文本框,通过双击单元格显示长值
  • 错误 37156 - 结果树中请求的格式化视图
  • 错误 49365 - 允许将结果集写入相对于已加载脚本的路径中的文件
  • 错误 50579 - 错误计数很长,样本计数是 int。将样本计数更改为长。
  • 查看结果树 - 添加新的大小字段:响应标头和响应正文(以字节为单位)-源自 错误 43363

计时器、断言、配置、前处理器和后处理器

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

职能

I18N

  • 在 HTTP 示例上为新标签添加法语翻译并减小某些标签的大小(通过缩写)

一般的

  • 错误 30563 - 线程组应该在 Sample Error 上有一个 start next loop 选项
  • 错误 50347 - Eclipse 设置说明应该提醒用户下载依赖的 jars
  • 错误 50490 - 设置和发布线程组增强功能以​​获得更好的测试流程。
  • 所有 BeanShell 测试元素现在都定义了脚本变量“prev”和“Label”。
  • 错误 50708 - NewDriver 中的类路径 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 发布者和订阅者现在支持主题和队列。
  • 已经进行了许多其他改进,请参见下文和手册中的内容。

已知错误

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

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

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

不兼容的更改

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-spoofing 安全 cookie 的代理需要不安全
  • 错误 47442 - 在某些条件下使用 https-spoofing 缺少用 http 替换 https
  • 错误48451 - 错误:在 else 分支中的 SoapSampler.setPostHeaders(PostMethod post)
  • 错误 48542 - SoapSampler 使用错误的响应标头字段来确定响应是否为 gzip 编码
  • 错误 48568 - AjpSampler 的 CookieManager 损坏
  • 错误 48570 - AjpSampler 不支持查询参数 (GET/POST)
  • 错误 46901 - HTTP 采样器在第一个文件参数中未正确处理 var/func 引用
  • 错误 43678 - 处理 META 标签 http-equiv 字符集?
  • 错误 49294 - 未从重定向到的页面下载图像
  • 错误 49560 - 跟随重定向时错误的“字节大小”

其他采样器

控制器

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

听众

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

断言

职能

I18N

一般的

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

改进

HTTP 采样器

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

其他采样器

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

控制器

听众

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

计时器、断言、配置、前处理器和后处理器

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

职能

I18N

一般的

  • 错误 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文件:
    • 豆壳 - 2.0b4 ⇒ 2.0b5
    • 公共编解码器 - 1.3 ⇒ ​​1.4
    • Commons-Collections - 3.2 ⇒ 3.2.1
    • JTidy ⇒ r938
    • JUnit - 3.8.2 ⇒ 4.8.1
    • 日志套件 - 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 属性“语言”。

Bug修复

HTTP 采样器和代理

其他采样器

  • 错误 47290 - 连接工厂查找 (JMS) 的无限循环
  • JDBC 采样器不应关闭 Prepared 或 Callable 语句,因为它们已缓存

控制器

听众

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

I18N

  • 修复了 2.3.3 中引入的错误:如果默认 Locale 没有 messages.properties 文件,JMeter 不会启动。

一般的

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

改进

其他采样器

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

版本 2.3.3

主要变化总结

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

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

JDBC Request 可以选择将 Select 语句的结果保存到变量中。JDBC 请求现在可以处理带引号的字符串和 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 属性“语言”。

不兼容的更改

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

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

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

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

上述更改仅影响显示的图标和 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(字符串键,字符串值,字符串 dflt)
  • void setProperty(字符串键,布尔值,布尔 dflt)
  • void setProperty(字符串键,整数值)
  • void setProperty(字符串键,int 值,int dflt)
  • int getPropertyAsInt(字符串键,int defaultValue)
这些是在所有元素都应该扩展的 AbstractTestElement 类中实现的,因此这不太可能导致问题。

Bug修复

HTTP 采样器和代理

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

其他采样器

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

控制器

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

听众

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

断言

  • 错误 45749 - 响应断言不适用于恰好是无效 RE 的子字符串
  • 错误 45904 - 允许 'Not' 响应断言以空样本成功

职能

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

I18N

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

一般的

  • 首次保存新测试计划时提示覆盖现有文件
  • 修改 TestBeans 以显示正确的侦听器弹出菜单
  • 错误 45185 - CSV 数据集空白分隔符导致 OOM
  • 修复不正确的 GUI 分类:“将结果保存到文件”和“生成摘要结果”现在显示为侦听器。“计数器”现在显示为配置元素。
  • 错误 41608 - 已删除误导性警告日志消息
  • 错误 46359 - BSF JavaScript 预处理器在第一次迭代时无法访问采样器变量(为 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 请求现在处理带引号的字符串。
  • JDBC 请求现在可以处理任意变量类型。
  • LDAP 结果数据现在用换行符格式化
  • 错误 45200 - MailReaderSampler:将整个 MIME 消息存储在 SamplerResult 中
  • 错误 45571 - JMS 采样器相关性增强
  • 错误 46030 - 扩展 TCP 采样器以支持以长度为前缀的二进制数据
  • 将类名字段添加到 TCP 采样器 GUI

控制器

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

听众

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

断言、配置、前处理器和后处理器

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

职能

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

I18N

一般的

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

非功能性变化

  • 引入 AbstractListenerGui 类,以便更轻松地创建没有视觉输出的侦听器
  • 断言在 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 采样器路径以“http://”或“https://”开头,那么这将用作完整的 URL,覆盖主机和端口字段。HTTP 采样器现在可以 POST 多个文件。Webservice(SOAP) Sampler 现在可以使用“file:”协议加载本地 WSDL 文件。

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

View Results Tree Listener 现在使用 Tidy 来显示 XML。这应该允许更多内容成功显示。它还避免了下载远程 DTD 文件的需要,这会大大降低渲染速度。

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

BSF 采样器的各种改进:现在支持 Jexl,并且 Javascript 错误可以正常工作。添加了 BSF PreProcessor、PostProcessor 和 Assertion 测试元素。现在所有人都可以访问“props”JMeter Properties 对象。

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

已知错误

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

Once Only 控制器在线程组或循环控制器下表现良好,但否则其行为不一致(或明确指定)。

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

不兼容的更改

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

改进

  • CSV 文件现在可以处理带有嵌入分隔符的字段。
  • 添加了 longSum() 函数
  • 错误 43382 - 为 XPath 断言和后处理器配置整洁的输出(警告、错误)
  • 错误 43984 - 修剪端口字段中的空格
  • 为 __log() 函数添加可选注释
  • 使随机函数变量名可选
  • 通过仅在包含“.functions”的类名中查找函数来减少非 GUI 模式下的类加载。并且不包含“.gui”。
  • 错误 43379 - 开关控制器现在支持按名称和编号选择
  • 可以指定要写入 JTL 文件的变量名称列表(CSV 和 XML 格式)
  • 现在检查 remoteStart 选项 -r 和 -R 是否仅与 non_GUI -n 选项一起使用
  • 错误 44184 - 允许标题与聚合图数据一起保存
  • 在汇总和汇总报告中添加了“保存表格数据”按钮 - 将表格保存为带有标题的 CSV 格式
  • 允许在测试计划中使用大多数功能。注意 __evalVar()、__split() 和 __regex() 不能用于测试计划。
  • 允许从文件加载全局属性,例如 -Gglobal.properties
  • 将“子字符串”选项添加到响应断言
  • 错误 44378 - 土耳其语本地化
  • 将可选的输出变量名称添加到 Jexl 函数
  • 添加 application/vnd.wap.xhtml+xml 作为文本类型
  • 添加意味着覆盖视图结果树中的最大显示大小 - 设置属性:view.results.tree.max_size
  • 使用 Tidy 在 View Results Tree Listener 中显示 XML(避免获取 DTD)
  • 错误 44487 - 德语翻译
  • 作为一种特殊情况,如果 HTTP 采样器路径以“http://”或“https://”开头,则将其用作完整 URL。
  • 错误 44575 - Result Saver 现在只能保存成功的结果
  • 错误 44650 - CSV 数据集现在处理引用的列值
  • 错误 44600 - 使用 Java 1.5+ 运行时的 1 毫秒分辨率计时器
  • 错误 44632 - FTP 采样器的文本输入增强
  • 错误 42204 - 将线程组名称添加到聚合和摘要报告
  • FTP 采样器设置延迟 = 登录时间
  • FTP Sampler 设置一个 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 采样器 GUI 现在还可以找到在 user.classpath 中定义的测试类
  • 前导和尾随空格从函数调用中的变量名中删除。例如, ${__Random(1,63, LOTTERY )} 将使用变量 'LOTTERY' 而不是 ' LOTTERY '
  • Webservice(SOAP) Sampler 现在可以使用以下文件加载本地 WSDL 文件:协议
  • 错误 44872 - 将“所有文件”过滤器添加到打开文件对话框
  • 镜像服务器现在可以独立运行(mirror-server.cmd 和 mirror-server.sh)
  • 错误 19128 - 为 HTTP 采样器添加了多文件 POST 支持
  • 允许使用特殊名称 LAST 来表示最后一次测试运行;适用于 -t、-l、-j 标志
  • 错误44418 /42178 - CSV 数据集文件处理改进
  • 让 BeanShell、Javascript 和 Jexl 函数通过“props”对象访问 JMeter 属性
  • 通过“props”对象让 BSF Sampler 访问 JMeter 属性
  • 将 Jexl 添加为受支持的 BSF 采样器语言
  • 通过“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
  • 使用属性进行日志/登录功能描述
  • 检查 demos 目录下所有 jmx 文件是否可以加载 OK
  • 更新版权至2008;在 HTML 输出中使用复制标签而不是数字字符
  • 从构造函数调用的方法不能被覆盖:将 GUI 初始化方法设为私有
  • 如果可能,将静态变量设为最终变量
  • 将更改拆分为当前和以前的

版本 2.3.1

变更摘要

JMeter 代理

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

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

图形用户界面更改

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

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

Options Menu 现在支持 Collapse All 和 Expand All 项目来折叠和展开测试树。

远程测试

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

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

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

其他增强功能

JMeter 启动不再加载那么多类;这应该会减少内存需求。

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

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

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

一般文档改进。

HTTP

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

现在处理 META 标签 http-equiv 字符集

JDBC

JDBC 采样器现在允许调用过程的 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 控制器(空集合处理错误)
  • 错误 42012 - 变量侦听器文件名不会在远程测试中得到处理。文件名现在可以包含函数引用;变量引用不起作用。
  • 确保侦听器节点在复制粘贴时获得自己的保存配置
  • 正确的代理服务器包括和排除匹配描述 - 包括端口和查询,与之前记录的相反。
  • 聚合图和聚合报告列标题为 KB/Sec;将值固定为 KB 而不是字节
  • 修复 SamplingStatCalculator,使其不再将经过时间添加到 endTime,因为这是由 SampleResult 处理的。这更正了汇总报告和汇总报告吞吐量计算之间的差异。
  • 默认 HTTPSampleResult 为 ISO-8859-1 编码
  • 修复空白编码的默认编码
  • 修复 2.3 中被破坏的 Https 欺骗(端口问题)
  • 修复 HTTP (Java) 采样器,因此 http.java.sampler.retries 意味着重试,即不包括初始尝试
  • 修复 SampleResult 数据类型检查以更好地检测 TEXT 文档

改进

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

非功能性改进

  • 函子代码收紧;Functor 现在可以与接口以及预定义的目标和参数一起使用。
  • 保存图形功能现在会在覆盖现有文件之前提示
  • 添加了调试采样器和调试后处理器。
  • 修正了 Calculator 和 SamplingStatCalculator 中的方法名称
  • 整理监听器文档。

2.3 版

自 2.3RC4 以来的修复

Bug修复

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

改进

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

自 2.3RC3 以来的修复

  • 修复 Summariser 中的 NPE(2.3RC3 中引入的错误)
  • 修复了代理端口的设置(2.3RC3 中引入的错误)
  • 修复了在无头主机上运行非 GUI 时的错误(2.3RC3 中引入的错误)
  • 错误 43054 - SSLManager 导致压力测试饱和并崩溃(2.3RC3 中引入的错误)
  • 阐明了端口字段的 HTTP 请求默认值用法
  • 错误 43006 - 如果未找到 icon.properties 文件,则为 NPE
  • 错误 42918 - 大小断言现在将空响应视为长度为零
  • 错误 43007 - 测试在所有线程组开始之前结束
  • 如果 302 没有 Location 标头,则修复 HTTPSampler2 中可能存在的 NPE。
  • 错误 42919 - CSV 输出中的失败消息为空白 [现在记录第一个非空白消息]
  • 添加指向扩展 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键不适用于 Save All As;更改为Control  +  Shift  +  S
  • 错误 40991 - 允许断言检查标头

版本 2.3RC3

已知问题/限制:

JMeter 远程服务器不支持多个并发测试——每个远程测试都应该在单独的服务器上运行。否则测试可能会因随机异常而失败,例如 StandardJMeterEngine 中的 ConcurrentModification 异常。请参阅 错误 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 测试元素泄漏内存。这可以通过使用文件而不是在测试元素中包含脚本来减少。

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

CSV Dataset变量是在配置处理完成后定义的,不能用于JDBC Config等其他配置项。(见 错误 40394

更改摘要(有关更多详细信息,请参见下文)

一些主要的改进是:

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

主要的错误修复是:

  • HTTPS (SSL) 处理现在有了很大改进
  • 修复了各种远程模式错误
  • Control  +  CControl  +  V现在在测试树中工作
  • 延迟和编码现在可在 CSV 日志输出中使用
  • 测试元素不再默认为以前的内容;更改语言时不再清除测试元素。

不兼容的更改(使用):

注意 javax.net.ssl 属性已从 jmeter.properties 移至 system.properties,如果在 jmeter.properties 中定义,将不再起作用。
新的安排更加灵活,因为它允许定义任意系统属性。

SSL 会话上下文现在是按线程创建的,而不是共享的。这会为 HTTPS 测试生成更真实的负载。该更改可能会减慢使用许多 SSL 线程的测试。可以通过设置 JMeter 属性来启用原始行为:

https.sessioncontext.shared=true

LDAP 扩展采样器现在对线程绑定和单绑定测试使用相同的面板。这意味着任何使用 Single-bind 测试的测试都需要更新以设置用户名和密码。

错误 41140:JMeterThread 行为已更改,因此 PostProcessor 以正向运行(正如它们在测试计划中出现的那样),而不是像以前那样倒序运行。可以通过设置以下 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$Boolean=false

如果将 HTTP 请求默认值中的端口字段设置为 80,则 https 采样器将不再忽略它。

不兼容的更改(开发):

注意clear() 方法在以下接口中定义:Clearable、JMeterGUIComponent 和 TestElement。这些方法有不同的用途,因此其中两个被重命名:Clearable 方法现在是 clearData(),JMeterGUIComponent 方法现在是 clearGui()。可能需要重建 第 3方附加组件。

Calculator 和 SamplingStatCalculator 类不再提供其数据的任何格式。现在应该使用 jorphan.gui Renderer 类进行格式化。

删除了已弃用的方法 JMeterUtils.split() - 改用 JOrphanUtils 版本。

从 SaveGraphicsService 中删除了方法 saveUsingJPEGEncoder()。到目前为止,它还没有被使用,并且使用了 JMeter 中唯一一个特定于 Sun 的类。

新功能/改进:

  • 向 HTTP 授权管理器添加域和领域支持
  • HttpClient 现在的行为与无效证书等的 JDK http 采样器相同
  • 添加了 httpclient.parameters.file 以允许定义 HttpClient 参数
  • 错误 33964 - 如果省略名称/类型,Http 请求可以将文件作为整个帖子正文发送
  • 错误 41705 - 为 POST 请求的 HTTP 采样器添加内容编码选项
  • 错误 40933 错误 40945 - 检索嵌入式资源 URL 时的可选 RE 匹配
  • 错误 27780 -(补丁 19936)创建多部分/表单数据 HTTP 请求而不上传文件
  • 错误 42098 - 对 HTTP GET 中的参数值使用指定的编码
  • 错误 42506 - JMeter 线程现在使用独立的 SSL 会话
  • 错误 41707 - HTTP 代理 XML-RPC 支持
  • 错误 41880 - 向 HTTP 代理服务器添加内容类型过滤
  • 错误 41876 - 添加更多选项来控制 HTTP 代理生成的内容
  • 错误 42158 - 改进对 HTTP 代理服务器中的多部分/表单数据请求的支持
  • 错误 42173 - 让 HTTP 代理处理请求的编码,并取消解码参数值
  • 错误 42674 - 如果未指定,则默认为抢先 HTTP 授权
  • 在 HTTP 采样器中支持“文件”协议
  • 创建新采样器时,现在默认启用 Http 自动重定向
  • 错误 40103 - 各种 LDAP 增强功能
  • 错误 40369 - LDAP:采样器中的稳定搜索结果
  • 错误 40381 - LDAP:更具描述性的字符串
  • BeanShell 后处理器不再忽略具有零长度结果数据的样本
  • 添加了 beanshell.init.file 属性以在启动时运行 BeanShell 脚本
  • 错误 39864 - 现在可以从当前目录或 bin 目录中找到 BeanShell 初始化文件
  • BeanShell 元素现在支持 ThreadListener 和 TestListener 接口
  • BSF Sampler 将附加变量传递给脚本
  • 为 WebService (SOAP) 采样器添加了超时
  • 错误 40825 - 添加 JDBC 准备语句支持
  • 扩展 JDBC 采样器:提交、回滚、自动提交
  • 错误 41457 - 添加 TCP 采样器选项以不重用连接
  • 错误 41522 - 在示例结果中使用 JUnit 采样器名称
  • 错误 42223 - FTP 采样器现在可以上传文件
  • 错误 40804 - 将计数器默认更改为 max = Long.MAX_VALUE
  • 启动 JMeter 时使用属性 jmeter.home(如果存在)覆盖 user.dir
  • 新的 -j 选项可轻松更改 jmeter 日志文件
  • HTTP 镜像服务器工作台元素
  • 错误 41253 - 扩展 XPathExtractor 以使用非 NodeList XPath 表达式
  • 错误 42088 - 为布尔值添加 XPath 断言
  • 添加了 __V 变量函数来解析嵌套变量名
  • 错误 40369 - 等于响应断言
  • 错误 41704 - 允许为 CSV 数据集指定字符集编码
  • 错误 41259 - 注释字段添加到所有测试元素
  • 将标准差添加到汇总报告
  • 错误 41873 - 将名称添加到 AssertionResult 并在 ViewResultsFullVisualizer 中显示 AssertionResult
  • 错误 36755 - 使用 UTF-8 编码保存 XML 测试文件
  • 对 Tree View Listener 使用 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
  • commons-httpclient-3.1-rc1
  • 公共-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 的采样器时修复 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 采样器内容长度
  • 修复 Clear.java 中的类强制转换异常
  • 错误 40383 - 如果已设置,请勿设置内容类型
  • 如果尚未保存测试计划,Mailer Visualiser 测试按钮现在可以使用
  • 错误 36959 - 快捷键“ctrl c”和“ctrl v”不适用于树元素
  • 错误 40696 - 从 STYLE URL() 属性中检索嵌入资源
  • 错误 41568 - 使用“计数器”远程运行测试时出现问题
  • 修复了假设时间戳总是结束时间戳的各种类:
    • 采样状态计算器
    • JTLData
    • 运行样本
  • 错误 40325 - 允许为 WebServiceSampler 指定代理用户和代理密码
  • 更改 HttpClient 代理定义以使用 NTCredentials;为此添加了 http.proxyDomain 属性
  • 错误 40371 - 响应断言“要测试的模式”滚动条问题
  • 错误 40589 - 在嵌入式 URL 中取消转义 XML 实体
  • 错误 41902 - 当 responseCode = -1 时,HTTPSampler 中的 NPE
  • 错误 41903 - ViewResultsFullVisualizer:复制和粘贴时状态列看起来很糟糕
  • 错误 41837 - 代理中的参数值损坏
  • 错误 41905 - 无法在 Java 1.6 中剪切/粘贴/选择标题管理器字段
  • 错误 41928 - 使 HTTP 请求采样器发送的所有请求标头出现在示例结果中
  • 错误 41944 - ResultSaver 不递归处理子结果
  • 错误 42022 - HTTPSampler 不允许多个同名标头
  • 错误 42019 - 内容类型未存储在带有子结果的重定向 HTTP 请求中
  • 错误 42057 - 如果方法为空,则连接可以为空
  • 错误 41518 - JMeter 更改 POST 请求的 HTTP 标头内容类型
  • 错误 42156 - HTTPRequest HTTPClient 错误地对 POST 中的参数值进行 urlencodes
  • 错误 42184 - 添加子样本时未添加到样本的子样本的字节数
  • 错误 42185 - 如果 HTTP 采样器遵循重定向,并设置为下载图像,则图像会被多次下载
  • 错误 39808 - 无效的重定向导致不正确的采样时间
  • 错误 42267 - 代理录制中的并发 GUI 更新失败
  • 错误 30120 - 如果将新的简单控制器添加为子控制器,则会重置简单控制器的名称
  • 错误 41078 - 合并导致测试计划的名称更改
  • 错误 40077 - 创建新元素会从现有元素复制值
  • 错误 42325 - 为 LogicController 实现“清除”方法
  • 错误 25441 - 有时无法正确检测到 TestPlan 更改 (isDirty)
  • 错误 39734 - 复制/粘贴操作后共享的侦听器
  • 错误 40851 - 具有 0 次迭代的循环控制器,停止评估迭代字段
  • 错误 24684 - 如果 jmeter 路径中有空格,则远程启动问题
  • 加载 CSV 数据文件时使用侦听器配置
  • 函数方法 setParameters() 需要同步
  • 将 CLI 长可选参数修复为需要“=”(对于短选项)
  • 修复 SlowSocket 以与 Httpclient(http 和 https)正常工作
  • 错误 41612 - 嵌套在 If Controller 行为异常中的循环
  • 错误 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来禁用

已知问题:

  • 后处理器以相反的顺序运行(请参阅 错误 41140
  • 模块控制器在非 GUI 模式下不工作
  • 随着测试的进行,Aggregate Report 和其他一些侦听器会使用越来越多的内存
  • 并不总是正确处理非默认编码
  • 安装路径中的空格会导致客户端-服务器模式出现问题
  • 语言更改不会传播到所有测试元素
  • SamplingStatCalculator 为计算目的保留所有样本的列表;这可能会导致长时间运行的测试中的内存耗尽
  • 如果服务器证书已过期或未在本地安装,则无法正确处理它们

新功能:

  • 报告功能
  • XPath 提取器后处理器。处理单个和多个匹配。
  • 更简单的 JMX 文件格式 (2.2)
  • BeanshellSampler 代码可以直接更新 ResponseData
  • 错误 37490 - 允许 UDV 作为持续时间断言中的延迟
  • HttpClient 的慢速连接仿真
  • 增强的 JUnitSampler 以便默认情况下断言错误和异常不会附加到错误消息中。用户必须在采样器中明确检查附加
  • 增强了 webservice sampler 的文档以解释它如何与 CSVDataSet 一起使用
  • 增强了 javascript 函数的文档以解释转义逗号
  • 允许 CSV 数据集文件名是绝对的
  • 更好地报告树编译器错误
  • 如果默认值为空,请勿重置 Regex Extractor 变量
  • 添加了 includecontroller.prefix 属性
  • 正则表达式提取器设置组计数
  • 现在可以将整个屏幕保存为图像,而不仅仅是右侧窗格
  • 错误 38901 - 将可选的 SOAPAction 标头添加到 SOAP 采样器
  • 新的 BeanShell 测试元素:Timer、PreProcessor、PostProcessor、Listener
  • __split() 函数现在清除下一个变量,因此它可以与 ForEach 控制器一起使用
  • 错误 38682 - 将 CallableStatement 功能添加到 JDBC 采样器
  • 更容易更改 RMI/服务器端口
  • 添加属性 jmeter.save.saveservice.xml_pi 以在 JTL 文件中提供可选的 xml 处理指令
  • 向可保存在示例日志文件(XML 和 CSV)中的项目添加字节和 URL
  • 后处理器“将响应保存到文件”现在将生成的文件名与样本一起保存,并且文件名可以包含在样本日志文件中。
  • 更改 jmeter.bat DOS 脚本,使其适用于任何目录
  • 用于从命令行定义 nonProxyHosts 的新 -N 选项
  • 用于从输入文件定义系统属性的新 -S 选项
  • 错误 26136 - 允许配置本地地址
  • 加载测试计划时默认展开树 - 可以通过设置属性 onload.expandtree=false 禁用
  • 错误 11843 - URL 重写器现在可以缓存会话 ID
  • 计数器预处理器现在支持格式化数字
  • 添加对 HEAD PUT OPTIONS TRACE 和 DELETE 方法的支持
  • 允许更改默认 HTTP 实现
  • 可选择将活动线程计数(组和全部)保存到结果文件
  • 变量/函数现在可以在监听器文件名中使用
  • 新的 __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 表达式
  • 可选择从 user.properties 加载 JMeter 属性,从 system.properties 加载系统属性。
  • 错误 39707 - 允许正则表达式匹配 URL
  • 将开始时间添加到 Table Visualiser
  • HTTP 采样器现在可以为任何所需的媒体类型提取嵌入式资源

Bug修复:

  • 修复模块控制器中未选择模块时的 NPE
  • 在不存在 ResponseData 时修复 XStream 中的 NPE
  • 使用 Java 1.5 运行且没有 x-jar 时删除 ?xml 前缀
  • 错误 37117 - setProperty() 函数应返回“”;添加了原始设置的可选返回
  • 修复 CSV 输出时间格式
  • 错误 37140 - 在 RegexFunction 中更好地处理编码
  • 加载所有 cookie,而不仅仅是第一个;修复类转换异常
  • 修复默认 Cookie 路径名(移除页面名称)
  • 修复了 resultcode 属性名
  • 错误 36898 - 将编码应用于 RegexExtractor
  • 添加用于保存子结果、断言、延迟、samplerData、responseHeaders、requestHeaders 和编码的属性
  • 错误 37705 - 运行停止后,同步计时器现在可以正常工作
  • 错误 37716 - 代理请求现在可以正确处理文件发布
  • HttpClient Sampler 现在可以节省延迟
  • 在测试计划上使用 JavaScript 函数时修复 NPE
  • 修复 htmlparser 中的 Base Href 解析
  • 错误 38256 - 处理没有路径的 cookie
  • 错误 38391 - 在累积计时器延迟时使用 long
  • 错误 38554 - 随机函数现在使用长数字
  • 错误 35224 - 允许 LDAP 采样器的重复属性
  • 错误 38693 - Webservice 采样器现在可以使用 https 协议
  • 错误 38646 - 正则表达式提取器现在会在匹配失败时清除旧变量
  • 错误 38640 - 修复 WebService 采样器池
  • 错误 38474 - HTML 链接解析器不遵循框架链接
  • 错误 36430 - Counter 现在使用 long 而不是 int 来增加范围
  • 错误 38302 - 修复 XPath 功能
  • 错误 38748 - JDBC DataSourceElement 远程测试失败
  • 错误 38902 - 有时似乎不必要地返回 -1 以获取响应代码
  • 错误 38840 - 使 XML 断言线程安全
  • 错误 38681 - 包含控制器现在可以在非 GUI 模式下工作
  • 将 write(OS,IS) 实现添加到 TCPClientImpl
  • 示例结果转换器将响应代码保存为“rc”。以前它保存为“rs”,但用“rc”读取;它现在也将与“rc”一起阅读。XSL 样式表现在也接受“rc”或“rs”
  • 修复计数器函数,使每个计数器实例都是独立的(以前每个用户的计数器在函数实例之间共享)
  • 修复 TestBean 示例以便它们工作
  • 修复 JTidy 解析器,使其不会跳过带有背景图像的正文标签
  • 修复 HtmlParser 解析器,使其捕获所有背景图像
  • 错误 39252从 XML 数据设置 SoapSampler 示例结果
  • 错误 38694 - WebServiceSampler 未正确设置数据编码
  • 结果收集器现在关闭侦听器读取的输入文件
  • 错误 25505 - 第一次 HTTP 采样失败并显示“HTTPS 主机名错误:应该是 'localhost'”
  • 错误 25236 - 从断言结果侦听器中删除双滚动条
  • 错误 38234 - 图形侦听器除以零问题
  • 错误 38824 - 澄清忽略状态的行为
  • 错误 38250 - jmeter.properties “语言”现在支持国家后缀,适用于 zh_CN 和 zh_TW 等
  • jmeter.properties 文件在读取后现在已关闭
  • 错误 39533 - StatCalculator 添加了错误的项目
  • 错误 39599 - ConcurrentModificationException
  • HTTPSampler2 现在可以正确处理自动和跟随重定向
  • 错误 29481 - 修复重新加载示例结果,因此子结果不计算两次
  • 错误 30267 - 正确处理自动重定向
  • 错误 39677 - 在 JMETER_BIN 变量中留出空间
  • 使用 Commons HttpClient 对 cookie 进行解析和管理。修复 cookie 处理的各种问题。
  • 错误 39773 - NTCredentials 需要主机名

其他变化

  • 更新到 HTTPClient 3.0(从 2.0)
  • 更新到 Commons Collections 3.1
  • 改进了树视图中请求数据的格式
  • 扩展的用户文档
  • 为所有 jar 添加了 MANIFEST、NOTICE 和 LICENSE
  • 将 htmlparser 接口提取到单独的 jarfile 中,以便替换解析器
  • 删除不再需要的 SQL Config GUI(或工作!)
  • HTTPSampler 不再记录未找到页面的警告 (404)
  • StringFromFile 现在可以调用为 __StringFromFile(以及 _StringFromFile)
  • 更新到 Commons Logging 1.1

版本 2.1.1

新功能:

  • 新的包含控制器允许测试计划引用外部 jmx 文件
  • 为使用 JUnit 测试类添加了新的 JUnitSampler
  • 新的聚合图侦听器能够绘制聚合统计信息
  • 可以使用属性 user.classpath 和测试计划元素提供额外的类路径条目

Bug修复:

  • AccessLog Sampler 和 JDBC 测试元素从 2.0 测试计划中正确填充
  • BSF 采样器现在从保存的测试计划中填充文件名和参数
  • 错误 36500 - 在 WebServiceSampler 中更优雅地处理丢失的数据
  • 错误 35546 - 将合并添加到右键菜单
  • 错误 36642 - Summariser 在 2.1 中停止工作
  • 错误 36618 - CSV 标题行与保存的数据不匹配
  • JMeter 现在应该在 JVM 1.3 下运行(但不使用 1.3 构建)

2.1 版

新功能:

  • 新的测试脚本文件格式——更小、更紧凑、更易读
  • 新的样本结果文件格式 - 更小、更紧凑
  • XSchema 断言
  • XML 树显示
  • CSV 数据集配置项
  • 新的 JDBC 连接池配置元素
  • 同步定时器
  • 设置属性函数
  • 保存错误响应数据
  • Ant JMeter XSLT 现在可以选择显示失败的响应并具有内部链接
  • 允许省略 JavaScript 变量名
  • 更改了以下采样器以从采样器名称设置示例标签
  • 所有测试元素都可以作为图形图像保存到文件中
  • 错误 35026 - 将 RE 模式匹配添加到代理
  • 错误 34739 - 增强恒定吞吐量计时器
  • 错误 25052 - 使用响应编码在响应断言中创建比较字符串
  • 新的可选图标
  • 允许通过属性文件定义图标
  • 2.1 格式 XML 测试输出的新样式表
  • 将采样器、配置元素和侦听器保存为 PNG
  • 对 WSDL 处理的增强支持
  • 用于主题和队列消息的新 JMS 采样器
  • JMS 采样器的操作方法
  • 错误 35525 - 添加了西班牙语本地化
  • 错误 30379 - 允许覆盖 server.rmi.port
  • 增强了监视器监听器以保存计算的统计信息
  • 函数和变量现在在测试计划的顶层工作

Bug修复:

  • 错误 34586 - XPath 始终保持为 /
  • BeanShellInterpreter 没有正确处理空对象
  • 修复中文资源包名称
  • 如果需要,将字段名称保存到 CSV 文件
  • 确保 XML 文件已关闭
  • 现在为 TestBean 组件显示正确的图标
  • 允许在创建菜单时缺少可选 jar
  • 更改了采样器以从采样器名称设置示例标签,就像 HTTP 的情况一样
  • 修复各种采样器以避免在提供不完整数据时出现 NPE
  • 修复 Cookie Manager 使用秒数;添加调试
  • 错误 35067 - 使用 -t 选项时设置文件名
  • 不要用代理中的 UDV 替换 TestElement.* 属性
  • 错误 35065 - 不要在文件保护程序中保存旧扩展名
  • 错误 25413 - 不要不必要地启用重新启动按钮
  • 错误 35059 - 运行时控制器停止工作
  • 清除 LDAP Extended Sampler 创建的任何剩余连接
  • 错误 23248 - 模块控制器不记得保存和重新加载之间的内容
  • 修复中文语言环境
  • 错误 29920 - 如有必要,更改默认语言环境以确保在选择英语时选择默认属性。
  • Tomcat 监视器字幕的错误修复
  • 修复了 web 服务采样器,因此它可以与用户定义的变量一起使用
  • 修复了 LDAP 配置 GUI 元素的屏幕边框
  • 错误 31184 - 确保在 JDBC 采样器中指定了编码
  • TCP 采样器 - 仅与相同的主机共享套接字:端口详细信息;更正手册
  • 在 JTidy 和 Html 解析器中提取嵌入标签的 src 属性

版本 2.0.3

新功能:

  • XPath 断言和 XPath 函数
  • 开关控制器
  • ForEach 控制器现在可以循环遍历组集
  • 允许更改 CSVRead 分隔符(请参阅 jmeter.properties)
  • 错误 33920 - 允许附加属性文件
  • 错误 33845 - 允许直接覆盖 Home 目录

Bug修复:

  • 正则表达式提取器嵌套常量未放置在正确位置 Bug 32395
  • 如有必要,开始时间重置为现在,以便延迟正常工作。
  • 假定调度程序中缺少的开始/结束时间是现在,而不是 1970 年
  • 错误 28661 - 304 响应未出现在侦听器中
  • DOS 脚本现在可以更好地处理不同的磁盘
  • 错误 32345 - HTTP 重写器不适用于 HTTP 请求默认值
  • 捕获运行时异常,因此一个侦听器中的错误不会影响其他侦听器
  • 错误 33467 - __threadNum() 错误地提取了数字
  • 错误 29186 ,33299 - 修复 CLI 解析第二个参数中的“-”
  • 修复 CLI 解析错误:-D arg1=arg2。记录更多启动参数。
  • 修复 JTidy 和 HTMLParser 解析器以处理表单 src= 和链接 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 初始化脚本
  • Result Saver 可以选择只保存失败的结果
  • 显示为 HTML 可以选择不下载帧和图像等
  • 现在可以一次启用/禁用/复制/粘贴多个树元素
  • 添加了 __split() 函数
  • 错误 28699允许断言将不成功的响应(例如 404)视为成功
  • 错误 29075正则表达式提取器现在可以从 http 响应标头和正文中提取数据
  • __log() 函数现在可以写入 stdout 和 stderr
  • URL 修饰符现在可以选择忽略查询参数

Bug修复:

  • 如果控制器现在在第一个错误条件之后工作 错误 31390
  • 正则表达式 GUI 丢失了 Header/Body 复选框 Bug 29853
  • 显示为 HTML 现在可以处理帧和相关图像
  • 右键打开替换为合并
  • 修复一些拖放问题
  • 修复了 foreach 演示示例,使其可以正常工作
  • 错误 30741 SSL 密码提示现在再次起作用
  • StringFromFile 现在在测试结束时关闭文件;现在开始和结束是可选的
  • 错误 31342修复了 SOAP 采样器标头的文本
  • 现在必须先停止代理,然后才能将其删除 Bug 25145
  • Link Parser 现在支持 BASE href 错误 25490
  • 错误 30917 Classfinder 忽略重复的名称
  • 错误 22820允许清除计数器值
  • 错误 28230修复 HTTP 采样器中的 NPE 检索嵌入式资源
  • 改进对 StopTest 的处理;捕获并记录更多错误
  • 如果未定义第一个变量,ForEach 控制器将不再运行任何样本
  • 远程 JDBC 执行中的 错误 28663 NPE
  • 错误 30110 stopTest 处理中的死锁
  • 错误 31696使用调度程序时,持续时间无法正常工作
  • JMeterContext 现在使用 ThreadLocal - 应该修复一些潜在的 NPE 错误

2.0.1 版

错误修复发布。待定。

2.0 版

  • 改进了 HTML 解析;现在可以选择 3 个解析器,并且现在可以检测和下载大多数嵌入的元素。
  • 现在可以通过定义 JMeter 属性 HTTPSamper.delegateRedirects=true 将重定向委托给 URLConnection(默认为 false)
  • 为 Samplers 和 Assertions 等添加了 Stop Thread 和 Stop Test 方法。如果在处理完样本后检测到需要停止测试线程的错误,Sampler 可以调用 setStopThread(true) 或 setStopTest(true)
  • Thread Group Gui 现在有一个额外的窗格来指定采样器错误后发生的情况:继续(如现在)、停止线程或停止测试。这需要在某个阶段扩展到较低的水平。
  • 在运行菜单中添加了关机。这与停止相同,只是它让线程正常完成(即在下一个样本完成后)
  • 通过在运行服务器时定义属性 hold_samples=true 可以缓存远程样本直到测试结束。需要做更多的工作才能从 GUI 控制它
  • 代理服务器可以选择跳过记录浏览器标头
  • 代理重启效果更好(停止等待守护进程完成)
  • 如果已经通过,调度程序将忽略启动
  • 调度程序现在具有延迟功能
  • 添加了 Summariser 测试元素(主要用于非 GUI)测试。这会每隔一段时间(默认为 3 分钟)将摘要统计信息打印到 System.out 和/或日志文件。可以使用多个摘要器;样本按摘要名称累积。
  • 额外的代理服务器选项:创建禁用保持活动的所有采样器在样本集之间添加分隔符标记将响应断言添加到每组中的第一个采样器
  • 测试计划有一个评论字段
  • 帮助页面现在可以推送到后台
  • 单独的功能帮助页面
  • 新增/修改功能
    • __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

待定

1.9 版

  • 样本结果日志文件现在可以是 CSV 或 XML 格式
  • 用于在测试计划运行期间通知迭代事件的新事件模型
  • 用于执行任意 javascript 语句的新 Javascript 函数
  • 许多 GUI 改进
  • 新的预处理器和后处理器取代了修饰符和基于响应的修饰符。
  • 兼容jdk1.3
  • JMeter 函数现在是完全递归和通用的(可以使用函数作为函数的参数)
  • 集成帮助窗口现在支持超文本链接
  • 新的随机函数
  • 新的 XML 断言
  • 新的 LDAP 采样器(字母代码)
  • 运行 JMeter 的新 Ant 任务(在 extras 文件夹中)
  • 新的 Java Sampler 测试实现(协助开发人员)
  • 更有效地使用内存,更快地加载 .jmx 文件
  • 新的 SOAP 采样器(alpha 代码)
  • 图形结果可视化工具中的新中值计算
  • 为开发人员的利益添加了默认配置元素
  • 测试运行期间的各种性能增强
  • 新的简单文件记录器可在测试运行期间将 GUI 开销降至最低
  • 新功能:StringFromFile - 从文件中获取值
  • 新功能:CSVRead - 从文件中获取多个值
  • 函数现在不再需要编码 - 如果特殊值是文字值,则应使用“\”转义
  • 新的剪切/复制/粘贴功能
  • SSL 测试应该在更少的用户伪造和非 gui 模式下工作
  • Mailer 模型在非 gui 模式下工作
  • 新的吞吐量控制器
  • 新模块控制器
  • 现在可以安排测试从某个时间到某个时间运行
  • 远程 JMeter 服务器可以从非 gui 客户端启动。此外,在 gui 模式下,所有远程服务器都可以通过单击启动
  • ThreadGroups 现在可以串行或并行运行(默认)
  • 用于覆盖属性的新命令行选项
  • 新尺寸断言

版本 1.8.1

  • 错误修复发布。许多错误是固定的。
  • 从测试树中删除了多余的“根”节点。
  • 在测试树中重新引入图标。
  • 重新组织一些代码以改进构建过程。
  • 查看结果树添加了以 Web 文档形式查看结果的选项(此时仍然存在问题)。
  • Aggregate Listener 中的新 Total 行(此时仍有问题)。
  • 改进了更改 JMeter 的区域设置的能力。
  • SSL 管理器的改进。

1.8 版

  • 改进聚合报告的计算。
  • 简化的应用程序日志记录。
  • 新的持续时间断言。
  • 修复和改进了 Mailer Visualizer。
  • 改进了 HTTP 采样器的资源恢复(套接字和文件句柄)。
  • 改进 JMeter 对测试开始/停止的内部处理。
  • 修复和添加交错和随机控制器行为的选项。
  • 新的计数器配置元素。
  • 新的用户参数配置元素。
  • 改进了文件打开器的性能。
  • 函数和其他元素可以访问全局变量。
  • JMeter 的 GUI 中提供了帮助系统。
  • 可以禁用测试元素。
  • 运行 JMeter 时可以更改语言/区域设置(大多数情况下)。
  • 查看结果树可以配置为仅记录错误。
  • 各种错误修复。

版本 1.7.3

  • 提供更多在测试运行期间动态更改请求的能力的新功能。
  • 日语和德语的新语言翻译。
  • 删除了恼人的 Log4J 错误消息。
  • 改进了对加载 JMeter 1.7 版本测试计划文件(.jmx 文件)的支持。
  • JMeter 现在支持需要用户名/密码身份验证的代理服务器。
  • 指示测试停止的对话框不会在停止测试的问题上挂起 JMeter。
  • GUI 可以运行多个远程 JMeter 服务器(修复了阻止此操作的 GUI 错误)。
  • 帮助在 GUI 中创建函数调用的对话框。
  • HTTP 请求中的新 Keep-alive 开关指示 JMeter 应该或不应该对套接字使用 Keep-Alive。
  • HTTP Post 请求可以在 Path 字段中具有 GET 样式参数。代理现在正确记录它们。
  • 新的用户定义的测试范围的静态变量。
  • 查看结果树现在显示更多信息,包括请求名称(与测试树中的名称匹配)以及完整的请求和 POST 数据。
  • 删除了过时的查看结果可视化工具(改用查看结果树)。
  • 性能增强。
  • 内存使用增强。
  • 图形可视化器 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 依赖项
  • 国际化(冈本隆史)
  • AllTests 错误修复 (neth6@atozasia.com)
  • ClassFinder 错误修复 (neth6@atozasia.com)
  • 新的回路控制器
  • 代理服务器记录来自浏览器的 HTTP 样本(并记录在用户手册中)
  • 多部分表单支持
  • 用于 Header 自定义的 HTTP Header 类
  • 从响应中提取 HTTP 标头信息 (Jamie Davidson)
  • Mailer Visualizer 重新添加到 JMeter
  • JMeter 现在 url 编码参数名称和值
  • 如果他们的 gui 没有被初始化,听众不再给出异常
  • HTTPS 和授权协同工作
  • 新的 Http 采样,自动解析 HTML 响应以下载图像,并包括下载这些图像的总请求时间 (Neth neth6@atozasia.com)
  • 可以解析来自服务器的 HTTP 响应以获取链接和表单,并且可以在运行时提取动态数据并将其添加到测试样本中(记录在案)
  • 新的加速功能(Jonathan O'Keefe)
  • 新的可视化工具(Net)
  • 功能测试的新断言

版本 1.6.1

  • 修复了测试脚本的保存和加载(不再有额外的行)
  • 可以保存和加载特殊字符(如“&”和“<”)。
  • 可以保存和加载定时器和监听器。
  • cookie 的小错误修复(如果您的 cookie 值包含“=”,那么它就坏了)。
  • URL 可以采样 80 以外的端口,并且可以测试 HTTPS,前提是您有必要的 jars (JSSE)

版本 1.6 阿尔法

  • 新用户界面
  • GUI和逻辑代码分离
  • 新模块的新插件框架
  • 增强的性能
  • 测试逻辑分层以获得更大的灵活性
  • 添加了对保存测试元素的支持
  • 添加了对使用单个客户端进行分布式测试的支持

版本 1.5.1

  • 修复了如果标题名称大小写不符合预期导致无法读取 cookie 的错误。
  • 在发送到采样器之前克隆条目 - 防止重定位在线程之间弄乱信息
  • 对方便对话框的小错误修复,用于将参数添加到测试样本。错误阻止对话框中的条目出现在测试样本中。
  • 将 xerces.jar 添加到分发中
  • 将 junit.jar 添加到发行版并创建了一些测试。
  • 开始研究新框架。cvs 中的新文件,但不影响程序。
  • 修复了阻止 HTTPJMeterThread 根据所选计时器延迟的错误。

1.5 版

  • 抽象出 Sampler、SamplerController、TestSample 的概念。Sampler 代表能够理解协议(例如 HTTP、FTP、RMI、SMTP 等)的代码。它是实际连接到正在测试的任何内容的代码。SamplerController 代表了解如何组织和运行一组测试样本的代码。它将采样器及其测试样本绑定在一起并运行它们。TestSample 表示了解如何从用户那里收集有关特定测试的信息的代码。对于网站,它将代表一个 URL 以及要与该 URL 一起发送的任何信息。
  • 用户界面已更新,使输入测试样本更加方便。
  • 添加了线程组,允许用户设置多个测试以同时运行,并允许在这些测试之间共享测试样本。
  • 现在可以保存和加载测试样本。
  • ……还有更多细微的变化/改进……

Apache JMeter 1.4.1-dev

  • 在大量补丁后清理 URLSampler 代码以提高可读性。(SM)
  • 让 JMeter 发送一个特殊的“用户代理”标识符。(SM)
  • 修复了重定向不发送 cookie 和身份验证信息的问题,并删除了 jikes 编译的警告。感谢 Wesley Tanaka 的补丁 (SM)
  • 修复了 URLSampler 中导致在测试 URL 列表时跳过一个 URL 的错误以及 Cookie 处理问题。感谢 Graham Johnson 的补丁 (SM)
  • 修复了 POST 操作的问题。感谢 Stephen Schaub 的补丁 (SM)

Apache JMeter 1.4 - 1999 年 7 月 11 日

  • 修复了 POST 操作的问题。感谢 Brendan Burns 的补丁 (SM)
  • 为那些不提供它的窗口管理器添加了关闭按钮到关于框。感谢 Jan-Henrik Haukeland 指出这一点。(SM)
  • 添加了简单的样条曲线示例可视化器 (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 生成文件 (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)

Go to top