Bootstrap

JMeter做性能测试教程及测试结果分析

一、一个简单的实例

1.新增一个线程组
2.设置线程组参数。这里配置为:10个线程,同时启动,循环一次。
在这里插入图片描述
3.新增http请求默认值。 在上一步创建的线程组上,新增http请求默认值,所有的请求都会使用设置的默认值,这设置协议为http,IP为服务器ip地址,端口为自行设置的端口值,一般为8080,这里我本地的端口设置为5002
在这里插入图片描述
4.添加要压测的http请求,这里以登录接口为例
在这里插入图片描述
5.添加监听器、聚合报告,查看结果
在这里插入图片描述

聚合报告解析(响应时间单位:毫秒)
1)Label:每个Jmeter的element都有一个Name属性,这里显示的就是Name属性的值
2)#样本(#Sample):表示在此次测试中一共发出了多少个请求,如果模拟10个用户,每个用户循环1次,那么这里显示10
3)平均值(Average):平均响应时间,默认情况下是单个Request的平均响应时间,当使用了Transaction Controller 时,也可以以Transaction为单位显示平均响应时间
4)中位数(Median):50%用户的响应时间,能反应出大多数请求的响应时间;
5)90%百分位(90%Line):90% 请求,每个请求最多在多少的响应时间内返回
6)95%分位:95% 请求,每个请求最多在多少的响应时间内返回; 150ms
7)99%分位: 99% 请求,每个请求最多在多少的响应时间内返回; 200ms
8)最小值(Min):最小响应时间
9)最大值(Max):最大响应时间
10)异常(Error%):本次测试中出现错误的请求的数量/请求的总数
11)吞吐量(Throughput):默认情况下表示每秒的请求数,越大越好
12)接收/发送KB/sec:每秒从服务器端接收到的数据量

6.结果分析。通过更改并发数,可以发现并发数为40系统吞吐量最大,后续再调整已无明显提升。最大并发数为40
在这里插入图片描述
7.拓展

验证登录接口单接口在20qps下面,失败率小于0.05%,95%line小于500ms

首先,需要计算20qps需要多少个并发
1个用户单次需要100ms 1个人循环10次=1s
10个人循环1次/s=10个接口
20个人循环一次/s=20个接口
在这里插入图片描述
结论:登录接口单接口在20qps下面,失败率为0.00%,95%line为1077ms

补充一个TPS相关的知识
PS 的决定性因素:事务是要靠虚拟用户完成
1 个用户在 1 秒内完成 1 笔事务,那么 TPS 就是 1
1 个事物响应时间是 1ms,那么 1 个用户在 1 秒内能完成 1000 笔事务。TPS 就是 1000
1 笔业务响应时间是 1s,那么 1 个用户在 1 秒内只能完成 1 笔事务。想达到 1000TPS 就至少需要 1000 个用户
因此可以说 1 个用户能产生 1000TPS, 1000 个用户也可以产生 1000TPS,由响应时间决定

二、关联接口实现

例如:登录与查看数据接口
1.添加HTTP请求默认值,填写协议类型,ip,端口号,编码格式等信息,后续就不需要再重复为每个接口添加了
在这里插入图片描述
2.添加登录接口
在这里插入图片描述
3.添加查看数据接口
在这里插入图片描述
4.由于一些请求需要有特定参数才能完成请求,比如查看数据的接口需要先登录获取token后再进行操作,我们可以先使用json提取器提取登录接口中返回的token,再添加HTTP信息头管理器来存放这一部分参数(依具体情况而定,我的token是放在请求头中传参的)
在这里插入图片描述
使用$.{变量名}进行引用
在这里插入图片描述
5.添加查看结果树,可以看到两个请求均请求成功了
在这里插入图片描述

三、jmeter录制脚本

a、首先在【测试计划】中添加【线程组】,
b、【线程组】中的【逻辑控制器】里选取【录制控制器】,这个是专门用来放录制脚本的
c、设置启动服务代理,在网络设置代理服务,如果为第三方服务器则写第三方服务器的IP而非本地IP(127.0.0.1)
在这里插入图片描述
d、勾选(记录HTTP信息头)的选项
在这里插入图片描述
e、设置好后点击【启动】按钮,弹出一个弹窗:Recorder: Transaction Control,并开始录制脚本。
在这里插入图片描述
在这里插入图片描述
f、此时我们可以在待测的软件上进行操作,jmeter会将录制到的脚本保存到【录制控制器】中,我们选取需要的脚本改名并移入线程组下。
在这里插入图片描述
g、录制的脚本已经自动填写了HTTP请求中的【协议、IP、请求方式、接口url、字符集】等信息。端口不填时默认:80,我们可在请求中修改参数等
h、录制完成后,我们可在http服务代理请求中排除模式使用正则表达式进行过滤,例如过滤.png格式
在这里插入图片描述

;