压测工具Jmeter
Jmeter介绍
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等等。
除了Jmeter外,其它常用的压测工具还有:
- Apache的ab压力测试
- Nginter 韩国研发
- PAS 阿里测试工具
- MeterSphere :国内持续测试的开源平台
下载安装
去官网下载安装即可。首页左侧有相关下载的链接。
使用
一般情况下,Jmeter的使用流程如下:
- 创建测试计划
- 配置线程组、http请求、断言、结果监听器
- 执行测试
- 查看测试结果,分析测试结果
1、创建测试计划
2、配置线程组
- 线程数:用来发送http请求的线程的数量
- 线程组常用来模拟一组用户访问系统资源(API接口)
- 假如客户机没有足够的能力来模拟较重的负载,可以使用JMeter的分布式测试功能,通过一
个JMeter的Master来远程控制多个JMeter的Salve完成测试
- 循环次数:循环执行多少次操作
- 循环次数表示了循环执行多少次操作!循环次数直接决定整个测试单个线程的执行时间,和整体测试执行时间
- 单线程执行时间 = 单请求平均响应时间 * 循环次数
- 整个测试耗时 = 单线程执行时间 + (Ramp-Up - Ramp-Up / 线程数)
- Ramp-Up:建立全部线程耗时
- Ramp-Up Period (in-seconds) 代表隔多长时间执行,默认值是0,0代表同时并发。用于告知JMeter 要在多长时间内建立全部的线程
- Ramp-Up Period (in-seconds) 代表隔多长时间执行,默认值是0,0代表同时并发。用于告知JMeter 要在多长时间内建立全部的线程
线程属性说明:
- 线程数:20, 线程数量,这里设置了20个线程
- ramp-up:表示在指定时间之内把这些线程全部启动起来。 如果n=1,那就表示要在1s以内把50个线程全部启动起来
- 循环次数:2000,表示把 20 thread 循环2000次,也就是说让每一个请求接口循环调用接口2000次
3、设置Http请求
设置请求协议、端口、路径等信息。
4、设置断言
JMeter断言常用有两种,一种是响应断言,一种是响应时间断言,如果响应内容不满足断言的配置,则认为这次的请求是失败的。
- 响应断言:判断响应内容是否包含指定的字符信息,用于判断api接口返回内容是否正确
- 响应时间断言:判断响应时间,是否超过预期的时间,用于判断api接口返回时间是否超过预期
接口返回包含"code":0则认为返回内容正确
设置请求接口时间超过3毫秒,则认为请求失败
5、设置结果监听
配置监听器:监听压测结果,聚合报告和汇总结果很类似,看一个就行
- 聚合报告:查询结果信息聚合汇总,例如样本、平均值、通吐量、最大值、最小值…
- 察看结果树:记录每一次压测请求
- 图像结果:分析了所有请求的平均值、终止、偏离值和通吐量之间的关系。
- 汇总结果:汇总压测结果
- 汇总图:将压测结果以图像形式展示
聚合报告相关结果解释如下:
- 样本(sample): 发送请求的总样本数量
- 响应时间【单位ms】:
- 平均值(average):平均的响应时间
- 中位数(median): 中位数的响应时间,50%请求的响应时间
- 90%百分位(90% Line): 90%的请求的响应时间,意思就是说90%的请求是<=1765ms返回,另外10%的请求是大于等于1765ms返回的。
- 95%百分位(95% Line): 95%的请求的响应时间,95%的请求都落在1920ms之内返回的
- 99%百分位(99% Line): 99%的请求的响应时间
- 最小值(min):请求返回的最小时间,其中一个用时最少的请求
- 最大值(max):请求返回的最大时间,其中一个用时最大的请求
- 异常(error): 出现错误的百分比,错误率=错误的请求的数量/请求的总数
- 吞吐量TPS(throughout): 吞吐能力,最重要的就是这个了
- Received KB/sec----每秒从服务器端接收到的数据量
- Sent KB/sec----每秒从客户端发送的请求的数量
结果树
汇总报告相关结果解释如下,和聚合报告很类似。
- 样本(sample): 发送请求的总样本数量
- 响应时间【单位ms】:
- 平均值(average):平均的响应时间
- 最小值(min):请求返回的最小时间,其中一个用时最少的请求
- 最大值(max):请求返回的最大时间,其中一个用时最大的请求
- 标准偏差:度量响应时间分布的分散程度的标准,衡量响应时间值偏离平均响应时间的程度。
标准偏差越小,偏离越少,反之亦然。
- 异常(error): 出现错误的百分比,错误率=错误的请求的数量/请求的总数
- 吞吐量TPS(throughout): 吞吐能力,这个才是我们需要的并发数
- 每秒接收 KB/sec----每秒从服务器端接收到的数据量
- 每秒发送KB/sec----每秒从客户端发送的请求的数量
- 平均字节数
除了上面的这些步骤以外,由于某些情况下回涉及到登录以后对接口进行测试,所以需要添加HttpCookie管理器,这样才能正请求成功
最后Jmeter如何设置中文,找到对应内容加上第一句和最后一句。
goto remove_language_reset_bug_4.0
if not defined JMETER_LANGUAGE (rem Set languagerem Default to en_ENset JMETER_LANGUAGE=-Duser.language="en" -Duser.region="EN"
)
:remove_language_reset_bug_4.0
参考
- Jmeter中文网
- Jmeter官网