零基础学习性能测试第三章:jmeter构建性能业务场景
目录
- **一、性能场景构建核心四要素**
- **二、四步构建电商性能场景(含截图级配置)**
- **场景需求**:模拟100用户并发操作,其中:
- **步骤1:创建基础结构**
- **步骤2:设置用户比例(吞吐量控制器)**
- **步骤3:添加操作间隔(高斯随机定时器)**
- **步骤4:参数化关键数据(CSV驱动)**
- **三、增强场景真实性的关键技巧**
- **1. 处理动态Token(关联提取)**
- **2. 模拟热点数据(80/20法则)**
- **3. 混合场景监控(事务级监听)**
- **四、零基础调试清单(执行前必查)**
- **五、实战示例:秒杀场景特殊配置**
掌握用JMeter构建真实性能业务场景是性能测试的核心技能。以下针对零基础学习者的 极简实操指南,结合电商案例逐步拆解,含可直接运行的配置示例:
一、性能场景构建核心四要素
要素 | JMeter实现组件 | 作用 | 避坑提醒 |
---|---|---|---|
业务流 | 事务控制器(Transaction Controller) | 将多个操作组合成完整业务流程 | 确保包含所有关键步骤(登录→搜索→下单) |
用户行为节奏 | 定时器(Timers) | 模拟用户操作间隔(思考时间) | 随机延时更真实(如高斯随机定时器) |
用户比例 | 吞吐量控制器(Throughput Controller) | 控制不同操作的发生频率 | 按比例分配权重(如浏览:加购=3:1) |
真实数据驱动 | CSV数据文件配置(CSV Data Set Config) | 参数化用户名/商品ID等动态数据 | 数据量需>并发用户数×循环次数 |
二、四步构建电商性能场景(含截图级配置)
场景需求:模拟100用户并发操作,其中:
- 30%用户执行:登录 → 浏览商品
- 50%用户执行:搜索 → 加购
- 20%用户执行:下单支付
每个步骤间有3-5秒随机等待
步骤1:创建基础结构
操作:
- 右键测试计划 → 添加 → 线程组 → 设置线程数100,持续时间300秒
- 右键线程组 → 添加 → 逻辑控制器 → 事务控制器(命名“30%用户流”)
- 重复添加另两个事务控制器(50%/20%用户流)
步骤2:设置用户比例(吞吐量控制器)
配置:
- 在每个事务控制器上方添加吞吐量控制器:
- 30%控制器:百分比模式 → 30
- 50%控制器:百分比模式 → 50
- 20%控制器:百分比模式 → 20
原理:JMeter按比例分配请求到不同业务流
步骤3:添加操作间隔(高斯随机定时器)
每个HTTP请求后添加:
- 右键HTTP请求 → 添加 → 定时器 → Gaussian Random Timer
- 参数设置:
- Deviation (偏差):1000毫秒
- Constant Delay Offset (基础延迟):3000毫秒
# 效果: 每次请求后等待 3秒 ± 1秒 的随机时间(模拟真实用户操作间隔)
步骤4:参数化关键数据(CSV驱动)
1. 创建数据文件 user_data.csv
:
username,password,product_id
user1@test.com,Pass123!,101
user2@test.com,Pass123!,205
...(至少200行,>2倍并发用户数)
2. 添加CSV配置:
- 右键线程组 → 添加 → 配置元件 → CSV Data Set Config
- 参数设置:
- Filename:
user_data.csv
- Variable Names:
username,password,product_id
- Recycle on EOF?:True(循环使用数据)
- Filename:
3. 在请求中使用参数:
# 登录请求体示例:
{"email": "${username}","password": "${password}"
}# 加购请求路径示例:
/cart/add?product_id=${product_id}
三、增强场景真实性的关键技巧
1. 处理动态Token(关联提取)
在登录请求后添加:
- 右键登录请求 → 添加 → 后置处理器 → JSON提取器
- 参数设置:
- Names of created variables:
auth_token
- JSON Path expression:
$.data.token
- Names of created variables:
# 后续请求在Header中添加:
Authorization: Bearer ${auth_token}
2. 模拟热点数据(80/20法则)
// 在商品ID参数处使用JMeter函数:
${__RandomFromMultipleVars(101|102|103|104|105,hot_product)}
// 其中101-105是热门商品ID(占80%请求)
3. 混合场景监控(事务级监听)
添加监听器:
- 聚合报告(Aggregate Report) → 查看整体TPS/响应时间
- 事务控制器(Transaction Controller) → 生成每个业务流的独立报告
- 响应时间图(Response Time Graph) → 定位性能拐点
四、零基础调试清单(执行前必查)
- CSV文件路径是否正确?避免绝对路径(建议用相对路径
../data/user_data.csv
) - 所有动态参数(如
${auth_token}
)是否已关联提取? - 定时器是否添加到每个操作步骤后?
- 吞吐量控制器权重和是否为100%?
- 线程组持续时间是否>预热时间+稳定测试时间?
五、实战示例:秒杀场景特殊配置
关键配置:
- 同步定时器:模拟瞬间并发
- Number of Simulated Users to Group by: 5000(所有用户同时释放)
- 秒杀请求:
- 添加随机商品ID参数(但80%指向秒杀商品ID)
- 添加队列等待超时断言(响应内容包含“排队中”)
下一步行动:
- 下载JMeter(官网https://jmeter.apache.org/)
- 按上述步骤创建电商测试计划
- 用10用户试运行 → 查看结果树验证流程
- 逐步增加到100用户执行5分钟
避坑提醒:首次运行常见报错解决方案:
403 Forbidden
→ 检查Token是否传递NullPointerException
→ 检查CSV变量名拼写- TPS异常低 → 关闭JMeter自带监听器(消耗资源)
通过业务场景的真实模拟,性能测试结果才具有参考价值。从简单流程开始构建,逐步叠加复杂度,你会快速掌握JMeter场景设计精髓!