性能测试介绍
更多软件测试学习资料戳
简介
性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。
为什么要进行性能测试
通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。
发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题。通过检测性能瓶颈,可以找到影响系统性能的原因,并针对性地进行优化和调整。
评估系统能力:性能测试可以提供有关系统在不同负载条件下的性能数据,包括响应时间、吞吐量和资源利用率等指标。这些数据可以帮助开发人员、运维人员和决策者评估系统的能力,确定系统的性能边界,并制定相应的策略和决策。
优化系统性能:通过性能测试,可以发现系统存在的性能问题,并优化系统的性能。通过调整配置、优化代码和使用合适的技术方案,可以提高系统的性能,提供更好的用户体验。
检验系统可靠性:性能测试不仅可以评估系统的性能,还可以测试系统在长时间运行、高负载和异常条件下的稳定性和可靠性。通过模拟实际使用场景,可以检验系统是否能够处理意外情况和异常情况,并找出潜在的问题。
综上所述,进行性能测试有助于发现系统性能瓶颈,评估系统能力,优化系统性能,检验系统可靠性,并提供良好的用户体验。这些优点可以帮助保障系统的稳定性和性能,并满足用户和客户的需求。
性能测试的应用场景
在开展性能测试之前,需要有一个明确的业务场景。比如如下场景:
双十一、618 即将到来,超过 x 千万的用户会同时下单。
微博明星公开恋情。
12306 抢票。
以上的场景都有一个共同特点,是在某个瞬间,来自用户的请求信息达到了远远超出平日正常使用的峰值。
当然了,除了以上的场景,日常的性能测试,也需要拉通业务,产品,确定产品的用户量,根据这些信息制定合理的用户数、并发数、响应时间等等。
如果是完全新上线的产品,在第一次发布的时候,会主要参考竞品的数据指标,制定性能测试计划。
性能测试的价值
性能测试的价值除了上述保证产品上线之后能正常使用之外,还有一个非常重要的因素,就是降本增效。
因为服务器的价格是非常昂贵的。在能满足需求的情况下,能少买一台服务器,都是在替老板省钱。
性能省钱公式:良好的容量规划能⼒ + 性能调优能⼒ = 为老板省钱
![](https://static001.geekbang.org/infoq/2f/2fc450b56145d0f381963e3fc7e7dbf4.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
学习性能测试的价值体现
性能测试能力是测开工程师精华加分项。
![](https://static001.geekbang.org/infoq/93/93ad1299542aa4bd54482d38eea12a4c.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
性能测试知识体系
性能测试知识体系主要分为四大模块:
![](https://static001.geekbang.org/infoq/83/83c95f90e3e62bab31e8e5bc33934c78.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
性能调优是整个性能测试过程中最难的一个环节,除了要掌握以上的知识之外,还需要具备非常强的代码基础以及非常丰富的项目经验。所以基本上能做调优的测试,都是在资深专家以上的级别。
性能测试压力曲线模型
![](https://static001.geekbang.org/infoq/7b/7b149b8e50310822965559e3fa2fd63c.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
这张图是一张非常经典的和测试相关的图片,叫做性能压⼒曲线图。
曲线图关键点介绍:
横轴:并发的用户数,从左到右表现了 Number of Concurrent Users(并发用户数)的不断增长。
纵轴:分别有三条曲线 Utilization(资源的利用情况,包括硬件资源和软件资源)Throughput(吞吐量,这里是指每秒事务数)Response Time(响应时间)
区域:曲线图主要分为 3 个区域,分别是:Light Load (轻压力区)Heavy Load (重压力区)Buckle Zone(弃忍区)
纵轴的三条曲线,每条曲线都是在性能测试过程中重点关注的信息:
利用率曲线(绿色):并发用户数-资源利用情况曲线
吞吐量曲线(紫色):并发用户数-吞吐量曲线
平均响应时间(蓝色):并发用户数-响应时间曲线
而在随着用户数不停增大,很明显的可以看到图中有两个拐点:
第一个拐点:The Optimum Number of Concurrent Users(最佳并发用户数),在 Light Load 和 Heavy Load 两个区域交界处的并发用户数。代表最优并发用户数:既不会造成资源的浪费,也可以满足现有的需求
第一个拐点到第二个拐点之间:The Maximum Number of Concurrent Users(最大并发用户数),在 Heavy Load 和 Buckle Zone 两个区域交界处的并发用户数平均响应直接会越来越高,而平均响应时间会直接影响到用户的使用体验。吞吐量和利用率曲线相较平稳。
第二个拐点:代表系统能承载的最大的并发用户数。一旦超过这个并发,代表服务器需要进行扩容。
过程分析:
阶段 1 轻压力区:随着并发用户数的增长,资源使用率和吞吐量(TPS)会相应的增长,但是响应时间(RT)基本平稳,小幅递增;
阶段 2 重压力区:当并发用户数增长到一定值后,资源利用趋于饱和,吞吐量(TPS)增长明显放缓甚至停止增长,而响应时间(RT)却进一步增大。
阶段 3 弃忍区:如果并发用户数继续增长,软硬件资源占用继续维持在饱和状态(过饱和),但是吞吐量(TPS)开始下降,响应时间(RT)急剧递增。
综上所述,当系统的负载等于最佳并发用户数时,系统的整体效率最高,没有资源被浪费,用户也不需要等待;当系统负载处于最佳并发用户数和最大并发用户数之间时,系统可以继续工作,但是用户的等待时间延长,满意度开始降低,并且如果负载一直持续,将最终会导致有些用户无法忍受而放弃;当系统负载大于最大并发用户数时,将注定会导致某些用户无法忍受超长的响应时间而放弃。
所以性能测试的数据尽量保持在 CPU 利用率足够高,整个系统的吞吐负载可控。
总结
什么是性能测试
为什么要进行性能测试
性能测试压力曲线模型
评论