目录
1、为什么要进行性能测试呢?
进行性能测试的目的是为了确保软件系统在实际运行环境中能够满足性能需求,提供良好的用户体验,并确保系统的稳定性和可靠性。具体原因包括:
1、识别系统瓶颈:通过性能测试,可以发现系统的瓶颈,即性能上的弱点或不足,从而针对性地进行优化。
2、建立性能基准:为将来的测试建立性能基准,以便评估性能改进或回归。
3、满足性能目标和需求:确定系统的性能目标和需求,确保系统能够满足业务和用户的性能要求。
4、收集性能数据:收集性能相关的数据,帮助决策层做出关于产品总体质量的合理决定。
5、评估系统可行性:评估系统是否能够处理预期的工作量,包括大量用户的同时操作。
6、发现结构缺陷:通过性能测试可以发现系统结构上的缺陷,提前进行改进。
7、改善性能调优效率:性能测试结果和分析能够提高性能调优的效率。
8、应对技术变革:随着技术架构的变化,如云原生和容器化微服务,系统的复杂性和对性能的要求增加,需要通过性能测试来确保系统的可靠性和性能。
2、性能测试的概念
2.1 什么是性能测试?
3、性能测试与功能测试
3.1 焦点不同
- 功能测试:验证软件系统操作功能是否符合产品功能需求规格,主要焦点在功能(正向、逆向)
- 性能测试:验证软件系统是否满足业务需求场景,主要焦点是业务场景的满足(时间、资源)
3.2 关系
- 功能测试和性能测试是相辅相成的,对于一款优秀的软件产品来讲,它们都是必须的
- 功能测试通过之后,才进行性能测试
4、性能测试的类型
分类:基准测试、负载测试、稳定性测试、压力测试、并发测试、余量测试等。
4.1 基准测试
- 狭义上讲:也是单用户测试,测试环境确定以后,对业务模型中的重要业务做单独的测试,获取单用户运行时的各项性能指标。
- 广义上讲:是一种测量和评估软件性能指标的活动。你可以在某个时刻通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件环境发生变化之后再进行一次基准测试以确定哪些变化对性能的影响。
基准测试数据的用途:
- 为多用户并发测试和综合场景测试等性能分析提供参考依据
- 识别系统或环境的配置变更对性能响应带来的影响
- 为系统优化前后的性能提升/下降提供参考指标
举一个例子:
商城 | |
用户环境使用:V1.0 | 先在V1.0的版本上进行性能测试收集所有的性能指标——基准测试 |
新开发版本:V1.1 | 在V1.1的版本上,使用与V1.0基准测试时相同的环境、配置、用户量等进行性能测试,再收集性能指标。查看V1.1版本的性能是否比V1.0有提升。 |
4.2 负载测试
说明:给软件施加一定负荷,查看软件正常工作到异常工作的临界点,并最终确定在满足系统的性能指标情况下,系统所能承受的最大负载量。通过负载测试,一般能找到系统的最优负载和最大负载。最大负载一般是项目组内部知晓,不会对外公布。普通用户看到的系统的最大负载,一般都是测试得到的最优负载。比如:电梯的最大载重上限。
负载:指向服务器发送的请求数量,请求越多,负载越高。
注意:负载测试关注的重点是逐步增加压力
4.3 稳定性测试
说明:稳定性测试是指,在服务器稳定运行(业务正常的负载量)的情况下,进行长时间的测试,保证服务器能够正常运行。
4.4 并发测试
说明:是指在极短的时间内,发送多个请求,来验证服务器对并发的处理能力。如 :抢红包、秒杀活动等。
4.5 压力测试
说明:测试系统在强负载的情况下,测试系统在峰值情况下的操作,是否具有良好的容错能力及错误的恢复能力。
稳定性压力测试:在系统高负载的情况下,长时间运行(24小时),查看系统的处理能力。
破坏性压力测试:在系统极限负载的情况下,对系统进行压力测试,查看系统容错能力和错误恢复能力。
4.6 容量测试
说明:关注软件的极限压力下的各个极限参数值。例如:最大TPS,最大连接数,最大并发数,最多数据条数等。
4.7 余量测试
说明:是一种验证系统在超出设计容量或预期负载的情况下是否仍能正常工作的测试方法。它通过将系统置于超出其设计容量的负载下,观察系统是否能够继续运行或是否会出现故障。余量测试的目的是确保系统在极端情况下仍有一定的冗余能力,以应对突发的高负载或异常情况。不管怎么给软件系统施加负荷,软件都应该剩余20%的性能余量。
5、性能指标介绍
5.1 什么是指标
说明:在性能测试的过程中,记录的一系列的数据值。用这些实际记录的数据值与需求中的性能要求做对比,达成需求要求则无问题,未达成需求要求则说明是性能bug。
常见性能测试指标:响应时间、性能计数器、吞吐量、并发数等
5.2 常用性能指标
5.2.1 响应时间
说明:是指客户端发送请求,到服务器收到响应,过程中所经历的全部时间,都是响应时间
响应时间=应用程序处理时间(A1+A2+A3)+网路传输时间(N1+N2+N3+N4)
5.2.2 并发数
说明:并发测试的用户数
扩展:
- 系统用户数:系统注册的总用户数
- 在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求
- 并发用户数:某一物理时刻同时向系统提交请求的用户数
举例:淘宝用户
注册用户数:10亿 | 指系统用户数 |
当前登录的用户数:1亿 | 指在线用户数 |
当前正在使用的用户数:500万 | 指并发用户数 |
5.2.3 吞吐量
说明:吞吐量(Throughput)指的是单位时间内系统处理的客户端请求数量,直接体现软件系统的性能承载能力,也是衡量服务器性能好坏的直接指标。
注意:
5.2.3.1 QPS
说明:服务器每秒钟处理的接口请求数量。(一个服务器中有多个接口,QPS指的是所有接口在同一个单位处理数量之和)
举例:
5.2.3.2 TPS
说明:服务器每秒钟处理的事物请求数量。
一个事务通常指的是界面上的一个操作,一个事务可以包含一个孩子多个接口请求》
举例:
对于登录事务而言,当TPS为10时,服务器的QPS也是10
对于支付事务而言,当TPS为10时,服务器的QPS就是30
5.2.4 点击数
点击数不是指在页面上的一次点击事件;
指的是页面(html代码、图片、js、链接……)加载时,向服务器发送的请求数量可以用每秒点击数来衡量服务器的处理能力。
5.2.5 错误率
说明:指系统在高负载情况下,失败业务的概率。错误率=(失败业务数/业务总数)*100%
稳定性较好的系统,其错误率应该由超时引起的,即超时率
5.2.6 资源利用率
说明:是指系统各种资源的使用情况,一般用“资源的使用量/总的资源可用量×100%”形成资源利用率的数据。
6、性能测试流程
6.1 性能测试的需求分析
6.2 性能测试的计划
6.3 性能测试的用例模板
要素:用例标题、用例编号、用例预制条件、用例步骤、用例预期结果、用例实际结果