当前位置:网站首页>JMeter压测时如何在达到给定错误数量后停止测试
JMeter压测时如何在达到给定错误数量后停止测试
2022-08-09 17:31:00 【xuechao】
问题
在做接口自动化性能测试时,偶尔会有不稳定的因素导致请求断言失败。JMeter线程组对错误处理有两种常用处理方式:继续或停止测试

因某些原因极个别错误不影响压测结果是可以忽略的,若选择继续测试,当真正发生服务崩溃时也会一直压下去这不是我们想要的,那么在压测过程中怎样才能在达到指定的累计错误数量后停止测试呢?
解决方案
大致思路:使用beanshell脚本在每次请求结束后使用变量count记录错误数,达到预定的错误数量后通过ctx调用stopTest()结束测试。
setUp Thread Group中添加一个BeanShell Sampler

image-20220507113449876 给测试计划添加BeanShell Listener

image-20220507113632198 执行测试

image-20220507115518016 以上使用httpbin提供的的接口进行测试,请求地址不存在的/error,所以在累计错误数count=5时测试停止。
BeanShell Code
// BeanShell Sampler
props.put("__count", "0");
// BeanShell Listener
int __count = Integer.parseInt(props.get("__count"));
int __limit = 5;
int responseCode;
try {
responseCode = Integer.parseInt(prev.getResponseCode());
}
catch (exception ex) {
responseCode = 0;
}
boolean errorResponse = ((responseCode < 200) || (responseCode >= 400) || (prev.getErrorCount() > 0) || (prev.getFirstAssertionFailureMessage() != null));
if (errorResponse) {
__count = __count + 1;
}
log.warn( "errors = " + __count );
if (__count >= __limit) {
log.warn("maximum number of errors reached, aborting test.");
ctx.getEngine().stopTest();
}
props.put("__count", String.valueOf(__count));
讨论
在整体解决过程中,用到了JMeter的一些特性:
props设置count变量时只初始化一次,后面做累计操作,这里用了setUp Group; 为什么使用BeanShell Listener:在errorResponse的判断条件中有响应code、错误数量以及断言信息,这些只有在断言完成后才能获取到,按照JMeter组件执行顺序,Listener组件符合使用条件;
边栏推荐
- 100+开箱即用的AI工具箱;程序员150岁长寿指南;『地理空间数据科学』课程资料;Graphic数据可视化图表库;前沿论文 | ShowMeAI资讯日报
- Detailed explanation of JVM memory model and structure (five model diagrams)
- [极客大挑战 2019]HardSQL
- 释放数据价值的真正法宝,数据要素市场化开发迫在眉睫
- anno arm移植Qt环境后,编译正常,程序无法正常启动问题的记录
- 动态RDLC报表(五)
- 安装搭建私有仓库 Harbor
- 毕昇编译器优化:Lazy Code Motion
- Sublime Text的安装过程记录
- jmeter-录制脚本
猜你喜欢
随机推荐
100+开箱即用的AI工具箱;程序员150岁长寿指南;『地理空间数据科学』课程资料;Graphic数据可视化图表库;前沿论文 | ShowMeAI资讯日报
动态RDLC报表(一)
std::atomic_flag的test_and_set函数理解
What are some good open source automation testing frameworks to recommend?
The principle implementation of handwritten flexible.js, I finally understand the multi-terminal adaptation of the mobile terminal
redirect action
PHP基础笔记-NO.4
[极客大挑战 2019]HardSQL
5.4 总结
web正则表达式中^和$的含义是什么
loadrunner script -- parameterization
2022秋招面试宝典,啃完面试稳了
论文解读:Deep-4MCW2V:基于序列的预测指标,以鉴定大肠杆菌中的N4-甲基环胞嘧啶位点
十七、一起学习Lua 错误处理
Unity Webgl与JS相互交互 Unity 2021.2之后的版本
LeetCode做题小结
安装搭建私有仓库 Harbor
win10 uwp 手动锁Bitlocker
动手学深度学习_风格迁移
动态RDLC报表(四)









