1、什么是性能测试?
通过特定的方式,对系统施加压力,正常异常负载以及各种峰值来对系统施加压力,得到各项性能的指标,以保证系统的正常运转。
2、性能测试的价值以及目的:
为了评估系统的能力
为了识别系统的弱点(瓶颈,弱点)
为了检查系统一些隐藏问题
为了检验系统的稳定性和可靠性
3、性能指标一指标的测算
常见指标:虚拟用户数,并发数,事务,场景,响应时间RT,TPS,QPS,吞吐量,资源利用率等
虚拟用户数:在Jmeter中一个线程 = 一个用户
并发数:在指定时间内,一定数量的虚拟用户同时对系统的某个功能进行交互,一般采用集合点来实现。
事务:一个事务代表一个完成的功能。可以是一个接口,多个接口,一个流程等,一般采用一个流程为一个事务。由测试人员自己决定。
场景: 性能测试的用例,一个场景为一个用例
响应时间RT response time,还有平均响应时间,中无数,90%,99%
基准测试:一个用户请求接口,一般为200-500ms
压力测试:N个用并发请求接口,一般不能高于2S
TPS: 每秒事务数,是重要的性能指标,用来衡量一个系统在一定时间内(1s)能处理的事务数(交互数)
若事务为一个接口,那么TPS的值与吞吐量一致
计算公式:TPS = 总事务数量/总运行时间
例如:某产品,2022年最高的一天又10万比交易,预计2023年需要TPS为多少才能合格?
总事务数为:10万,总时间为:一天(246060=86400s)
理论上:TPS=100000/86400= 1.2 个/s ---此处算的是平均值,实际上与实际不一致,一天的交易量不可能平均分配
(1)没有详细数据,此时可以采用二八原则计算TPS=100000/864000.2=4.6个/s
(2)如果有详细的数据记录,如 5万笔交易在晚上8-9点完成的,此时TPS=50000/3600=13.9 个/s
由于以上算的是2022年的TPS,那么2023年根据业务量的增长(如果增长30%)此时的TPS=500000.3/3600=18个/s
QPS: 每秒查询率,
RPS:每秒请求数,如果一个事务为一个请求(接口),则TPS=RPS
HPS:每秒点击率,用户衡量客户端的性能(其他三个用于衡量服务器的性能)
吞吐量: 每秒传输的数据量,衡量网络成功传输的数据量(数据的传输率),单位Byte/s。
资源利用率: 服务器:CPU,内存,磁盘,网络几个方面的。
4、性能测试的流程
总体流程:需求分析→环境搭建→测试计划→脚本开发→执行与监控→缺陷管理→结果与报告
(1)需求分析以及性能需求的确认(指标值,场景,环境,人员)。一般是客户,产品经理,项目组领导会提出性能方面的需求
(2)性能测试计划以及方案制定
基准测试:
- 负载测试:
1、线程组的设置50个用户(持续时间:按秒计算,这里300=60*5,意思就是运行时长为5分钟)
2、添加HTTP cookie管理器
3、默认请求值
4、添加一个事务控制器,可以当作一个业务
5、在事务控制器下添加,高斯随机定时器
总的延时 = 固定延迟时间 + 高斯随机生成的偏差值(说明:单位都是毫秒,固定延迟300ms,偏差100ms,意思是时间延迟300-400ms之间)
6、添加脚本(http请求)
7、添加->监听器
8、在最后添加一个聚合报告,添加处:添加->监听器 - 压力测试:
1、线程组设置,这里的线程数与同步定时器的用户数量一样
2、添加HTTP cookie管理器
3、默认请求值
4、添加一个事务控制器,可以当作一个业务
5、在事务控制器下添加,同步定时器,设置用户数量,这里与线程组的线程数一样,超时时间可设置
6、添加脚本(http请求)
7、添加查看结果树
8、添加->监听器
9、在最后添加一个聚合报告,添加处:添加->监听器 - 稳定性测试:
- 其他类型:配置测试,极限测试,浪涌测试等
(3)性能测试的准备:环境需要单独部署一套,最好以生产环境保持一致
(4)测试执行阶段
脚本生成与增强只是冰山一角,还需要场景设计,指标监控,性能瓶颈定位以及性能调优,一般使用php+nginx+mysql+centos
(5)性能测试报告和总结
Jmeter性能测试脚本的录制生成以及完善增强
通过jmeter代理服务器录制脚本
(1)设置客户端代理(本机的代理服务器:控制面板-->Internet选项-->连接-->局域网设置-->勾选代理服务器,输入jmeter所在电脑ip,以及8888端口)
![](https://img.haomeiwen.com/i18169088/cdbedc05bc310d9c.png)
(2)在Jmater中添加线程组
![](https://img.haomeiwen.com/i18169088/d39a9ad50601feb0.png)
(3)在Jmeter中添加代理服务器并设置过滤器与测试计划
![](https://img.haomeiwen.com/i18169088/5a472fd86c16c9d4.png)
![](https://img.haomeiwen.com/i18169088/938fb1d370b9fb9b.png)
![](https://img.haomeiwen.com/i18169088/96386474040e091f.png)
注意:点击启动如果遇到如下问题:Root CA certificate:Apache JMeterTemporaryRootCA created in JMeter bin directoryimage.png
解决办法:如下,导入jmeter的证书
![](https://img.haomeiwen.com/i18169088/011177dbb9ce0dbc.png)
(4)录制后的脚本进行完善以及增强
删除一些不需要的脚步
![](https://img.haomeiwen.com/i18169088/3f50d7308484a82c.png)
完善和增强脚本
![](https://img.haomeiwen.com/i18169088/d3a51793e43d903f.png)
完善jmeter脚本的步骤:
1、删除录制到的多余的脚本接口
2、添加HTTP请求默认值(http/https协议,IP,端口(80/433))
3、添加HTTP cookie管理器,jmeter会自动处理cookie的存储和发送。
如果需要特定的cookie值,可在 JMeter 的 "View Results Tree" 监听器中,查看每个请求的响应头,找到 Set-Cookie 来获取 Cookie并设置cookie的值(可使用正则表达式抓取)
![](https://img.haomeiwen.com/i18169088/a1c599e36128e4b1.png)
4、添加用户定义的变量,添加某些页面页面可能会变化的参数,可在用户定义变量中添加,在后续的页面中需要引用时使用:${参数名} 的形式引用即可
![](https://img.haomeiwen.com/i18169088/f448a50c2a485ba8.png)
5、为了查看请求的的结果,通常添加“查看结果树”,“聚合报告”,以及“用表格查看结果”来观察我们请求的数据信息,如下图:
![](https://img.haomeiwen.com/i18169088/f594aec29782526b.png)
![](https://img.haomeiwen.com/i18169088/cef7c747178d8953.png)
![](https://img.haomeiwen.com/i18169088/68f0d1456cddf29f.png)
各元件只执行顺序
jmeter原件的执行顺序不是按照添加的顺序执行的,一般情况下,jmeter 组件的执行顺序,和在jmeter界面上的位置没有关系,不是组件放在的前面就先执行,而是遵守下图的规则,执行顺序的优先级:从下往上,从左往右。
大致顺序如下:
线程组 - 配置原件- 前置处理器 – - 定时器 - 控制器 — 采样器 – 后置处理器 – 断言 – 监听器
同一个级别的元件按照先后顺序执行
![](https://img.haomeiwen.com/i18169088/976d1476580e0ef5.png)
网友评论