性能测试是一个全栈工程师/架构师必会的技能之一,只有学会性能测试,才能根据得到的测试报告进行分析,找到系统性能的瓶颈所在,而这也是优化架构设计中重要的依据。
需求分析→环境搭建→测试计划→脚本开发→执行与监控→缺陷管理→结果与报告
压力测试
1、线程组设置,这里的线程数与同步定时器的用户数量一样
2、添加HTTP cookie管理器
3、默认请求值
4、添加一个事务控制器,可以当作一个业务
5、在事务控制器下添加,同步定时器
设置用户数量,这里与线程组的线程数一样,超时时间可设置
6、添加脚本(http请求)
7、添加查看结果树
8、添加->监听器
9、在最后添加一个聚合报告,添加处:添加->监听器
1、线程组的设置50个用户(持续时间:按秒计算,这里300=60*5,意思就是运行时长为5分钟)
2、添加HTTP cookie管理器
3、默认请求值
4、添加一个事务控制器,可以当作一个业务
5、在事务控制器下添加,高斯随机定时器
总的延时 = 固定延迟时间 + 高斯随机生成的偏差值(说明:单位都是毫秒,固定延迟300ms,偏差100ms,意思是时间延迟300-400ms之间)
6、添加脚本(http请求)
7、添加->监听器
8、在最后添加一个聚合报告,添加处:添加->监听器
测试需求:测试20个用户访问网站在负载达到30QPS时的平均响应时间
QPS:Query Per Second 每秒查询率。(一台查询服务器每秒能够处理的查询次数,作为域名服务器的性能经常用每秒查询率来衡量)
测试步骤
1、添加线程组(线程数+准备时长+循环次数)
1.1、线程数:虚拟用户数,一个虚拟用户占用一个进程或线程(设置多少个虚拟用户=设置多少个线程)
1.2、准备时长(s):设置的虚拟用户数需要多长时间全部启动。eg:线程数为20,准备时长为10,则说明需要10秒钟启动20个进程。
1.3、循环次数:每个线程发送请求的次数。eg:线程数为20,循环次数为5,那么每个线程发送5次请求,总请求数为20*5=100
2、添加HTTP请求
3、设置QPS限制:控制给定的取样器发送请求的吞吐量
4、添加监视器-聚合报告、察看结果树
5、运行脚本
6、聚合报告解析(响应时间单位:毫秒)
1)Label:每个Jmeter的element都有一个Name属性,这里显示的就是Name属性的值
2)#Sample:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
3)Average:平均响应时间-默认情况下是单个Request的平均响应时间当使用了Transaction Controller 时,也可以以Transaction为单位显示平均响应时间
4)Median:中位数,50%用户的响应时间
5)90%Line:90%用户响应时间
6)Min:最小响应时间
7)Max:最大响应时间
8)Error%:本次测试中出现错误的请求的数量/请求的总数
9)Throughput:吞吐量-默认情况下白石每秒的请求数
10)KB/sec:每秒从服务器端接收到的数据量
性能测试的分类
压力测试、负载测试、并发测试、稳定性测试
什么是压力测试?
压力测试也叫强度测试,它是指逐步给系统增加压力,测试系统的性能变化,使系统某些资源达到饱和或系统崩溃的边缘,从而确定系统所能承受的最大压力
举个例子:百米赛跑,逐步增加你的负重,直到你完不成百米的程度,也就是崩溃的边缘你所能承受的最大负重
什么是负载测试?
被测试系统正常服务的前提下,系统所能承担的最大服务负荷数量(即最大并发数量),最终分析出系统性能的瓶颈
举个例子:百米赛跑,设置必须15秒完成,负重奔跑(不断增加负重)
压力测试和负载测试的区别
压力测试要测试出系统即将崩溃时,能够承受的最大并发数
负载测试是满足系统指标要求的情况下,能够承受的最大并发数
什么是并发测试
举个例子:商场卖货,售后员根据库存表单记录表卖货
仓库管理员应该在出货时同时更新库存表单记录表,但由于用户过多,表单记录更新不及时
导致仓库已经没有货了,但是售货员看到库存表单记录表中还显示有库存,仍然在卖货,但已经发不出去货了
1.分析性能需求。挑选用户使用最频繁的场景来测试,比如:登陆,搜索,下单等等。确定性能指标,比如:事务通过率为100%,TOP99%是5秒,最大并发用户为1000人,CPU和内存的使用率在70%以下
2.制定性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具
3.编写测试用例
4.搭建测试环境,准备好测试数据
5.编写性能测试脚本
6.性能测试脚本调优。设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余脚本
7.设计测试场景,运行测试脚本,监控服务器,
8.分析测试结果,收集相关的日志提单给开发
9.回归性能测试
10.编写测试报告
未完待续,你的点赞是我更新的最大动力!