JMeter 性能测试流程总结
一、测试目标
验证设备功能计算接口 GET /admin-api/devices/{id}/features/ 的响应时间是否满足 PRD 要求:P95 < 500ms。
二、整体流程
1
| 准备数据 → 配置 JMeter → 运行测试 → 查看报告 → 判定结果
|
三、详细步骤
第一步:获取接口信息
| 步骤 |
操作 |
| 1 |
登录后台系统,进入设备配置页 |
| 2 |
打开某设备的功能配置弹窗 |
| 3 |
按 F12 → Network |
| 4 |
找到 GET /admin-api/devices/{id}/features/ 请求 |
| 5 |
复制 URL 和 Authorization Token |
接口信息(示例):
| 项目 |
值 |
| URL |
https://api.example.com/admin-api/devices/{id}/features/ |
| 方法 |
GET |
| Header |
Authorization: Bearer xxx |
第二步:准备测试数据
1. 准备 CSV 文件(deviceId.csv)
注意:每行只写一个设备 ID,结尾不能有空格或 Tab,编码 UTF-8。
第三步:配置 JMeter
1. 创建测试计划
| 步骤 |
操作 |
| 1 |
打开 JMeter,新建测试计划 |
| 2 |
右键测试计划 → 添加 → 线程 → 线程组 |
2. 配置线程组
| 配置项 |
值 |
| 线程数 |
30 |
| Ramp-Up 时间 |
10 |
| 循环次数 |
1 |
3. 添加 CSV 数据文件设置
| 步骤 |
操作 |
| 1 |
右键线程组 → 添加 → 配置元件 → CSV Data Set Config |
| 2 |
配置参数 |
| 配置项 |
值 |
| 文件名 |
deviceId.csv 的完整路径 |
| 文件编码 |
UTF-8 |
| 变量名称 |
deviceId |
| 遇到文件结束符再次循环 |
True |
| 遇到文件结束符停止线程 |
False |
4. 添加 HTTP 请求
| 步骤 |
操作 |
| 1 |
右键线程组 → 添加 → 取样器 → HTTP 请求 |
| 2 |
配置 |
| 配置项 |
值 |
| 协议 |
https |
| 服务器 |
api.example.com |
| 方法 |
GET |
| 路径 |
/admin-api/devices/${deviceId}/features/ |
5. 添加 HTTP 信息头管理器
| 步骤 |
操作 |
| 1 |
右键 HTTP 请求 → 添加 → 配置元件 → HTTP 信息头管理器 |
| 2 |
添加 Authorization |
| Key |
Value |
| Authorization |
Bearer 你的Token |
6. 添加监听器
| 步骤 |
操作 |
| 1 |
右键线程组 → 添加 → 监听器 → 聚合报告 |
| 2 |
右键线程组 → 添加 → 监听器 → 查看结果树 |
第四步:运行测试
| 步骤 |
操作 |
| 1 |
点击工具栏绿色 ▶ 运行 |
| 2 |
等待测试完成 |
| 3 |
查看聚合报告 |
第五步:查看结果
聚合报告关键指标:
| 指标 |
含义 |
目标 |
| # 样本 |
请求总数 |
30 |
| 平均值 |
平均响应时间 |
记录 |
| 中位数 |
P50 |
记录 |
| 95% 百分位 |
P95 |
< 500ms |
| 最大值 |
最慢响应 |
记录 |
| 异常 % |
错误率 |
0% |
四、本次测试结果
| 指标 |
值 |
是否达标 |
| # 样本 |
30 |
是 |
| 平均值 |
58ms |
是 |
| P50 |
33ms |
是 |
| P95 |
93ms |
是(< 500ms) |
| 最大值 |
500ms |
边界 |
| 异常 % |
0.00% |
是 |
结论:P95 = 93ms < 500ms,测试通过。
五、遇到的问题及解决
| 问题 |
原因 |
解决 |
| 异常率 100% |
CSV 文件含 Tab 字符 |
重新生成干净的 CSV |
URL 报错 control char (code=9) |
CSV 行尾有 Tab |
用记事本重写,确保无空格无 Tab |
| 聚合报告异常率高 |
包含调试取样器 |
只看 HTTP请求 行 |
六、关键要点
| 要点 |
说明 |
| CSV 文件必须干净 |
无空格、无 Tab、UTF-8 编码 |
| 变量名要一致 |
CSV 变量名 deviceId 和路径 ${deviceId} 必须匹配 |
| Token 要有效 |
过期会导致 401 |
| 只看 HTTP 请求行 |
忽略调试取样器和总体行 |
| P95 是核心指标 |
< 500ms 即达标 |
七、可扩展测试
| 场景 |
操作 |
目的 |
| 大数据量 |
增加功能/术式数量 |
验证大数据量下性能 |
| 高并发 |
线程数提升到 100 |
验证高并发稳定性 |
| 多轮测试 |
重复运行 3 次 |
确认结果稳定 |
| 不同组合 |
A/B/C 组合分别测 |
验证不同数据量下的性能 |
八、一句话总结
用 JMeter 准备 CSV 设备列表 → 配置 HTTP 请求 + 鉴权头 → 运行 30 并发 → 看聚合报告 P95 < 500ms 即通过。