一、JMeter介绍
Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等等。JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。
同时,JMeter可以帮助你对你的应用程序进行回归测试。通过你创建的测试脚本和assertions来验证你的程序返回了所期待的值。为了更高的适应性,JMeter允许你使用正则表达式来创建这些assertions.
二、从聚合报告看关键参数(重要:必须会)
- 1、QPS
QPS Queries Per Second 是每秒查询率 ,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, 即每秒的响应请求数,也即是最大吞吐能力。 - 2、TPS
TPS Transactions Per Second 也就是事务数/秒。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数,
名字 | 功能 |
---|---|
Label | 每个请求的名称,比如HTTP请求等 |
#Samples | 发给服务器的请求数量 |
Average | 单个请求的平均响应时间 毫秒ms |
Median | 50%请求的响应时间 毫秒ms |
90%Line | 90%请求响应时间 毫秒ms |
95%Line | 95%请求响应时间 毫秒ms |
99%Line | 99%请求的响应时间 毫秒ms |
Min | 最小的响应时间 毫秒ms |
Max | 最大的响应时间 毫秒ms |
Error% | 错误率=错误的请求的数量/请求的总数 |
Throughput | 吞吐量即表示每秒完成的请求数 |
Received KB/sec | 每秒从服务器端接收到的数据量 |
Sent KB/sec | 每秒从客户端发送的请求的数量 |
2.1 Average 平均响应时间
- 计算:
Average=所有请求的响应时间之和/总请求数= Jmeter sum(elapsed)/#Samples (所有sample样本响应时间总和/Samples样本个数)
2.2 Throughput 吞吐量(Request/Sec) 每秒多少请求
在jmeter中,大多数情况(未有错误时)下,Throughput吞吐率被认为等于TPS
- 计算:
Throughput=(#sample样本数)/(最后一个线程启动的时间+最后一个线程持续的时间-第一个线程启动的时间)
Throughput=(number of requests)/total time=Jmeter(#Samples)/total time
2.3 Received KB/sec 每秒从服务器端接收到的数据量(每秒发送多少字节 )
- 计算:
Received KB/sec=所有的相同请求的bytes总和 / 1024 / 请求持续运行的时间=sum(bytes)/1024/total time
2.4 Sent KB/sec 每秒向服务器发送数据量(每秒发送多少字节 )
- 计算:
Sent KB/sec =所有的相同请求的sentBytes总和 / 1024 / 线程持续运行的时间=sum(sentBytes)/1024/total time
三、下载安装
官方文章:https://jmeter.apache.org/download_jmeter.cgi
3.1 下载最新的JMeter apache-jmeter-5.3
3.2 解压,打开
apache-jmeter-5.3\bin\jmeter.bat启动项目
3.3 发现都是英文的,而且字体太小
找到 apache-jmeter-5.3\bin\jmeter.properties
3.3.1 中英文修改:
打开文件,找到 #language=en 并改为 language=zh_CN,注意将前面的#号去除,不然不生效
- 或者用界面进行语言切换(建议英语不好的人还是用中文,别勉强)
3.3.2 字体大小修改
jmeter.hidpi.mode=true
jmeter.hidpi.scale.factor=2.0
jmeter.toolbar.icons.size=32x32
jmeter.tree.icons.size=24x24
重启生效
如果字体不生效,可以点击 选型 — 放大,便可放大效果。
四 JMeter的使用
总体流程图
4.1 启动显示的界面(测试计划)
Test Plan (测试计划):用来描述一个性能测试,包含与本次性能测试所有相关的功能。也就说本的性能测试的所有内容是于基于一个计划的。
4.2 thread group(线程组).
4.2.1 新建线程组
这个就是我们通常添加运行的线程。通俗的讲一个线程组,,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数量在测试执行过程中是不会发生改变的。
4.2.2 修改线程数
- 线程数:这里选择5
- Ramp-Up Period:单位是秒,默认时间是1秒。它指定了启动所有线程所花费的时间,比如,当前的设定表示“在5秒内启动5个线程,每个线程的间隔时间为1秒”。如果你需要Jmeter立即启动所有线程,将此设定为0即可
- 循环次数:表示每个线程执行多少次请求。
4.3 添加HTTP请求
4.3.1 添加HTTP请求
4.3.2 填入需要进行压测的协议、路径、参数
4.3.3 如果请求有参数和方法体,需要添加
五、添加监听器(也就是数据查看)
回过头来看一下总体流程图:
目前我们剩下最后一步,添加监听器
5.1 添加监听器
5.2 查看结果树
5.3 聚合报告,也是最重要的一项,尤其是吞吐量
吞吐量:每秒执行的请求数
5.4 用表格查看结果
可以看到每一个请求的时间