【问题标题】:JMeter Hide first iterationJMeter 隐藏第一次迭代
【发布时间】:2019-07-01 18:35:33
【问题描述】:

在 JMeter 中,我想隐藏我的负载测试的第一次迭代,以解决缓存问题和预热问题。现在我有一个 JSR223 PostProcessor,每个请求上方都有下一个代码:

if (vars.getIteration() == 1) {
    prev.setIgnore()
}

这很好用,但汇总报告中的结果不正确。事务控制器显示为空数字,并且 90% 的计算不正确。如何才能在第二次迭代时才填写汇总报告?

测试计划:

  • jp@gc - 终极线程组 |> 事务控制器 |> 采样器

setUp 线程不工作,因为缓存未在线程之间共享

综合报告现在是:

【问题讨论】:

  • 从 csv/report 中删除不需要的事务并通过浏览修改后的文件再次将修改后的报告加载到聚合侦听器中,将为您提供所需的结果。它有帮助还是您正在寻找一种方法自动隐藏。
  • 确实,这个负载测试集成在我们的 CI/CD 流程中,我们希望避免手动工作......

标签: jmeter


【解决方案1】:

创建一个包含 1 个用户、1 次迭代的 setUp 线程组。 向其中添加一个模块控制器。 将模块控制器映射到另一个线程组以运行所有示例。 如果您在 GUI 模式下运行 -> 单独为线程组创建侦听器以获取 JTL 如果您在非 GUI 模式下运行 -> 将 JSR223 后处理器添加到线程组级别而不是任何 smapler 并添加以下内容

(prev.setIgnore())

【讨论】:

  • 您已经创建了一个简单的控制器并放置了所有样本,然后您必须对其进行映射..
  • 我花了一段时间才弄明白,但它确实有效。您必须将所有请求/测试放入简单的控制器中。
【解决方案2】:
  1. 如果您在事务控制器下只有一个采样器 - 您根本不需要事务控制器,因此您的方法应该开始工作
  2. 您可以更改第一次迭代的采样器标签,而不是忽略结果,例如:

    if (vars.get('__jm__jp@gc - Ultimate Thread Group__id').equals('1')) {
        prev.setSampleLabel('IGNORE ME')
    }
    

    完成后,您可以通过Filter Results Tool 将它们剥离,可以使用JMeter Plugins Managercan be executed via command-line 安装该工具,例如:

    FilterResults.bat --output-file final.jtl --input-file your-test-results.jtl ----exclude-label-regex false --exclude-labels "IGNORE ME"
    

【讨论】:

  • 非常感谢!这样解决问题很简单。
猜你喜欢
  • 2016-04-13
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2013-10-03
  • 2010-12-28
相关资源
最近更新 更多