如何在指定的线程数失败后停止Jmeter测试

时间:2015-07-13 04:48:36

标签: jmeter beanshell

我有一个事务控制器,在我的Jmeter测试计划中有一个http请求。交易名称和网址来自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时,测试停止。我不确定是谁修复上面的代码。

有人可以告诉我上面代码中的问题吗?

1 个答案:

答案 0 :(得分:3)

变量特定于1个线程,而属性由所有线程共享。

请参阅:

确保您同步访问权限

另一种选择是使用自定义java类作为Singleton并增加其值。

这是一个使用Beanshell的示例实现(Prefer JSR223 + Groovy用于表演):

  • 在测试开始时重置计数器的setupThreadGroup:enter image description here

  • 更新计数器的BeanshellPostProcessor:enter image description here

请注意,当您调用setStopTestNow时,测试线程会被中断,但此时不会完全停止,除非您有一些计时器(通常是这种情况)

  

prev.setStopTestNow(真);