概述
今日目标:
- JMeter使用
- 配置线程组
- 配置 HTTP 接口
- 配置断言
- 配置响应断言
- 配置断言响应时间
- 配置结果监听
- 压测报告
- 接口准备
- 聚合报告
- 察看结果树
- 其它
- 线程组配置详解
- 线程数
- Ramp-Up
- bug
- 结束
JMeter使用
双击 ApacheJMeter.jar
启动,然后修改名称,点击保存,选择路径
配置线程组
配置线程组,相当于多少 并发数
线程属性说明:
- 线程数:20,线程数据,这里设置20个线程
- ramp-up:表示在指定时间之内将这些线程全部启动起来。如果n=1,表示要在
1s
以内将20个线程全部启动起来。 - 循环次数:200,表示将
20
线程 循环200
次,也就是说,每个线程调用接口200
次
配置 HTTP 接口
http://localhost:8080/jMeter/test
选择 keepalive
方式,表示使用了长连接。使用长连接可以防止频繁的建立连接,关闭连接消耗性能。一般浏览器都支持 keepalive
,如果这里不勾选,压测的部分性能会消耗在建立,关闭连接上,导致压测的数据不准。
配置断言
JMeter
断言常用有两种,一种是响应断言 ,一种是响应时间断言,如果响应内容不满足断言的配置,则认为这次的请求是失败的。
- 响应断言:判断响应内容是否包含指定的字符信息,用于判断
api
接口返回内容是否正确 - 响应时间断言:判断响应时间,是否超过预期的时间,用于判断
api
接口返回时间是否超过预期
断言添加方式:右击测试计划的http
请求,选择添加 --> 断言 -->加响应断言
和断言持续时间
。
配置响应断言
接口正常返回 code
值为 200
,如果返回 code
不是 200
,表示接口异常。
配置断言响应时间
设置请求接口时间超3
秒,则认为请求失败。
配置结果监听
配置监听器:监听压测结果(聚合报告和汇总结果很类似,看一个就行)
- 1.聚合报告:查询结果信息聚合汇总,例如样本,平均值,吞吐量,最大值,最小值等
- 2.察看结果树:记录每一次压测请求
- 3.图像结果:分析了所请求的平均值,终止,偏离值和吞吐量之间关系(一般)
- 4.汇总结果:汇总压测结果
- 5.汇总图:将压测结果以图像形式展示
上面
5
点,1
,2
两点重要;后面三个都在 添加 —> 监听器下面
压测报告
接口准备
@RestController
@RequestMapping("/jMeter")
public class JMeterController {
@GetMapping("/test")
public Result<String> testJMeter() {
return new Result<>("200", "测试JMeter!");
}
}
聚合报告
- 样本(sample):发送请求的总样本数量
- 响应时间[单位 ms]
- 平均值(average):平均的响应时间
- 中位数(median):中位数的响应时间,50%请求的响应时间
- 90% 百分位(90% line) :90% 请求的响应时间,意思是90%的请求是<=3ms返回
- 95% 百分位类似
- 最小值(min):请求返回的最小时间,其中一个用时最少的请求
- 最大值(max):请求返回的最大时间,其中一个用时最大的请求
- 异常(error):出现错误的百分比,错误率 = 错误请求的数量/请求的总数
- 吞吐量TPS(throughout) :吞吐能力
- Received kb/sec :每秒从服务器端接收到的数据量
- Sent kb/sec :每秒从客户端发送请求的数据量
察看结果树
其它
其它的意义不大,在此略过
线程组配置详解
线程数
用来发送http请求的线程的数量
- 线程组常用来模拟一组用户访问系统资源(API接口)
- 假如客户机没有足够的能力来模拟较重的负载,可以使用JMeter的分布式测试功能 ,通过一个JMeter的Master来远程控制多个JMeter的Slave完成测试
Ramp-Up
建立全部线程耗时
Ramp-Up (in-seconds) 代表隔多长时间执行,默认是0,0代表同时并发。
bug
原因是使用的是 spring boot 3.0.x
版本,但 jdk
版本使用的是 8
,修改 jdk
版本至 17
,问题得以解决
结束
至此 JMeter
压测使用就结束了,如有疑问,欢迎评论区留言。