性能测试、压力测试、负载测试傻傻分不清楚?一文让你搞懂性能测试的类型。
初涉性能测试领域的同学们,可能会对性能测试、压力测试、负载测试等傻傻分不清楚。这也难怪,因为网上对这些概念的解释本身就有些混乱,又大都只是解释概念,没有好的例子或图形示意。本文参考了国外很多专业性能测试网站比如K6对性能测试类型的定义,并结合实例,让大家一文搞懂性能测试的类型。
性能测试类型是性能测试基础知识中非常重要的一个知识点,它不只是概念性的知识,因为不同的性能测试类型对应了不同的性能测试目的,也就影响了性能测试的具体实施方案或者策略。
性能测试类型的分法其实有很多种,本文涉及的是最常见最有共识的分类类型,具体有:
性能测试(performance testing)
负载测试 (Load testing)
压力测试 (Stress testing)
峰值测试 (Spike testing)
浸泡测试或耐力测试 (Soak testing/Endurance testing)
首先来看性能测试(Performance testing):
软件测试从大的方面可以分成两种,一种是功能测试,另一种是非功能型测试。功能测试关注的是软件的功能是否正确,非功能型测试关注功能正确之外的其他方面,比如安全性,易用性,性能等。所以性能测试属于软件测试中的非功能型测试,它重点关注的是系统的响应时间,稳定性和可扩展性等。
性能测试是所有关注响应时间的非功能性测试的总称,它包括下面的所有细分性能测试类型,即负载测试,压力测试,尖峰测试,浸泡测试(耐力测试)等都是性能测试的子类。
为什么性能测试是总称的概念呢?因为它的子类即负载测试、压力测试、尖峰测试、浸泡测试等都是和并发用户相关的测试类型,测试多用户同时访问系统的不同情况,但是性能测试不仅包括并发的情况,单个用户的使用情况也在性能测试包含之内,比如单机软件像Word等也是要检验性能相关的指标的,所以性能测试是更广泛的一个概念。
什么是负载测试(Load testing)
负载测试是最基本的一种性能测试类型,模拟生产中典型一天的常规负载是否满足性能目标。这里的典型一天是指日常数量的用户同时访问应用程序,执行正常的、平均的工作。
负载测试的目的是用于评估系统在典型负载下的性能,检验系统能否支撑日常负载情况。
例子:比如在日常工作时段,系统的平均并发用户数为100,那么实施100数量(或110数量的并发,以提供一些喘息空间)的并发就是负载测试。
在性能测试工具中的负载测试实施图:
什么是压力测试(Stress testing)
压力测试与负载测试不同的是,压力测试关注的不是日常负载,而是极端负载。比如国内的双11促销,国外的Black Friday黑色星期五促销等。
执行压力测试时,在整个测试过程中需要不断增加负载,直到被测系统崩溃。
压力测试的目的是找出系统的断点(breakpoint)和能支持的最大并发用户数,以及检验系统崩溃后的恢复情况。
例子:接负载测试中的例子,即使负载测试表明系统在处理100个并发用户时响应良好,但在压力测试中也要不断的增加负载用户数量,直到系统出现断点崩溃(比如大量500错误)。
在性能测试工具中的压力测试实施图:
什么是峰值测试(Spike Testing)
峰值测试类似于负载测试,但与负载测试将相同负载稳定运行一段时间不同的是,它涉及负载突然增加和急剧减少的情况。
峰值测试也很重要,因为在许多实际场景中,流量有时不会以稳定、一致的模式到达。比如热门演唱会的门票,粉丝会在开售后的前几分钟内蜂拥而入。
峰值测试模拟实际中的流量峰值,以显示它们如何影响系统性能,暴露性能瓶颈和检测可扩展性问题,以及系统的恢复情况等。如使用云服务的自动扩容或自动缩减功能不一定能特别快的处理骤增和骤减的流量。
例子:接压力测试中的例子,假如压力测试中测得系统能支持的最大并发用户数是400个,那么峰值测试的最大峰值不应超过400个。峰值测试可以模拟在一分钟内突然出现200个并发,并在完成操作后于几分钟内迅速释放资源,接着下一分钟模拟突然300个并发,以此类推。
在性能测试工具中的峰值测试实施图:
什么是浸泡测试或耐力测试 (Soak testing/Endurance testing)
浸泡测试是负载测试的另一种变体,它侧重于延长测试时间。从浸泡测试的名字来理解,就像是把系统浸泡在一定压力之下并保持很长时间,以此来了解系统如何处理持续的负载,它用于检验系统在长时间使用期间的性能,所以也叫耐力测试。
浸泡测试可以发现仅在长时间使用后才显示的性能缺陷,这些问题包括响应时间下降、内存或其他资源泄漏、数据饱和和存储耗尽等。
实施浸泡测试时,它的压力或者负载量应与负载测试一致,即使用日常工作中的常规负载或者比常规负载稍高一些即可,但是持续时间要比负载测试长的多,一些典型的值为4、8、12、24 和 48 到 72 小时。
例子:接负载测试的例子,可以实施100的并发用户量,但是要保持持续测试8小时。
在性能测试工具中的浸泡测试实施图:
下面来一个总体的比较图:
性能测试的类型,大家都懂了吗?后期会继续科普性能测试的一些基础知识,欢迎大家关注转发^_^
阅读更多精彩文章,请大家关注我的测试公众号:火烈鸟测试
版权归原作者 YOYO测试 所有, 如有侵权,请联系我们删除。