Jmeter压测
测试计划(Test Plan)。这是其他组件的容器,包含了所有的控件、属性、变量。线程组(Threads (Users))。一个虚拟用户组,线程组内的线程数量在运行过程中不会发生变化。一个测试计划内可以包含多个线程组,线程组间的变量相互独立。
一、手动创建Jmeter脚本
启动Jmeter
提示:不要使用GUI运行压力测试,GUI仅用于压力测试的创建和调试;
执行压力测试请不要使用GUI。使用下面的命令来执行测试:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
1、基础介绍
(1)常用组件
测试计划(Test Plan)。这是其他组件的容器,包含了所有的控件、属性、变量。
线程组(Threads (Users))。一个虚拟用户组,线程组内的线程数量在运行过程中不会发生变化。一个测试计划内可以包含多个线程组,线程组间的变量相互独立。
(2)测试计划
1,可以修改计划名称以及备注
2,用户定义变量
用处:可以定义用户变量,在合适的地方引用
引用方式${变量名} 例如:$url
2.1.Detail 查看变量详情
点击弹出页面
其中
update: 更新参数值或者参数名
previous :切换到上一个参数
next :切换到下一个参数
取消:关闭当前弹窗。
2.2 添加 添加一个变量
2.3 add from clipboard 从黏贴板复制
2.4 删除 删除当前选中的参数
2.5 up 将当前选中的参数向上移动
2.6 down 将当前选中的参数向下移动
3,单选框
3.1 独立运行每个线程组
勾选后不同线程按从上到下顺序,否则并发执行
3.2 run teardown thread group after shutdown of main threads
勾选后 teardown线程组将在主线程正常关闭后运行,如果主线程依次终止则teardown线程则不会运行。
3.3 函数模式
勾选后再非GUI模式下运行时,-l 标志创建的日志文件。日志默认写入更多的数据字段如完整的相应数据影响性能 (只有当你需要记录每个请求从服务器取得的数据到文件时才需要选择函数测试模式)。
4.add director or jar to classpath
引入jar包或者类文件
2、Jmeter基准测试
基准测试,主要是测试一些基础数据,给进一步建立性能模型提供依据,一般测试人员按照1并发用户来执行脚本,校验脚本正确与否,为之后的压力测试和负载测试做准备,主要用来调试;
Ramp-up表示多久时间内启动设置的线程数。
3、Jmeter并发测试、稳定性测试
并发测试,是为了模拟用户并发访问,测试系统在多个用户同时访问时是否存在性能问题。通过模拟用户并发访问,可以测试系统是否存在死锁或其他性能问题,从而提前发现和解决性能问题。
稳定性测试,也叫耐久性测试或可靠性测试,在长时间大压力环境下测试,测试系统性能的可靠性,一般会取峰值并发的80%进行N*24小时的验证,判端系统性能的可靠程度;
同一时刻发起多个请求,设置一定数量的线程就绪后,同一时刻释放用于请求接口,模仿多个用户同一时刻请求(并发)
4、Jmeter负载测试、压力测试
负载测试,对照预定的负载级别测试,不断升高级别,测试出系统的瓶颈,一般测试人员会根据实际情况对系统进行逐增逐减阶梯加压,依此观察系统的承载能力;
压力测试,也叫极限和峰值测试或强度测试,持续在比较高的负载水平下测试,寻找系统无法承受的点,一般把这个点叫做性能拐点,拐点预示着资源耗尽或出现瓶颈,此后TPS将不再上升;
设置请求线程初始值,设置逐步增加请求线程,模拟一个时段内用户请求越来越多时,接口的情况
Stepping Thread Group要去Jmeter官网下载插件才能使用,默认没有这个选项。
一开始100个线程请求你的接口,然后每30秒加10个线程,请求线程会越来越多,到时间后每秒减少5个线程,直达0。
This group will start 100 threads:设置线程组启动的线程总数为100个;
First,wait for N seconds:启动第一个线程之前,需要等待N秒;
Then start N threads:设置最开始时启动N个线程;
Next,add 10 threads every 30 seconds,using ramp-up 5 seconds:每隔30秒,在5秒内启动10个线程;
Then hold load for 60 seconds:启动的线程总数达到最大值之后,再持续运行60秒;
Finally,stop 5 threads every 1 seconds:每秒停止5个线程;
二、测试执行
1、GUI界面执行
2、使用命令执行测试
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
例如:jmeter -n -t D:\apache-jmeter-5.6.2\bin\test.jmx -f -l result.jtl -e -o D:\apache-jmeter-5.6.2\report
jmeter -n 查看所有参数
参数说明:
-n: 非GUI模式执行JMeter
-t: 执行测试文件所在的位置
-f --forceDeleteResultFile 强制删除结果文件,强制删除现有结果文件和web报表文件夹开始测试前
result.jtl该文件存在时再次执行命令会报错,因此每次执行前删除该文件,或者加上-f参数
-l: 指定生成测试结果的保存文件,如:jtl文件格式,txt文件格式
-e: 测试结束后,生成测试报告
-o: 指定测试报告的存放位置
三、报告分析
1、仪表盘
Apdex 满意度,0-1,1满意度最高
T(Toleration threshold):可接受(容忍或满意)阈值,即用户可接受的响应时间
F(Frustration threshold):不可接受(失败)阈值,即用户不可接受响应时间
errors:错误原因、错误数、错误百分比、占所有样本的百分比
2、Over Time
(1)response times over time 响应时间变化趋势
Response Times Over Time,即响应时间随时间变化趋势。由于应用需要初始化建立连接以及CPU、内存等分配都会消耗资源,随着系统趋于稳定,响应时间也会趋于下降至稳定。
(2)Response Time Percentiles Over Time (successful responses) 成功响应时间百分比
(成功响应时间百分比),类似于jmeter聚合报告中的Min、Max、90%、95%、99%
(3)Active Threads Over Time
随着时间变化,每个时间节点上的活动线程数活跃线程变化趋势,即并发用户数趋势。
相当于我们模拟的并发用户发出请求随着时间变化的趋势。图上为阶梯压测。
(4) Bytes Throughput Over Time
蓝色为每秒发送字节数,黄色为每秒接收字节数
(5) Latencies Over Time(延迟时间曲线图)
记录的是客户端发送请求完成后,服务器端返回请求之前的这段时间,
在高并发场景或者业务强数据一致性场景,延时是个很严重的影响因素
(6)Connect Time Over Time(连接时间变化曲线图)
随着时间变化,每个时间节点花费在连接上的平均时间
3、Throughput(吞吐量)
(1) Hits Per Second(每秒点击率):
也叫每秒请求数
(2) Codes Per Second(每秒状态码数量):
即每秒响应状态码数量,这里主要是对200响应成功的状态码进行记录统计。
(3) ransactions Per Second(每秒事务数):
即TPS,是性能测试中很重要的一个指标,它是用来衡量系统处理能力的一个重要指标,
类似于JMeter Plugins上的jp@gc - Transactions per Second如果没有开启事务,那么TPS也可看做QPS
(4) Total Transactions Per Second(每秒总事务数)
(5)Response Time Vs Request(响应时间点请求的成功或失败数)
(6)Latency Vs Request(延迟时间点请求的成功或失败数)
即响应时间和请求数对比关系,如果请求数量太小就只有一些散点
4、Response Times(响应时间)
更多推荐
所有评论(0)