【问题标题】:How to dynamically change row labels in the JMeter summary report?如何动态更改 JMeter 汇总报告中的行标签?
【发布时间】:2019-02-07 18:44:54
【问题描述】:

在我的 JMeter 项目中,我有一个测试片段,它由一个事务控制器组成,该控制器又以一种非常复杂的模式执行一些 http 调用,我想在所有测试中重复使用它们(我将它简化为下面的例子)。我有兴趣从整体上衡量这些 HTTP 调用的性能,因此我选中了“生成父样本”以实现它。

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

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

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

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

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

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

【问题讨论】:

    标签: testing jenkins jmeter jenkins-plugins performance-testing


    【解决方案1】:

    用户变量语法为:

    ${VarName}

    代替用户定义的变量,使用带有用户参数的流控制动作作为子级,并在其中定义变量值

    如果你想正确学习 jmeter,这个book 会帮助你。

    【讨论】:

    • 是的,就是这样!我对 JMeter 很陌生,出于某种原因(我猜是 bash 脚本语法)认为 ${X} 和 $X 是可以互换的。从 3.3 升级到 JMeter 5.x 后,我会考虑切换到“流控制操作”,谢谢!
    【解决方案2】:
    1. 您应该以${TRANSACTION_NAME} 或使用__V() function 的形式引用JMeter 变量,例如${__V(TRANSACTION_NAME)}
    2. 我认为你不应该勾选Include duration of timer and pre-post processors in generated sample 框,因为JMeter 2.11 是错误的。默认情况下,JMeter 不会将前置/后置处理器和计时器的持续时间添加到示例结果中,这是事务控制器应该做的事情,否则您可能会得到假阴性结果。我相信您应该为parameterisation/correlation 和计时器使用前置/后置处理器来模拟用户的“思考时间”,并且应该从 JMeter 指标中排除该时间,因为它与正在测试的实际应用程序性能没有任何共同之处。例如,如果您的响应时间为 1 秒,并且请求之间有 5 秒的“睡眠”时间 - 在您的情况下,JMeter 将报告 6 秒的响应时间,这是实际时间的 6 倍,这可能会令人困惑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多