性能测试规范
📦 来源:
wl-skills-testv0.11.0 ·standards/07-performance.md· 可判定条目由wl-skills-test audit(T 系列)与gate自动执行。
适用范围
本规范适用于性能测试方案设计、脚本编写与执行。性能测试使用 JMeter 5.6.3,必须遵循本规范的场景设计与 XML 配置规则。
工具与环境
| 组件 | 版本 / 说明 |
|---|---|
| JMeter | 5.6.3 |
| ServerAgent | 部署在被测服务器,采集 CPU / 内存 |
| 数据驱动 | CSV Data Set Config |
| 压测机 | 独立机器,避免与被测系统争抢资源 |
三场景设计
| 场景 | 目的 | 特征 |
|---|---|---|
| 日常场景 | 验证日常负载下的稳定性 | 模拟日常并发 |
| 峰值场景 | 验证峰值负载下的响应 | 模拟高峰并发 |
| 疲劳场景 | 验证长时间运行的稳定性 | 持续运行 8h+ |
SLA 阈值
| 指标 | 日常 | 峰值 |
|---|---|---|
| P99 响应时间 | < 500ms | < 1000ms(放宽) |
| 错误率 | < 0.1% | < 1% |
| 吞吐量 | 达到目标 TPS | 达到峰值 TPS |
| 资源使用 | CPU < 70% | CPU < 85% |
并发梯度计算
并发用户数按以下方式估算:
- 基于业务峰值在线用户数与请求频率。
- 并发 = 峰值在线用户数 × 请求频率 × 思考时间占比。
- 采用梯度加压(如 50 → 100 → 200 → 500),逐步找到拐点。
CSV 数据策略
| 规则 | 说明 |
|---|---|
| 参数化 | 用户名、业务 ID 等通过 CSV 参数化 |
| 数据量 | 不少于并发用户数的 2 倍 |
| 共享模式 | 按线程分配,避免数据争用 |
| 文件路径 | 使用相对路径,便于跨机器执行 |
ServerAgent 部署
- 在被测服务器部署 ServerAgent。
- 默认端口 4444,确保防火墙放行。
- JMeter 中添加 PerfMon 监听器采集指标。
- 采集 CPU、内存、磁盘 IO、网络 IO。
JMeter XML 强制规则(11 条)
| 序号 | 规则 | 原因 |
|---|---|---|
| 1 | SteppingThreadGroup 标签必须小写且含空格 | 大小写错误导致 JMeter 无法识别 |
| 2 | ConfigTestElement 的 testclass 必须正确 | 错误导致配置静默失效(致命坑) |
| 3 | HTTPSamplerProxy 的 method 必须大写 | 小写导致请求方法错误 |
| 4 | hashtree 嵌套必须成对闭合 | 缺失导致脚本无法加载 |
| 5 | 变量引用统一用 ${var} | ${} 与 $var 混用导致解析失败 |
| 6 | CSV 文件名禁止中文 | 编码问题导致找不到文件 |
| 7 | ThreadGroup 的 ramp_up 必须为正整数 | 0 导致瞬时加压压垮系统 |
| 8 | LoopController 的 loops 必须明确 | 默认值导致执行次数异常 |
| 9 | 断言必须放在采样器内 | 放错位置导致断言无效 |
| 10 | 监听器结果文件用 CSV 而非 XML | XML 体积大、解析慢 |
| 11 | enabled 属性必须显式设置 | 默认继承导致误启用 / 误禁用 |
示例
峰值场景脚本结构:
Stepping Thread Group (梯度加压)
- CSV Data Set Config (用户数据)
- HTTP Header Manager
- HTTP Sampler - 登录
- Response Assertion
- HTTP Sampler - 查询列表
- Duration Assertion
- PerfMon Collector (ServerAgent 采集)
- Summary Report注意事项
- 压测前必须备份 / 隔离生产数据,禁止直接压生产。
- 压测数据需在测试结束后清理(
AT_前缀标识)。 - 压测结果需出报告,包含 TPS、响应时间、资源曲线。
- 性能不达标需定位瓶颈(应用 / 数据库 / 网络),不可只报数字。
- JMeter 脚本版本管理,修改需记录变更原因。
