• 关于Jmeter线程组的设置,看这一篇就够了


    一、事件背景

    个人感觉自己做性能测试,可以说是轻车熟路了,而且工作多年一直都是这一套测试思路及体系,从未质疑过自己,也许是狮子座的迷之自信吧!

    也就在上周让我对自己的测试方法及体系产生了质疑!

    为什么?在性能测试的时候,压测500并发通过,人家40并发都过不去。

    通俗点说,就是你测试没问题,在人家那测试出问题了,忽略脚本问题,显而易见因为测试方法差异导致测试结果的不同。

    1、关于执行方法的差异

    • 同事的做法是直接跑10分钟的稳定性测试,然后上并发数;
    • 我的做法一个用户循环访问一次,然后上并发数;

    2、关于执行结果的差异

    • 同事这种方式比我的方式,对目标服务器的压力更大;
    • 体现在哪,如果循环次数选择了一旦选择了永远,即请求次数会比我的方式多,所以自然压力也大;

    3、真的是我测试方法错了吗

    我和同事分别测试两个系统,具体还是有些区别的:

    • 同事这边业务场景有40个接口,执行一次最多1分钟,要不就是20秒,具体没记清楚;
    • 我这边的业务场景有76个接口,执行一次大约50分钟,如果我直接上负载测试10分钟,根本跑不完一组业务场景;
    • 我去请教大周老师,老师说正常先要让跑一定的时间,可以查看是否稳定运行及测试结果是否一致准确,性能测试本就是多次测试的结果。

    4、结论

    我是在最后跑的稳定性测试,是8小时起步,从时间上看覆盖到了他的十分钟,而且压力更大。

    但是,有些同学会问他测试的对吗,他的思路是对的,因为他执行一次业务场景,小于10分钟,在小批量并发测试师没问题的。

    当然,如果并发量上来后,还是设置十分钟的话,会出现我那种情况 业务场景接口没执行完的情况,此处,大家自行尝试见分晓。

    二、关于线程组的相关设置

    我又去查了大量资料,终于找到了一篇我觉得比较在理的文章,并举例给大家演示,我觉得这个同学的理论好像是对的,因为我也测试了下,发现也吻合我的测试结果(算求生存吗?)!
    下面我将举例说明,该方法。

    1、执行第一次数据采样,得到吞吐率和平均响应时间

    由图可知:

    吞吐率=2.6≈3,平均响应时间:t=0.386秒;

    2、计算ramp-up period

    假设线程N=10,估计的吞吐率=3, 那么估计的理想ramp-up period (T)(可以理解为线程启动的准备时间)= 10/3 = 3 秒。

    3、循环次数计算

    现在计算循环次数A。由于我们要考虑在第一个线程结束的时候,确保最后一个线程能启动,那么至少要大于一个值,这个值定位S=T-T/N=3-3/10=2.7。

    当时间到 S=(T-T/N)时,最后一个线程启动,若要使所有线程同时运作,则需要在最后一个线程启动的时候第一个线程仍未关闭,为达到这个要求,需满足A > S/t
    A>2.7/0.386=6.994≈7次 A>(T-T/N)/t

    4、得出的测试方案

    那么我们的测试方案如下:

    5、关于公式


    图片来源于网络,侵删

    三、写在最后

    真的是,活到老,学到老,遇到问题,多总结,多分析就好,技术需要严谨,不定期复盘。感兴趣的同学,可以自己动手尝试下。

    优秀不够,你是否无可替代

    软件测试交流QQ群:721256703,期待你的加入!!

    欢迎关注我的微信公众号:软件测试君


  • 相关阅读:
    Java中的面向对象以及java的基本特性
    Redis数据结构(三):双向链表和压缩链表
    java对象晋升的四种情况
    Redis数据结构(一):对外数据类型和底层数据结构
    InnoDB中的的聚合函数count(?)哪个效率高?
    群智能算法标准测试函数集
    运行vue项目时报错“ValidationError: Progress Plugin Invalid Options”
    uswipeaction 宽度计算的延迟导致组件加载时内部样式错误
    地址智能识别相关插件
    js滑动验证
  • 原文地址:https://www.cnblogs.com/longronglang/p/15616104.html
Copyright © 2020-2023  润新知