JMeter全自动阶梯压力测试流程(使用普通线程组)

张开发
2026/4/18 7:22:20 15 分钟阅读

分享文章

JMeter全自动阶梯压力测试流程(使用普通线程组)
专业的全自动阶梯压力测试流程使用普通线程组基于之前的分析以下是一个符合专业标准的阶梯测试方案修正了启动延迟计算、阶梯顺序、Ramp-Up 比例等问题。一、阶梯测试设计原则专业标准原则说明阶梯顺序冒烟 → 负载 → 峰值 → 压力 → 浸泡峰值在压力前避免过载影响峰值结果启动延迟公式延迟 前面所有阶梯的持续时间 Ramp-Up之和 缓冲时间5~10秒Ramp-Up 占比占持续时间的 10%~30%浸泡测试可适当降低缓冲时间每阶梯结束后增加 5~10 秒确保线程完全停止持续时间包含 Ramp-Up 稳定运行时间Hold二、5 个阶梯的详细参数阶梯名称测试类型线程数Ramp-Up(s)持续时间(s)稳定运行时间(s)Ramp-Up占比1Step1_Smoke冒烟测试5130293.3%2Step2_Load负载测试10060180017403.3%3Step3_Spike峰值测试10003030027010%4Step4_Stress压力测试50012090078013.3%5Step5_Soak浸泡测试5060028800282002.1%浸泡测试 Ramp-Up 设为 600 秒10分钟更真实模拟用户逐渐上线。三、启动延迟计算含缓冲设缓冲时间BUFFER 5秒。计算公式text延迟(N) Σ(前N-1个阶梯的 (持续时间 Ramp-Up)) (N-1) * BUFFER详细计算表阶梯前序总时长缓冲累加启动延迟(秒)计算式100002(301)3153631 5331 (180060)18911019011891 1041891 (30030)22211522362221 1552221 (900120)32412032613241 20阶梯3 的延迟 1901 秒 ≈ 31.7 分钟阶梯4 延迟 2236 秒 ≈ 37.3 分钟阶梯5 延迟 3261 秒 ≈ 54.4 分钟。四、完整测试计划结构yaml测试计划: 专业阶梯压力测试 全局配置: ├── 用户定义的变量 │ ├── BASE_URL: api.example.com │ ├── PROTOCOL: https │ ├── PORT: 443 │ └── AUTH_TOKEN: Bearer xxxxx ├── HTTP请求默认值 │ ├── 协议: ${PROTOCOL} │ ├── 服务器: ${BASE_URL} │ └── 端口: ${PORT} └── HTTP信息头管理器 └── Content-Type: application/json 阶梯1: Step1_Smoke (冒烟测试) 线程组: 名称: Step1_Smoke 线程数: 5 Ramp-Up: 1 秒 循环次数: 永远 调度器: ✅ 持续时间: 30 秒 启动延迟: 0 秒 HTTP请求: (你的API) 阶梯2: Step2_Load (负载测试) 线程组: 名称: Step2_Load 线程数: 100 Ramp-Up: 60 秒 循环次数: 永远 调度器: ✅ 持续时间: 1800 秒 启动延迟: 36 秒 HTTP请求: (你的API) 阶梯3: Step3_Spike (峰值测试) 线程组: 名称: Step3_Spike 线程数: 1000 Ramp-Up: 30 秒 循环次数: 永远 调度器: ✅ 持续时间: 300 秒 启动延迟: 1901 秒 HTTP请求: (你的API) 阶梯4: Step4_Stress (压力测试) 线程组: 名称: Step4_Stress 线程数: 500 Ramp-Up: 120 秒 循环次数: 永远 调度器: ✅ 持续时间: 900 秒 启动延迟: 2236 秒 HTTP请求: (你的API) 阶梯5: Step5_Soak (浸泡测试) 线程组: 名称: Step5_Soak 线程数: 50 Ramp-Up: 600 秒 循环次数: 永远 调度器: ✅ 持续时间: 28800 秒 启动延迟: 3261 秒 HTTP请求: (你的API) 监听器: ├── 聚合报告 (每个阶梯单独一个命名区分) ├── 用表格查看结果 (可选) └── 查看结果树 (仅调试)五、专业配置的注意事项5.1 为什么峰值测试在压力测试之前压力测试500用户可能已使系统过载之后再做峰值1000用户会受到前序过载的影响连接池、缓存、CPU升温测不出真实的突发流量承受能力。正确顺序负载正常→ 峰值突发→ 压力极限→ 浸泡长稳5.2 为什么浸泡测试的 Ramp-Up 要 600 秒长时间测试需要平滑加载避免启动瞬间对系统造成额外冲击。600 秒加载 50 用户每秒仅增加 0.08 个用户几乎无感知。5.3 缓冲时间的作用防止前一个阶梯的线程因网络延迟或 JMeter 停止慢而残留导致下一个阶梯启动时并发数不准。5 秒通常足够如果系统停止线程较慢可增加到 10 秒。5.4 如何验证阶梯不重叠在用表格查看结果中按Start Time排序观察每个阶梯的请求时间范围是否独立。阶梯1 的时间范围0 ~ 31 秒阶梯2 的时间范围36 ~ 36180060 1896 秒没有重叠。六、执行命令bash# 调试GUI 模式先调通一个阶梯 jmeter -t professional_steps.jmx # 正式执行非 GUI 模式 jmeter -n -t professional_steps.jmx -l result.jtl -e -o report/ # 后台运行适合长时间浸泡 nohup jmeter -n -t professional_steps.jmx -l result.jtl -e -o report/ run.log 21 七、结果分析重点运行结束后分别查看每个阶梯的聚合报告对比阶梯关注点冒烟脚本正确性响应时间基准负载正常负载下的 p95、TPS、错误率峰值突发流量下响应时间是否陡增错误率是否 1%压力找到拐点响应时间翻倍、TPS 平头、错误率1%浸泡长时间运行内存是否泄漏TPS 是否下降八、总结这个专业阶梯测试方案具有以下特点✅ 顺序合理峰值在压力前✅ 启动延迟公式正确包含 Ramp-Up 和缓冲✅ Ramp-Up 占比符合专业比例✅ 浸泡测试采用长加载时间✅ 一次运行全自动完成 5 个阶梯

更多文章