首页 > 其他分享 >[转载]jmeter - 如何在指定数量的线程失败后停止 Jmeter 测试

[转载]jmeter - 如何在指定数量的线程失败后停止 Jmeter 测试

时间:2023-10-13 13:22:22浏览次数:29  
标签:count Jmeter 线程 测试 apache jmeter

 原地址 https://www.coder.work/article/7090277  

我有一个事务 Controller ,它在我的 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 时测试停止。我不确定要修复上面的代码。

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

 

最佳答案

 

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

参见:

确保同步访问

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

这里是一个使用 Beanshell 的示例实现(为了性能首选 JSR223 + Groovy):

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

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

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

prev.setStopTestNow(true);

 

关于jmeter - 如何在指定数量的线程失败后停止 Jmeter 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31375570/

标签:count,Jmeter,线程,测试,apache,jmeter
From: https://www.cnblogs.com/harry-han/p/17761868.html

相关文章

  • Nacos 实现动态化线程池,真香!
    在后台开发中,会经常用到线程池技术,对于线程池核心参数的配置很大程度上依靠经验。然而,由于系统运行过程中存在的不确定性,我们很难一劳永逸地规划一个合理的线程池参数。在对线程池配置参数进行调整时,一般需要对服务进行重启,这样修改的成本就会偏高。一种解决办法就是,将线程池的配......
  • C语言 - 使用_beginthreadex()创建线程
    经过了解才知道,C++03之前,用的创建线程都是CreateThread与_beginthreadex。使用这个两个函数进行创建线程。然后C++11之后,就出现了新的线程函数thread,当然,这个创建线程比较方便!经过两三天的纠结,最终决定深入研究_beginthreadex此方式创建线程,具体为什么我也说不清楚,看到网上很多......
  • 面试官:ConcurrentHashMap 是如何保证线程安全的
    1、前言阅读此篇文章,你需要有以下知识基础Java内存模型,可见性问题CASHashMap底层原理我们知道,在日常开发中使用的HashMap是线程不安全的,而线程安全类HashTable只是简单的在方法上加锁实现线程安全,效率低下,所以在线程安全的环境下我们通常会使用ConcurrentHashMap,但是又为何需要学习......
  • jmeter 提取一个或多个响应值保存到csv文件中,用beanshell实现脚本
    importorg.json.JSONObject;//写入文件//本地存储文件路径FileWriterfs=newFileWriter("D:/apache-jmeter-5.1.1/bin/token.csv",true);BufferedWriterout=newBufferedWriter(fs);//提取出来的token,并通过,换列out.write("${sessionStr}");out.write(",");ou......
  • Java 线程池
    目录线程池线程池创建方式通过ThreadPoolExecutor创建线程池ThreadPoolExecutor的总体设计ThreadPoolExecutor的继承关系ThreadPoolExecutor的运行机制ThreadPoolExecutor生命周期管理任务执行机制线程池线程池就是管理一系列线程的资源池。当有任务要处理时,直接从线程池......
  • Jmeter - 定时执行jxm脚本实现稳定性测试
    一、背景1、背景 有个需求需要对某个应用做稳定性测试。2、参考文章链接:https://blog.csdn.net/SomethingBeTrue/article/details/126310730https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/schtasks-create二、实现1、构想用jmeter......
  • Jmeter控制器
    常用的逻辑控制器1、循环控制器:可以设置该控制器内的sampler执行的次数,循环次数与线程的循环次数各自独立2、if控制器:根据判断条件决定是否执行该控制器内的请求,如果是字符串比较条件,参数和字符串都需要加引号条件格式:${__jexl3(条件表达式)}如:${__jexl3(${num}>10)}、${__......
  • C++ - 多线程之线程管理函数
    1.获取线程id函数get_id()的使用该函数在命名空间std::this_thread下。作用是获取当前线程的id。#include<iostream>#include<thread>usingnamespacestd;//No.1get_id()获取线程idvoidthreadFunc(){ cout<<"get_id()子线程id:"<<this_thread::get_id(......
  • C++ - 多线程之带返回值的线程处理函数
    1.使用async函数创建线程1.1使用步骤使用async函数启动一个异步任务(创建线程,并且执行线程处理函数),返回future对象通过future对象中get()方法获取线程处理函数的返回值1.2基本数据类型作为返回值#include<iostream>#include<thread>#include<future>using......
  • C++ - 多线程之线程同步
    1.多线程的并发问题线程间为什么需要同步?直接来看一个例子:inta=0;voidfoo(){ for(inti=0;i<10000000;++i) { a+=1; }}intmain(){ clock_tstart,end; start=clock(); threadt1(foo); threadt2(foo); t1.join(); t2.join(); end=clock();......