使用Jmeter工具进行性能压力测试
简介
JMeter是开源软件Apache基金会下的一个性能测试工具,用来测试部署在服务器端的应用程序的性能。近来,JMeter因为其使用简单,现在也被社区作为接口测试工具
笔者是一名Java开发人员,不是专业测试人员,对测试方面了解甚浅,所以本文只对Jmeter的使用做简单的入门教程。感谢观看,喜欢请麻烦点个赞哦~
安装
jmeter在windows/linux/macos下都可以使用。
附上Jmeter官方下载地址
jmeter是由Java所写,所以系统环境必须已安装Java,若未安装java请先下载,这里不做详细说明
下载成功之后打开下载目录下 /bin/jmeter.bat
使用
先附上笔者的目录图:
首先添加线程组
添加 HTTP请求
如果需要token就添加Http信息头管理器
配置
这里我是请求的本地项目
这里有几个参数要说明:
线程数:就是模仿用户并发的数量,填写200相当于200个用户
Ramp-Up Period (in seconds):运行线程的总时间,单位是秒,相当于在填写秒内线程数执行完毕
循环次数:就是每个线程循环多少次。如果选中“永远”,则意味着测试运行起来之后就根本停不下来了,除非你把它强制咔嚓。
持续时间:可以设置调用时间,一般做时段性测试。
我现在的线程数是200,就是相当于有200个用户,运行线程的总时间是10秒。也就是说在这10秒中之内200个用户同时访问,一秒钟有20个用户同时访问,每个用户一直循环调用接口,直到60秒结束。
现在添加查看结果
现在点击原谅色(绿色)按钮就可以启动了~执行完成我们可以看一下结果
结果
图形结果
样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数
平均:每个线程请求的平均时间
最新样本:表示服务器响应最后一个请求的时间
偏离:服务器响应时间变化、离散程度测量值的大小。
吞吐量
一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢。系统吞吐能力越低,反之越高。
系统吞吐量几个重要參数:QPS(TPS)、并发数、响应时间
QPS(TPS):每秒钟request/事务 数量
并发数: 系统同一时候处理的request/事务数
响应时间: 一般取平均响应时间
(非常多人常常会把并发数和TPS理解混淆)
理解了上面三个要素的意义之后,就能推算出它们之间的关系:
QPS(TPS)= 并发数/平均响应时间 或者 并发数 = QPS*平均响应时间
聚合报告
这里可以看到很多数据,相关名词解释如下:
Sample:本次测试场景共运行多少线程;
Average:平均响应时间;
Median:统计意义上的响应时间中值;
90% line:所有线程中90%的线程响应时间都小于xx的值;
Min:响应最小时间;
Max:响应最大时间;
Error:出错率;
Throughput - 吞吐量以“requests/second、requests /minute、 requests /hour”来衡量。 时间单位已经被选取为second,所以,显示速率至少是1.0,即每秒1个请求
这里最短响应时间为171ms,最长响应时间为14961,吞吐率105.7,只测试了一分钟,性能不乐观。
察看结果数
通过察看结果树,我们可以看到每个请求的结果,其中红色的是出错的请求,绿色的为通过。
Thread Name:线程组名称
Sample Start: 启动开始时间
Load time:加载时长
Latency:等待时长
Size in bytes:发送的数据总大小
Headers size in bytes:发送数据的其余部分大小
Sample Count:发送统计
Error Count:交互错误统计
Response code:返回码
Response message:返回信息
Response headers:返回的头部信息
这里绿色的就说明请求是通过的,返回值是200,如果出现红色的×就说明请求失败,这时候可以通过右边的取样器结果和响应数据来查看结果。
表格察看结果
名词解释如下:
Sample:每个请求的序号
Start Time:每个请求开始时间
Thread Name:每个线程的名称
Label:Http请求名称
Sample Time:每个请求所花时间,单位毫秒
Status:请求状态,如果为勾则表示成功,如果为叉表示失败。
Bytes:请求的字节数
样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数
平均:每个线程请求的平均时间
最新样本:表示服务器响应最后一个请求的时间
偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。
在这里面可以看到,线程组名称,每个线程响应时间,返回结果是否成功,字节数等。
结尾
对于jmeter的使用笔者也是停留在入门,希望能给读者带来一定的帮助,如果觉得文章有帮助,麻烦给点个赞,或者关注我,我会一直写一些文章分享出来。