# Day3 # 性能测试实战篇
Jmeter执行原理
JMerer通过线程组来驱动多个(也可以理解为LR⼯具⾥⾯的虚拟⽤户)运⾏测试脚本对⽬标服务器发起⼤量的⽹络请 求,在每个客户端上可以运⾏多个线程组,也就是说⼀个测试计划⾥⾯可以包含N个线程组。
监听器:
概念:
用来监听以及显示jmeter取样器的测试结果,能够以树、表及图形形式显示测试结果
查看结果是在监听器中,它的组件具体如下:
常用监听器:
1、查看结果树:查看线程组下所有请求的结果(查看发送网络请求后返回的信息)
添加路径:线程组 > 添加 > 监听器 > 察看结果树,如下图所示:
2、 响应时间图:发送N次请求过程中响应时间的趋势图
3、聚合报告:记录这次性能测试中的总请求数、吞吐量,最小响应时间,最大响应时间,平均响应时间 ,中位数,90%,95%,99%等,可以用来帮助分析被测系统的性能。添加路径:线程组 > 添加 > 监听器 > 聚合报告
4、汇总报告:与聚合报告类似,其中有一个标准偏差。
5、后端监听器:后端监听器看见实时数据,然后再用Grafana进行可视化展示。
使用BackendListenerClient
- influxdbUrl:influx数据库的url。例如:http://47.95.142.233:8086/write?db=jmeter
- application:被测试的应用名称
执行过程:
线程属性
-
线程数
⼀个线程可以理解为对应模拟⼀个⽤户,所以线程数越多,那么也就认为可以模拟的⽤户数越多。
-
Ramp-Up时间(秒)
该属性指的是所有线程从启动到开始运⾏的时间间隔,单位是秒,也就是说所有线程在多⻓时间内开始执⾏,如线程数设置50,设置的时间为5秒,那么计算的公式为:
每秒执⾏线程数=线程数/Ramp-Up
具体如:
如设置的线程数为50,Ramp-up的时间为10,那么也就是说开启执⾏后, 每秒会启动5个线程,如果Ramp-Up设置为
0,那么开始执⾏后,50个线程会⽴刻启动。
所有的互联网产品都是HTTP的请求
如何添加HTTP请求:
专业名词含义:
Label:取样器名称
Samples:取样器运⾏次数
Average:单个请求的平均响应时间
Median:50%请求的响应时间
90%Line:90%请求响应时间
95%Line:95%请求响应时间
99%Line:99%请求的响应时间
Min:请求的最⼩响应时间
Max:请求的最⼤响应时间
Std.Dev:响应时间的标准⽅差
Error%:事务错误率
Throughput:吞吐率,也就是TPS
KB/sec:每秒数据包流量
Avg.Bytes:平均数据流量
Received KB/sec:每秒从服务器端接收到的数据量
SentKB/sec:每秒从客户端发送的请求的数量
调度器:
持续时间:
指所有的人物执行完毕后,任务再接着执行n秒,目的是验证被测服务的稳定性(任务由于资源有限没能执行完毕,在持续时间内继续执行)
启动延迟:
等待把所有被执行的任务集合中一起来瞬间来执行
性能测试注意事项:
1、客户端本身的资源也是有限的,到具体一定的值,就不能再载扩大每秒并发用户数了 。这个时候使用分布式的技术来实现。测试环境和生产环境必须保持一致。
PerMon插件(jmeter的扩展包都是存放在lib目录的ext目录下):
1、我们在性能测试的过程中,需要收集被测目标服务器的终端的系统资源
A、在目标服务器部署serveragent(功能就是收集数据)
B、在JMeter连接serveragent,把收集的数据展示出来
2、安装permon插件
① jmeter-plugins-manager-1.6.jar
②安装目录
安装ServerAgent(ServerAgent负责收集数据)
将资源包解压放置与jmeter同一个文件夹里,打开文件夹,双击打开startAgent.bat,如图所示:
成功后显示窗口如图所示:
添加被测资源:
收集数据过程:
如何查看自己的数据:
①修改自己的id名称
influxdbUrl:服务器地址
②先在jmeter发送请求,再打开服务器查看数据
③
④切换查看个人数据