一、简介
模拟一种实际生产中经常出现的情况,即:从某个值开始不断增加压力,直至达到某个值,然后持续运行一段时间,然后继续加压达到某个值持续运行,如此循环直到达到预期的峰值,运行一段时间
【优势】
1. 逐步增加负载,减少系统压力突然增大导致系统崩溃的风险。
2. 可根据测试结果及时调整压测计划,有效的发现和解决系统性能问题;
二、 测试准备
3.1 下载阶梯测试第三方插件
1. 下载阶梯测试的第三方插件包(下载地址:Install :: JMeter-Plugins.org)
2. 将下载下来的jar包放置在jemter文件的lib\ext下
3. 重启Jmeter,检查插件是否安装成功,打开jmeter,点击选项下的插件管理
3.2 安装阶梯测试第三方插件
1. 打开jmeter----选项----插件管理
2. 在Available Plugins选项中输入jpgc后空格,就可以搜索出jpgc插件,然后勾选jpgc - Standard Set后,点击Apply Changes and Restart JMeter后等待插件安装完成
在Available Plugins中找到Custom Thread Groups,点击Apply Changes and Restart JMeter后等待插件安装完成
3.3 提前熟悉性能测试方案
提前熟悉性能测试方案,充分了解系统架构和系统特点,制定有效的阶梯压测计划
三、编写调试jmeter脚本
1. 创建负载控制器线程组(sepping thread group)
2. 添加HTTP-信息请求头、HTTP-请求默认值、http请求
3. 添加监听器(根据自己实际需要添加不同的监听器)
注: 可根据实际业务场景,使用逻辑控制器、前后处理器、配置元件等;
四、设置阶梯压测参数
1. 在开始压测之前,确定每个阶段的并发用户数量。这个数量可以根据业务方提供,或者根据实际日活用户数量,或者预期用户增长率等来估算。
2. 设置不同阶段的持续时间。起初阶段的持续时间可以设置为5分钟,后续阶段可以有规律的递增10,15,20...
( 设置set步长,可通过设置值观察曲线图变化,如下图)
解释下参数设置:
① 总线程数
② 等待10秒,这个时候还没有用户进入
③ 从第x个用户开始
④ 和 ⑤ 这里一起理解,添加50个用户,持续运行5分钟(间隔)
⑥ ramp-up,设置0,例如40个用户直接添加到50个用户,没有使用曲线添加。
设置10,10s启动,例如40个用户直接添加到50个用户,使用曲线添加;
⑦ 达到最大并发数时,持续压测时间
⑧ 和 ⑨,退用户,每10秒退出100个用户。
五、压测机上执行
1. 执行jmeter脚本(排除由于环境引起、脚本原因引起、jmeter软件引起的问题,导致接口的失败)
如果jmeter发现阶梯没有执行完就停止执行,且jmeter中有报错,修改jmeter配置,如图
2. 在压测过程中,监控性能指标。包括响应时间、错误率、吞吐量, 以及服务资源的监测包括CPU、内存、磁盘读写、磁盘IO、网络带宽、系统线程等;
3. 接口的压力测试,不能执行一次定结果。收集多次压测结果,方便后续分析和优化。
六、测试结果分析
1. 通过jp@gc - Transactions per Second报告可以看失败的,当失败的比较多时,也有可能到了性能测试瓶颈了;也可以通过该报告分析TPS趋势;
2. 通过jp@gc - Transactions per Second报告和jp@gc - Active Threads Over Time报告分析,可以找到性能测试瓶颈时支持的最大并发量。
3. 通过jp@gc - Response Times Over Time报告,分析每个阶段的响应时间。
4. 通过汇总报告、聚合报告,分析响应时间、吞吐量是否符合预期;
5. 通过Grafana+Prometheus分析,CPU、内存、磁盘读写、磁盘IO、网络带宽、系统线程等是否满足预期结果;
七、输出性能测试报告
1. 根据分析的测试结果,汇总并输出测试报告