百日筑基第五十九天-本地压测工具了解一下
JMeter 快速入门
Jmeter 是一款使用 Java 开发的功能和性能测试软件。
工作原理是仿真用户向服务器发送请求,并收集服务器应答信息并计算统计信息。
Jmeter 的主要元素如下:
测试计划(Test Plan)
- 可以将测试计划视为 JMeter 的测试脚本 。测试计划由测试元素组成,例如线程组,逻辑控制器,样本生成控制器,监听器,定时器,断言和配置元素。线程组(Thread Group)
- 线程组的作用是:模拟大量用户负载的运行场景。- 设置线程数
- 设置加速期
- 设置执行测试的次数
控制器(Controllers)
- 可以分为两大类:采样器(Sampler)
- 采样器的作用是模拟用户对目标服务器发送请求。 采样器是必须将组件添加到测试计划中的,因为它只能让 JMeter 知道需要将哪种类型的请求发送到服务器。 请求可以是 HTTP,HTTP(s),FTP,TCP,SMTP,SOAP 等。逻辑控制器
- 逻辑控制器的作用是:控制多个请求发送的循环次数及顺序等。
监听器(Listeners)
- 监听器的作用是:收集测试结果信息。如查看结果树、汇总报告等。计时器(Timers)
- 计时器的作用是:控制多个请求发送的时间频次。配置元素(Configuration Elements)
- 配置元素的工作与采样器的工作类似。但是,它不发送请求,而是提供预备的数据等,如 CSV、函数助手。预处理器元素(Pre-Processor Elements)
- 预处理器元素在采样器发出请求之前执行,如果预处理器附加到采样器元素,那么它将在该采样器元素运行之前执行。预处理器元素用于在运行之前准备环境及参数。后处理器元素(Post-Processor Elements)
- 后处理器元素是在发送采样器请求之后执行的元素,常用于处理响应数据。
快速创建:
右键点击 "测试计划” → “添加” → “线程(用户)” → “线程组”
线程组主要参数详解:
- 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。模拟多少用户访问也就填写多少个线程数量。
- Ramp-Up时间(秒):设置的虚拟用户数需要多长时间全部启动。如果线程数为
100
,准备时长为5
,那么需要5
秒钟启动100
个线程,也就是每秒钟启动20
个线程。 相当于每秒模拟20
个用户进行访问,设置为零我理解为并发访问。 - 循环次数:如果线程数为
100
,循环次数为100
。那么总请求数为100*100=10000
。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。
右键点击 “你的线程组” → “添加” → “取样器” → “HTTP请求”
填写接口
Http请求主要参数详解(做过接口测试的应该上手很快):
- 协议:向目标服务器发送HTTP请求协议,可以是
HTTP
或HTTPS
,默认为HTTP
。 - 服务器名称或IP :
HTTP
请求发送的目标服务器名称或IP
。 - 端口号:目标服务器的端口号,默认值为80
- 方法:发送
HTTP
请求的方法,可用方法包括GET
、POST
、HEAD
、PUT
、OPTIONS
、TRACE
、DELETE
等。 - 路径:目标
URL
路径(URL
中去掉服务器地址、端口及参数后剩余部分)。 - 内容编码:编码方式,默认为
ISO-8859-1
编码,这里配置为utf-8
。 - 参数:同请求一起发送参数 ,在请求中发送的
URL
参数,用户可以将URL
中所有参数设置在本表中,表中每行为一个参数(对应URL
中的key=value
),注意参数传入中文时需要勾选“编码”。
右键点击 “你的线程组” → “添加” → “监听器” → “察看结果树”
右键点击 “你的线程组” → “添加” → “监听器” → “聚合报告”,用以存放性能测试报告
性能测试
聚合报告参数详解:
- Label:每个
JMeter
的element
(例如我这里只有一个Spring WebFlux
)都有一个Name
属性,这里显示的就是Name
属性的值。 - 样本(Samples):请求数——表示这次测试中一共发出了多少个请求,我这里模拟了
100
个用户循环6
次也就为100*6=600
。 - 平均值(Average):平均响应时间(单位:
ms
)。默认是单个Request
的平均响应时间,当使用了Transaction Controller
时,也可以是Transaction
为单位显示平均响应时间。 - 中位数(Median):也就是
50%
用户的响应时间。 - 90% 百分位(Line):
90%
用户的响应时间。相邻几个*%
同意。 - 最小值(Min):最小响应时间。
- 最大值(Max):最大响应时间。
- 异常(Error) %:错误率——错误请求数/请求总数。
- 吞吐量(Throughput):吞吐量——默认情况下表示每秒完成的请求数(
Request per Second
),当使用了Transaction Controller
时,也可以表示类似LoadRunner
的Transaction per Second
数 。 - 接收 KB/Sec:每秒从服务器端接收到的数据量,相当于
LoadRunner
中的Throughput/Sec
。 - 发送 KB/Sec:每秒向服务器发送的数据量,相当于
LoadRunner
中的Throughput/Sec
。