• jmeter-登录用户数和线程数量的关系的爱恨情愁


    本文为在霍格沃兹测试开发学社中学习到的一些技术,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~

    霍格沃兹启发

    性能课程-电商压测实战
    在这里插入图片描述

    背景:

    结合课程的学习,最近在梳理团队小伙伴写的jmeter压测脚本时,发现大家都是在用一个用户(token)来执行多个线程的压测场景,用 用户登录商城下单 这个业务场景来解释:一个已登录用户的token,启动100个线程,这100个线程都是这个用户在不停的下单。
    乍一看,没有问题,能够得到下单的TPS,但是仔细一想,这样的脚本场景缺不是真实的业务场景,真实业务场景是不同的用户在不停的下单。为了能够更切合真实的用户场景,应该模拟多个用户而不是一个用户

    用户和线程数量的关系

    理想情况下,登录用户的数量 = 线程数量在这里插入图片描述

    配置文件里面有两个用户
    在这里插入图片描述
    运行结果:
    在这里插入图片描述
    addOrder_1 使用 Login_1 生成的token
    addOrder_2 使用Login_2 生成的token

    登录用户 < 线程数量

    登录用户为2 线程数量设置为3,如下图:
    在这里插入图片描述

    预期结果:线程3和线程1用的是同一个用户登录,若线程3登陆成功,会导致线程1后续的请求都报token失效。
    实际结果:
    在这里插入图片描述
    线程1登录成功,第一次addorder也执行成功,在执行第二次addorder时,线程3登录成功,导致线程1的token失效,所以第二次addorder请求失败,报token已失效。

    肯定不能在压测过程中,让token失效,那么该如何解决这个问题呢?

    登录用户不够时,肯定是需要轮询用户,轮询用户登录会拿取新token导致原来的token失效,影响正在压测的脚本,那么就不轮询用户登录,而是直接轮询登录之后的token

    • 先获得先有所有用户登录的token
    • 报单轮询使用获得的token列表

    第一步:用setUp线程组先把所有的用户都登录,把token写入到一个txt文件中
    在这里插入图片描述

    import java.io.File;
    import java.io.InputStreamReader;
    import java.io.BufferedWriter;
    import java.io.FileWriter;
    
    File tokenFile = new File("token.txt");
    writer = new FileWriter(tokenFile,true);
    BufferedWriter out = new BufferedWriter(writer);
    out.write("${tokens}\r\n")
    out.flush();
    out.close();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    配置文件读取txt数据
    在这里插入图片描述
    看执行结果:
    在这里插入图片描述


    [只需Docker,环境问题再也不是测开路上的『坑』](https://blog.csdn.net/Hogwartstester/article/details/123633390?csdn_share_tail=%7B%22type%22:%22blog%22,%22rType%22:%22article%22,%22rId%22:%22123633390%22,%22source%22:%22Hogwartstester%22%7D)
  • 相关阅读:
    【前端】npm常用命令
    二、EFCore 数据库表的创建和迁移
    【 OpenGauss源码学习 —— 列存储(CU)(三)】
    CSRF漏洞分析
    小店商品不会写标题怎么办?这些思路和优化技巧或许能帮到你
    MES集成 | 集成标准不统一?看得帆云iPaaS怎么应对
    Spring Boot-3-AbstractApplicationContext
    HashMap的31连环炮,我倒在第5个上
    为什么软考通过率低,还有这么多人报考?
    cubeIDE开发,I2C协议采集传感器数据(SHTC1、LTR-553ALS、BMP280、LSM6DSL、MMC3680KJ)
  • 原文地址:https://blog.csdn.net/qq_15283475/article/details/126869382