【发布时间】:2015-07-13 04:48:35
【问题描述】:
我有一个事务控制器,在我的 Jmeter 测试计划中有一个 http 请求。交易名称和 url 来自 CSV 文件。最后,总执行分为 5 个不同的事务。
测试计划:
测试计划 -线程组 - 用户定义变量
总样本执行次数为 8000-10000。现在我想要的是,如果总样本失败次数达到 100,我的 JMeter 测试应该停止测试执行。
我添加了用户定义的变量名称“thread”和值为“0”。我在 Beanshell 后处理器中添加了以下代码
int count= Integer.parseInt(vars.get("thread"));
if (prev.getErrorCount()==1){
count++;
System.out.println(count);
vars.put("thread",Integer.toString(count));
}
if (count==100){
System.out.println("Reached to max number of errors in load test, stopping test");
log.info ("Reached to max number of errors in load test, stopping test");
prev.setStopTestNow(true);
}
不知何故,代码没有按预期工作。当错误计数达到 100 时,Jmeter 测试不会停止。当错误计数达到 130 时停止测试。我不确定谁来修复上面的代码。
有人可以告诉我上面的代码有什么问题吗?
【问题讨论】:
-
你有嵌套样本吗?
-
如果我为单个用户运行它并将错误计数限制为 3,它工作正常。 3 次失败后测试停止。但是当我为 5 个用户运行它时,最大错误计数为 3,测试在 8 次失败后停止。这是简单的脚本。没有嵌套样本。
-
你试过用 props 代替 'vars' 吗?
-
不,我没有。你能分享一些细节吗?
-
props 是全局的,而 vars 是本地化的线程。因为我自己无法尝试,所以我不会推荐它作为答案,但如果它适合你,我会给出更好的解释。