上一期分享了接口调用的工具-Postman(传送门:接口测试工具-Postman使用详解),这业务场景中还需要分析对应接口的性能,是否支持多并发,多并发的极限QPS在什么地方,这个时候就需要压力测试工具-Jmeter。
官方描述:jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是免安装的,拿到安装包之后直接解压就可以使用,同时它在linux/windows/macos上都可以使用。
jmeter可以做接口测试和压力测试。其中接口测试的简单操作包括做http脚本(发get/post请求、加cookie、加header、加权限认证、上传文件)、做webservice脚本、参数化、断言、关联(正则表达式提取器和处理json-json path extractor)和jmeter操作数据库等等。
一、Jmeter下载
进入官网:http://jmeter.apache.org/
1.第一步进入官网如下图
2.选择进行下载,下载下来为一个压缩包,解压即可。
3.Jmeter对应jdk1.8。然后就进行解压。一定要确保环境变量配置正确(包括jdk的与jmeter的环境变量配置)。
二、Jmeter环境变量相关配置
1.) 电脑桌面----》“计算机”图标----》鼠标右键选择“属性”----》点击高级系统设置----》高级---》环境变量页面
2) 开始配置环境变量了。在系统变量框,点击“新建”,建立一个变量:JMETER_HOME,值为你解压的jmeter安装路径。我的安装路径是在E盘,这个路径根据自己实际安装路径进行填写。然后点击确定保存即可
3)配置classpath变量,没有的话也要按照上面步骤进行新建,有的话直接进行选中,点击编辑即可。变量值固定为:%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib/logkit-2.0.jar; 做完之后一定要保存,不确定的话可以直接点击确定按钮直到退到我的电脑页面
4)基本配置完成,然后验证一下是否配置正确,是否可用。
首先进到你的jmeter安装路径,找到bin文件夹,点击进去,找到jmeter.bat,鼠标右键用管理员方式运行,或者直接双击打开,此时会弹出2个界面:1.个是命令窗口,使用jmeter的时候此命令窗口不能关,你缩小到电脑任务栏即可。2.还有一个界面是jmeter工作页面,你可以在里面进行相关的操作.具体如图
5)确认安装是否成功,双击jmeter.bat或者以管理员方式运行,页面如下:
6)jmeter的工作区域如下:,我们每次使用jmeter的首先打开方式就是进入bin文件下双击这个jmeter.bat,如果觉得麻烦,可以鼠标右键快捷方式发送电脑桌面,就会方便很多。
三、Jmeter测试案例
1、添加本次测试计划 (右键-->添加-->Threads(Users)-->线程组)
2、设置线程数 (所谓线程数就是并发数)
3、添加协议及相关配置信息
4、为线程添加监听器
5、启动测试
6、查看报告
查看结果树
聚合报告
图形结果
四、结果分析查看
当测试完成后,最关心的就是测试结果。jmeter提供了很多种查看测试结果的组件,View Results Tree、Summary Report、Graph Results等等,简单介绍一下
1、View Results Tree
返回数据:
取样器结果:返回值报200,表示执行接口调试成功
请求:发送的数据
响应数据:返回的数据
Thread Name:线程组名称
Sample Start: 启动开始时间
Load time:加载时长
Latency:等待时长
Size in bytes:发送的数据总大小
Headers size in bytes:发送数据的其余部分大小
Sample Count:发送统计
Error Count:交互错误统计
Response code:返回码
Response message:返回信息
Response headers:返回的头部信息
2、AggregateReport
- Label - 请求对应的name属性值。
- Samples - 具有相同标号的样本数,总的发出请求数。
- Average - 请求的平均响应时间。
- Median - 50%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第50%的值。
- 90% Line - 90%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第90%的值。
- 95% Line - 95%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第95%的值。
- 99% Line - 99%的样本都没有超过这个时间。这个值是指把所有数据按由小到大将其排列,就是排列在第99%的值。
- Min - 最小响应时间。
- Max - 最大响应时间。
- Error % - 本次测试中,有错误请求的百分比。
- Throughput - 吞吐量是以每秒/分钟/小时的请求量来度量的。这里表示每秒完成的请求数。
- Received KB/sec - 收到的千字节每秒的吞吐量测试。
- Sent KB/sec - 发送的千字节每秒的吞吐量测试。
3、Graph Results
- No of Samples:总共发送到服务器的请求数。
- Latest Samples:代表时间的数字,是服务器响应最后一个请求的时间。
- Average:总运行时间除以发送到服务器的请求数。
- Devaition:表示服务器响应时间变化、离散程度测量值的大小。
- Throughput:服务器每分钟处理的请求数。
- Median:有一半的服务器响应时间低于改值而另一半高于该值。
4、jp@gc - Transactions per Second
5、保存到文件
大部分组件均提供了将测试结果保存到文件的功能,指定输出文件的绝对路径即可,如下:
执行完毕后,打开文件,可以查看原始的数据信息,接下来按自己的需要处理原始信息。
6、生成web页面的报告
- 在命令行下执行脚本,注意:如果没有配置环境变量的话,要在jmeter安装目录的bin下启动命令行,
- 命令:
jmeter -n -t D:\program\apache-jmeter-5.0\samples\28.summary_report.jmx -l d:\summary.jtl -e -o d:\result
绿色字体:表示要执行的脚本
蓝色字体:生成后的脚本
红色字体:web页面报告的存储路径
- 查看结果,生成很漂亮的测试报告