目录
一、什么是性能?
二、什么是性能测试?
三、性能测试结果需要记录哪些参数?
四、如何做性能测试(性能测试流程)?
1、指标建模
2、诊断调优
五、常见性能测试工具
一、什么是性能?
时间复杂度和空间复杂度:性能不仅仅包括处理的效率,还要包括资源的占用;
相同的效率下,资源(CPU、内存、IO等)占用越小---则性能越高;
相同的资源占用(CPU、内存、IO等)下,处理效率越高---则性能越高;
计算机资源:CPU、GPU、内存、磁盘、网路等;而性能的问题,也一般体现在资源的不足上面(主要是CPU、内存和IO);
当然,也有些性能的问题是程序上,如没做负载均衡、单核工作等,这会出现设备整体资源大部分空闲,但处理性能却到瓶颈的问题;
二、什么是性能测试?
简单来说:是通过模拟增加负载来测试系统、网络设备在负载情况下,其延迟、新建、并发、吞吐等指标是否满足性能要求的测试,比如:压力测试、负载测试、容量测试等
负载测试 | 是一种通过不断增加负载来测试出系统、网络设备性能瓶颈或表现的方法。阶梯式增加负载或达到一定负载时,找出系统cpu、内存、网络不足时性能的拐点。 举例1:测出web系统登录接口的最大并发性能; |
压力测试 | 是一种极限负载时,测试系统、网络设备在极限状态下且长时间运行是否稳定的方法。主要目的是极端异常高压下,测试系统的容错、可恢复能力。压测是长时间的高负载测试。 举例1:测出web系统商品展示页面在大压力(超出系统支持的最大负载)下是否正常展示,系统是否稳定; |
容量测试 | 是一种测试出系统最大最优容量的方法。如:用户认证最大数、模块配置最大条数、存储最大容量等。在指标测试、性能场景测试、稳定性测试中都会覆盖到容量。 举例1:测出web系统支持注册的最大用户数,购物车支持最大商品数; |
在工作中不同公司通常有自己定义的性能测试项,本质都是基于上面三个基本概念(负载、压力、容量)延伸出来的。这里举个工作中普遍设计的性能测试项例子;
测试活动中都会接触指标测试、可靠性测试、稳定性测试,下面重点介绍它们:
区别:
1、指标测试:更偏向于测试建模,验证系统不同负载下的各项指标数据,其测试模型、环境、方法、仪器、报告都比较标准化,一般有自动化做基准测试。
2、可靠性测试:更偏向于测试模拟用户真实业务、行为操作等,以及大压力下可能出现的故障容错与恢复性。一般都是临时搭建测试环境,需要设计可靠性用例
3、稳定性测试:也是可靠性测试的一种,但要求更严格,部署,配置,操作,压力,监控等都必须严格遵守与记录,保持正常运行2周以上(出现异常则重新计算),直到项目发布(部分项目发布后还需继续跑几周)
性能测试目的:
- 评估系统能力,对比数据,帮助规划人员作出下一步决策
- 性能调优,持续提升产品软件性能
- 满足用户大型业务需求,方案需求
- 提供产品应标性能参数表,供客户选型或友商PK
- 评估系统的资源,及时发现资源不足的风险
- 评估单个模块的开启可能对整体性能的影响
三、性能测试结果需要记录哪些参数?
上面讲过性能测试有很多项,但首要测试的通常是指标测试,即测试系统最大处理能力,测试结果通常有以下几项。
常见性能参数:
1、新建数:通常都是指每秒4层tcp的新建连接的个数。如:Nat模块支持最大21w新建数每秒。
2、并发连接数:通常测试网络设备,保持4层连接(tcp/udp/icmp)的总数,也叫会话数。
3、吞吐量:每秒通过设备的数据量(Bps/bps),可细分上行吞吐、下行吞吐。
4、用户数:通常测试网络设备,指设备上活跃上线的用户总数。
5、包转发率:每秒通过设备的数据报文(pps),可细分上行pps、下行pps。
6、页面的性能体验指标,分别包括:空载情况,正常负载情况和满载情况。
7、资源占用:各种负载下的CPU占用、内存占用、IO占用情况;
不同的系统测试项通常不一样,如底层网络设备,通常会测试4层的新建和并发连接性能;服务器系统通常会测试7层的最大并发(TPS)和响应延迟,并记录最大性能负载下的资源占用情况(CPU、内存、IO)。
四、如何做性能测试(性能测试流程)?
性能测试流程通常包括五个流程:
1、指标建模
上面最大难点在于指标建模,测试模型要考虑:什么样的测试环境配置(几核几G),配置开关和比率,流量业务和比率等,最后在定好的测试模型开始设计性能场景用例;
以某个新功能模块为例,那性能场景用例通常包括那些呢?
- 模块规格基线:测试最大容量规格的性能指标(如:满配1万在线用户下的资源占用);
- 模块管理面性能:页面响应指标,配置下发指标(如:CPU负载80%下访问购物车页面的响应耗时);
- 模块数据面性能:用户场景下模块本身的性能指标(如:商品展示页面支持的最大并发访问;模块启用后资源占用情况等)
2、诊断调优
测试出性能数据后,怎么判定性能是否达标,通常性能要求在需求阶段就有定义好了,类似以下定义:
支持1万并发用户访问,95%请求响应延迟低于1s,且最大负载下模块CPU占用不超过50%,内存占用不超过1G。
如果性能不达标,就需要给出资源占用数据,协助研发一同分析:
五、常见性能测试工具
网络网关类设备性能通常会用思博伦(spt)仪器测试4层网络吞吐性能;
互联网公司大部分是web系统,测试也主要是web 接口性能,通常用Jmeter、loadrunner,或者用python测试,常用python测试接口并发性能的工具是locust。
工具类使用教程网上搜基本都有,这里不做描述。
如果你认真读到这里,那么我相信你对于性能测试已经有了基本了解,出发吧,少年,性能测试是一项系统性功能,不容易被AI替代,目前相关岗位待遇也不错。
觉得有收获给个赞或收藏!