我正在JMeter 2.13中对压力测试进行建模。我的想法是在达到某个响应时间上限之后停止测试,我用持续时间断言节点测试。
但是,我不希望在第一次失败后停止测试执行 - 在其他稳定情况下它可能是单个事件。我希望执行在 n 这样的断言错误后失败,所以我可以相对肯定系统受到压力,平均响应应该是我定义的上限,这是我想要的停止整个事情。我正在使用JMeter插件中的Stepping Thread Group。在那里我可以使用复选框在错误后停止测试,但它会在第一时间执行此操作。我发现文档中没有其他节点可以对其进行建模,所以我猜测那里有一个我现在没看到的解决方法。
答案 0 :(得分:3)
我建议切换到Beanshell Assertion,因为它更灵活,并允许您在其中放置一些自定义代码。
例如,您有3 User Defined Variables:
threshold
- 最大采样器执行时间。任何超过阈值的值都将被计算在内maxErrors
- 最大错误数量,如果达到和/或超过failures
- 变量保持断言失败计数。一开始应该为零。
示例断言代码:
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));
}
}
断言工作示例:
请参阅How to use BeanShell: JMeter's favorite built-in component指南,了解有关使用脚本扩展JMeter测试的更多信息。
答案 1 :(得分:1)
关闭但不完全是你要求的:自动停止Jmeter插件。请参阅文档here。如果在一定时间内有n%的失败,您可以将其配置为停止测试。
如果您想要特定数量的错误,可以使用测试操作采样器,并结合使用if-controller - if(errorCount = n)测试操作停止测试