如何在JMeter中设计先5并发每秒5请求后升为10并发每秒10请求的场景?
在JMeter中实现分阶段并发与请求速率控制的测试场景
以下是实现你需求的分步操作,全程用JMeter原生组件+可选插件完成:
1. 搭建基础测试框架
打开JMeter后,先搭好最基础的结构:- 新建测试计划,右键添加线程组
- 给线程组加一个HTTP请求取样器(如果是测接口,填好目标接口的域名、路径、请求方法这些)
- 加几个监听器,比如查看结果树、聚合报告,方便查看测试数据
2. 配置第一阶段:5并发+每秒5请求
要同时控制并发数和请求速率,得结合线程组和固定吞吐量定时器:- 线程组设置:线程数填5,Ramp-Up时间设0(瞬间启动5个用户),循环次数选“永久”(后面用定时器控制阶段时长)
- 添加Constant Throughput Timer(固定吞吐量定时器):右键线程组→定时器→选择该组件
- 目标吞吐量填300(因为每秒5请求=5×60,转换成每分钟的样本数)
- 计算方式选“All active threads in current thread group”,确保速率按当前线程组的并发数计算
3. 实现阶段切换
要从第一阶段切到第二阶段,用定时器+逻辑控制器来控制:- 给线程组加一个Test Action Sampler,命名为“切换到第二阶段”(仅作为阶段标记的空取样器)
- 给这个取样器加Constant Timer,填入第一阶段需要持续的毫秒数(比如300000代表5分钟)
- 添加Flow Control Action逻辑控制器:设置动作为“Go to next iteration of current loop”,到时间后触发线程组更新配置
4. 配置第二阶段:10并发+每秒10请求
这里推荐用jp@gc - Stepping Thread Group(阶梯线程组)插件,比原生线程组更灵活:- 未安装插件的话,先通过JMeter插件管理器搜索安装该线程组插件
- 删除原生线程组,替换为阶梯线程组,然后配置两个阶段:
- 第一阶段:初始延迟0秒,启动线程数5,线程启动时长0秒,持续时长按需填写(比如300秒)
- 第二阶段:点击“Add Row”,设置启动线程数10,线程启动时长0秒,持续时长按需填写
- 给第二阶段加速率控制:
- 添加第二个Constant Throughput Timer,目标吞吐量填600(10×60)
- 套一个If Controller,条件写
${__groovy(ctx.getThreadGroup().getNumberOfThreads() == 10,)},确保这个定时器只在10并发阶段生效
5. 验证测试逻辑
先运行短时间测试(比如1分钟),查看监听器中的并发数和请求速率是否符合预期,确认没问题后再执行完整测试
内容的提问来源于stack exchange,提问作者okeswara reddy
相关产品推荐
相关产品推荐

