关于性能测试有几个名词:性能测试、负载测试、压力测试、并发测试,很多人都是混合使用,或者有时压力测试,有时叫并发测试。这些名词除了非测试人员分不清楚之外,甚至很多专业测试人员也对这些名词会搞迷糊。下面就从来详细说说这些名词之间的区别和特点。

1、软件性能测试

性能测试方法是通过模拟生产运行的业务压力量和使用场景组合,来测试系统的性能是否满足软件的性能要求。通俗地说,这种方法就是要在特定的运行条件下验证软件系统的处理能力。

1)性能测试的特点:

(1)性能测试方法的主要目的是验证软件系统是否有系统具有预期的能力。

(2)性能测试方法要事先了解被测试系统的具体使用场景,并具有确定的性能目标。

(3)性能测试方法要求在已经确定的环境下运行。 也就是说,性能测试是对系统性能已经有一定了解的前提下,并对需求有明确的目标,且在已经确定的环境下进行的一种测试。

2、性能负载测试

通过在被测软件系统上不断实施加压,直到性能指标达到极限状态,例如“响应时间”超过预定指标或都某种资源已经达到饱和状态。

1)负载测试的特点:

(1)负载测试方法的主要目的是找到系统处理能力的极限何在。

(2)负载测试方法需要在已知的测试环境下进行,通常也需要考虑被测试系统的业务压力量和典型场景、使得测试结果具有业务 上的实际意义。

(3)负载测试方法一般用来了解系统的性能容量,或是配合性能调优来使用。 也就是说,负载测试是对一个系统持续不断的加压,观察软件在什么时候已经超出“预期要求”或系统崩溃。

3、性能压力测试(也叫强度测试)

性能压力测试是测试软件系统在一定饱和状态下,例如CPU、内存在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误现象。

1)压力测试的特点:

(1)压力测试方法的主要目的是检查系统处于压力性能下时,软件应用的具体表现。

(2)压力测试方法一般通过模拟负载测试等方法,使得系统的资源使用达到较高的水平。

(3)压力测试方法一般用于测试系统的稳定性。 也就是说,压力测试是让系统处在很大强度的压力之下,看系统是否稳定,注意观察哪个地方会出现问题。

4、性能并发测试

性能并发测试通过模拟用户并发访问,测试多用户并发访问同一个软件、同一个模块或者数据记录时是否存在死锁或其者性它的性能问题。

1)并发测试的特点:

(1)并发测试方法的主要目的是发现系统中可能隐藏并发访问时的问题。

(2)并发测试方法主要关注系统可能存在的并发问题,例如系统中的内存泄漏、线程锁和资源并用方面的问题。

(3)并发测试方法可以在开发的各个阶段使用,不过是需要相关的测试工具的配合和支持。 也就是说,并发测试关注点是多个用户同时(并发)对一个模块或操作行为进行加压的一种测试。

5、性能配置测试

性能配置测试是通过对被测系统的软/硬件环境的调整,了解各种不同方法对软件系统的性能影响的程度,从而找到系统各项资源的最优分配原则。

1)配置测试的特点:

(1)配置测试方法的主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优操作。

(2)配置测试方法一般在对系统性能状况有初步了解后才进行。

(3)配置测试方法一般用于性能调优和软件处理能力的规划。 也就是说,配置测试关注点是“微调”,通过对软硬件的不断调整,找出软件系统的最佳状态,使软件系统达到一个最稳定的状态。

6、性能可靠性测试

性能可靠性测试是在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。

1)可靠性测试的特点:

(1)可靠性测试方法的主要目的是验证软件系统是否支持长期稳定的运行。

(2)可靠性测试方法需要在压力下持续一段时间的运行。

(3)可靠性测试过程中需要关注系统的运行状况如何。 也就是说,这种测试的关注点是“稳定”,不需要给系统太大的压力,只要系统能够长期处于一个稳定的状态即可。 除了上面的几种分类性能测试,还有一种是失效性测试,就是系统局部发生问题时,其它模块是否可以正常的运行。这个在极少数情况下才会要求进行测试。使用到的情况比较少。

性能测试的分类已经介绍完了,但我们在做性能测试过程中真的能把它们区分的很清楚吗?你能严格区分出你这次的测试到底是并发测试还是压力测试呢?如下举例来说明下这个区分。

拿运动员来说,对于练过几年时间的体育运动员来说,如果参加很多体育项目,其实不论最后参加哪项运动,最终要考核他的就两方面:爆发力和持久耐力。而我们在做性能测试时主要关注的也是这两方面的性能。

1)爆发力: 拿一个举重选手来说,他的能力特点在重量上,因为你只要能举起成功三秒就算你成功了,关键是看你能举起一个多大的重量。

2)持久耐力: 拿一个马拉松运动员来说,你的百米速度跑得再快也没用,关键是在长达40公里远的路程中,第一个跑到终点的人才是赢家。 从上面的举例中回到性能测试话题上,爆发力就是系统能承受的最大压力,可能软件系统刚开始承受的压力很大,但过半个小时之后就挂掉了。

持久耐力就是这个软件系统在长时间处于压力下的稳定性,如软件系统很稳定,运行了几十年都不用重启服务器,那么最后就是看系统有没系统瓶颈(短板),并对其进行系统调优即可。

今天主要是普及下软件性能测试的分类和其特点的描述,希望能让还对软件性能测试还比较迷糊的同学们一个观点明确的帮助。