仅在n个断言错误后停止JMeter测试执行 问题

仅在n个断言错误后停止JMeter测试执行 问题,jmeter,jmeter-plugins,Jmeter,Jmeter Plugins,我正在JMeter 2.13中模拟压力测试。我的想法是在达到一定的响应时间上限后停止测试,我使用Duration断言节点进行测试 然而,我不想在第一次失败后停止测试执行——在其他稳定的情况下,它可能是单个事件。我希望在n这样的断言错误之后执行失败,因此我可以相对确定系统受到了压力,平均响应应该在我定义的上限附近,这就是我想要停止整个过程的地方 我试过的 我正在使用JMeter插件中的步进线程组。在那里,我可以使用复选框在出现错误后停止测试,但在第一次出现错误时它会这样做。我在文档中找不到其他节点

我正在JMeter 2.13中模拟压力测试。我的想法是在达到一定的响应时间上限后停止测试,我使用Duration断言节点进行测试

然而,我不想在第一次失败后停止测试执行——在其他稳定的情况下,它可能是单个事件。我希望在n这样的断言错误之后执行失败,因此我可以相对确定系统受到了压力,平均响应应该在我定义的上限附近,这就是我想要停止整个过程的地方

我试过的
我正在使用JMeter插件中的步进线程组。在那里,我可以使用复选框在出现错误后停止测试,但在第一次出现错误时它会这样做。我在文档中找不到其他节点可以对其进行建模,所以我猜有一个解决方案我现在还没有看到。

关闭,但并不完全符合您的要求:自动停止Jmeter插件。请参阅文档。您可以将其配置为在一定时间内出现n%的故障时停止测试

如果需要特定数量的错误,可以使用测试动作采样器,并结合If控制器-If(errorCount=n)测试动作停止测试


我建议切换到,因为它更灵活,允许您在其中添加一些自定义代码

例如,您有3个:

  • 阈值
    -最大采样器执行时间。任何超过阈值的值都将被计数
  • maxErrors
    -如果达到和/或超过最大错误量,测试将停止
  • 失败
    -保存断言失败计数的变量。开始时应为零

断言代码示例:

long elapsed = SampleResult.getTime();

long threshold = Long.parseLong(vars.get("threshold"));

if (elapsed > threshold) {

    int failureCount = Integer.parseInt(vars.get("failures"));
    failureCount++;

    int maxErrors = Integer.parseInt(vars.get("maxErrors"));

    if (failureCount >= maxErrors) {
        SampleResult.setSuccessful(false);
        SampleResult.setResponseMessage(failureCount + " requests failed to finish in " + threshold + " ms");
        SampleResult.setStopTest(true);
    } else {

        vars.put("failures", String.valueOf(failureCount));
    }
}
示例断言工作:


有关使用脚本扩展JMeter测试的更多信息,请参阅指南

也许这会有帮助!谢谢,自动停止似乎正是我想要的。关于第二种方法-errorCount是我可以随时访问的预定义变量吗?如果没有,我如何分配捕获的错误数(确切地说是断言错误数)?对不起,我应该说清楚,errorCount不是由它生成的。您可以使用beanshell后处理器并增加聚合错误计数。当prev.getErrorCount==1时