zoukankan      html  css  js  c++  java
  • 关于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,期待你的加入!!

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


  • 相关阅读:
    Insus Meta Utility
    The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.
    Insus Binary Utility
    asp.net实现文件下载功能
    Column 'Column Name' does not belong to table Table
    程序已被编译为DLL,怎样去修改程序功能
    如何在Web网站实现搜索功能
    如何把数据流转换为二进制字符串
    Asp.net更新文件夹的文件
    如何显示中文月份
  • 原文地址:https://www.cnblogs.com/longronglang/p/15616104.html
Copyright © 2011-2022 走看看