性能测试的分类
性能测试中最常见的要属于负载测试、压力测试了。此外,并发测试在经常被提及到。
根据大多数人总结的通用法则,可将性能测试主要分为以下几种方法:
1、验收性能测试
2、负载测试
3、压力测试
4、配置测试
5、并发测试
6、可靠性测试
7、失败回复测试
针对以上几种类型,分别阐述以下对应的认知:
一、验收性能测试
定义:通过模拟产生运行时的业务压力量和不同的使用场景进行组合。进而测试系统的性能能不能满足生产的性能要求。
目的:验证系统是否具有系统最初定下的性能能力。
过程:确定用户场景、确定需要关注的性能指标、测试执行、测试分析结果。
开展时机:确定了测试场景、系统运行环境,包括不限于硬件设备、软件环境、网络条件、基础数据等时开展。
前提条件:了解了被测系统的典型场景(可以理解为参与测试的业务场景)、确定了性能测试目标(多描述为:系统在XX个并发的条件下进行A业务操作(单个或者多个),响应时间不超过X秒)。
二、负载测试
定义:在被测系统上不断增加压力,知道性能指标超过预定指标或某种资源使用已经达到饱和状态这种请款下的测试。
用途:找到系统的处理极限时的瓶颈,为系统调优提供数据支撑,了解系统的性能容量,或者比较调优前后的性能差异。
过程:检测--加压--性能指标超过预期
结果描述:如在给定条件下最多允许120个并发用户访问;在改定条件下最多能够在一个小时内处理2100比业务。
目标描述:在给定条件下响应时间不超过10秒,CPU平均使用率不超过70%等
前提条件:已知且确定的系统环境,测试典型场景,预期目标。
注意事项:因为预期目标是建立在一定系统环境基础上提出的,所以在测试开始之前,一定要确定被测系统的系统环境,目标测试场景,且是对目标测试场景进行加压。这样得出的结果才与实际预期目标具有可比性。
三、压力测试
定义:当系统某一项或者多项指标在饱和状态下进行的性能测试方法
目的:检查系统在某种压力情况下时应用的性能表现,重点在于有无出错信息产生,系统的综合处理能力。
用途:多用于测试系统的稳定性。
现实方式:通过不断增加访问压力(如增加并发的用户数量等)使系统的资源保持在一个较高的使用水平。
目标描述:如CPU使用率达75%以上;内存使用率达70%以上;JVM的客用内存;数据库的连接数等
四、配置测试
定义:通过对被测系统软件硬件环境的调整,了解各种不同环境对系统的性能的影响。
目的:通过测试获得不同因素对系统性能的影响情况,然后对比获得最佳的性能表现,进而采取对应的最佳配置方案。
用途:多用于性能调优和规划能力,如何调整才能获取最佳的扩展性。
前提条件:需要了解系统环境、操作步骤、压力条件下进行。
实行过程:在每次执行测试时更换、扩充硬件设备,调整网络环境,调整应用服务器、中间件和数据库服务器的参数配置等,比较每次的测试结果,从而确定各个因素对系统性能的影响,最后找出影响系统的最大因素,确定最佳的配置方案。
注意:此处的配置测试与功能中所说的配置测试不一样。区别在于:功能中的配置测试是为了验证软件在不同的软硬件环境中能否正常运行。
五、并发测试
定义:通过模拟多用户实现并发访问的,测试多用户访问同一应用、同一模块或者数据记录时是否存在死锁或者其他性能问题。
目的:发现系统中隐藏的因并发而会触发的问题,主要有以下但不限于:
问题类别 | 问题描述 |
内存问题 | 是否有内存泄漏 |
是否会产生太多的临时对象 | |
是否有太多的超过设计生命周期的的对象 | |
数据库问题 | 是否有数据库死锁 |
数据不一致问题 | |
是否出现长事务 | |
线程/进程问题 | 是否出现慢SQL长时间阻死 |
是否出现线程/进程同步失败 | |
其他问题 | 是否出现资源竞争导致的死锁 |
是否没正常处理的异常导致系统锁死 |
实现条件:需要相关的测试工具的支持和配合,不仅仅只针对一个系统而言,同时页可以对某种架构或者设计的合理性进行。
开展时机:可以在开发的各个阶段进行。
六、可靠性测试
定义:通过给系统加载一定的业务压力,达到某一个预定指标后,让其应用持续运行一段时间,看在这种情况下系统能否稳定运行。多用平均无故障时间或失效率来衡量。
目的:验证系统在某种特定的处境下是否可以长期稳定的运行。
时长:正常情况下,对于大型应用而言需要在峰值压力下持续2~3天。
衡量条件:让系统处于较大压力下进行长时间的测试,如果系统不出现问题或不出现不好的征兆,基本上可以说明系统在当前条件下具备长时间稳定运行的要求。
七、失效恢复测试
定义:当系统某一部分出现故障时,是否还能支持所有用户的业务执行,已经在某种情况下预期的恢复技术是否可以发挥其作用 ,对是对有冗余备份或负载均衡的系统设计的。
目的:1、验证系统局部故障时,系统是否还能继续使用。
2、得出在某种情况下系统还能支持多大的用户访问并发数,采取何种有效的保护措施等
限制条件:对数只对有明确要求的系统才会进行此类测试。对于没有给出明确的需要持续运行指标的系统基本上都不需要做此类的测试。
大概就这么多吧,说的不对的麻烦大神及时指出,期待跟着大神的脚步一起起飞。