如何使用JMeter实现100个唯一新用户同时下单的自动化负载测试
JMeter 100并发唯一新用户下单负载测试实现方案
1. 修复录制脚本的基础问题与动态参数关联
BlazeMeter录制的脚本默认硬编码所有参数和请求,先完成基础校准:
- 确保线程组下已经添加
HTTP Cookie管理器,默认配置即可,自动维护每个用户的会话状态,保证Menu到确认页的多页面跳转时session连续 - 清理录制产生的冗余请求,比如css、js、图片等静态资源请求,只保留业务提交类的核心请求,减少不必要的性能开销
- 关联所有动态生成的参数:排查流程中所有的CSRF令牌、basket ID、页面隐藏表单字段、订单临时流水号等用户维度唯一的动态值,用
正则表达式提取器或JSON提取器从前置请求的响应中提取对应值,替换后续请求里的硬编码参数,重点校验Your Details、Payment两个提交页面的所有入参
2. 100个唯一新用户的参数化配置
提前准备100组互不重复的测试数据,保证每个用户提交的信息唯一:
- 新建CSV数据文件,每行存储一组
邮箱,密码,其他自定义测试字段 - 在线程组下添加
CSV 数据集 Config,按以下规则配置:Recycle on EOF设置为FalseStop thread on EOF设置为TrueSharing mode设置为All threads,确保每个线程取到唯一的一组用户数据
- 将Your Details页面请求里的邮箱、密码参数替换为CSV对应的变量,比如
${email}、${password}
3. 实现严格完全并发
根据你的并发需求选择对应配置:
- 若要求下单提交动作完全并发(即所有用户走完前面的流程后,同时触发付款提交):
- 线程组配置:线程数设为100,
Ramp-Up时间设为0,循环次数设为1 - 在Payment提交请求的同级节点添加
同步定时器(Synchronizing Timer),Number of Simultaneous Users to Group by设为100,Timeout in milliseconds设为30000,避免部分用户前置流程超时导致全局等待
- 线程组配置:线程数设为100,
- 若要求整个流程从访问Menu页面开始完全并发:只需将线程组的
Ramp-Up时间设为0,无需添加同步定时器
4. 脚本验证与执行
- 先将线程数改为1,做单用户全流程调试,查看
结果树监听器中所有请求响应码正常,最终能成功进入确认页,无参数错误、权限报错 - 单用户调试通过后,添加
汇总报告、响应时间图等需要的监听器,改回100线程即可执行测试
内容的提问来源于stack exchange,提问作者shweta kaushik
相关产品推荐
相关产品推荐

