如何动态更改JMeter 汇总报告中的行标签?

How to dynamically change row labels in the JMeter summary report?

在我的 JMeter 项目中,我有一个测试片段,它包含一个事务控制器,该控制器依次以非常复杂的模式执行几个 http 调用,我想在所有测试中重复使用(我将其简化为单个调用在下面的示例中)。我对衡量这些 HTTP 调用的整体性能很感兴趣,所以我检查了 "Generate parent sample" 以实现它。

然后从多个 Tread 组引用测试片段,运行 具有不同参数的单独测试(简化示例中只有一个)。

然后使用摘要报告汇总测试结果,然后 Jenkins Performance 插件使用此汇总数据显示性能趋势并通知开发人员有关性能回归的信息。

问题来了。生成的摘要报告中的行具有相同的标签。它阻止性能插件正确比较测试结果,基本上是随机聚合结果匹配。

摘要报告中的标签字段派生自事务控制器的名称属性。为了使这些名称唯一,我尝试在线程组中定义一个用户变量 ($TRANSACTION_NAME),并将其用作事务控制器中的名称。

很遗憾,它不起作用。摘要报告使用 $TRANSACTION_NAME 文字作为标签而不是其值,即 trans_1

有没有办法解决这个问题并以某种方式动态更改事务控制器名称?或者,也许,告诉摘要报告在汇总结果时使用不同的 var 值作为标签?

用户变量语法为:

${VarName}

不要使用用户定义的变量,而是使用带有用户参数的流控制操作作为子项,并在其中定义变量值

如果您想正确学习 jmeter,这篇 book 会对您有所帮助。

  1. 您应该以 ${TRANSACTION_NAME} 的形式引用 JMeter 变量,或者使用 __V() function${__V(TRANSACTION_NAME)}
  2. 我认为您不应该勾选 Include duration of timer and pre-post processors in generated sample 框,这是错误的,因为 JMeter 2.11. By default JMeter doesn't add the duration of Pre/Post Processors and Timers to the Sample Result and this is something Transaction Controller's should be doing as well as otherwise you might get false negative results. I believe you should be using Pre/Post Processors for parameterisation/correlation 和定时器模仿用户 "think times" 并且该时间应该从 JMeter 指标中排除,因为它没有与被测性能的实际应用程序没有任何共同之处。例如,如果您的响应时间是 1 秒,并且请求之间有 5 秒的 "sleep" - 在您的情况下,JMeter 将报告 6 秒的响应时间,这是实际时间的 6 倍,这可能会令人困惑。