系统测试的方法——负载测试压力测试和性能测试的区别

Posted cml6166

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统测试的方法——负载测试压力测试和性能测试的区别相关的知识,希望对你有一定的参考价值。

       负载测试(Load testing)、压力测试测试(Stress Test,应称为强度测试)和性能测试,这三个概念常常引起混淆,难以区分,从而造成不正确的理解和错误的使用。

一、定义

1.性能测试(Performance Test)

      性能测试就是对软件的运行性能指标进行测试,判断系统集成之后在实际的使用环境下能否稳定、可靠地运行。 

2.强度测试

       强度测试也称压力测试(Stress Test)、负载测试(Load Test)。强度测试是要破坏程序,检测正常情况下系统的负载能力,也就是检查系统能力的最高实际限度。强度测试模拟实际情况下软/硬件环境和用户使用过程的系统负荷,长时间或超负荷地运行测试软件来测试系统,以检验系统能力的最高限度,从而了解系统的可靠性、稳定性等。例如:将输入的数据值提高一个或几个数量级来测试输入功能的响应等。

二、特点

1.性能测试

       该方法通过模拟生产运行的业务压力量和使用场景组合测试性能是否能够满足需要。具备三个特点:

①这种方法的目的是验证系统是否具有系统宣称具有的能力。

②这种方法需要事先了解被测试系统典型场景、并确定性能目标。

③这种方法要求在已确定的环境下运行

2.负载测试

       用来测定系统饱和状态、确定阀值。其特点有:

①这种方法的目的是找到系统处理能力的极限;通过“检测、加压、阀值”手段找到,如:“响应时间不超过10秒”,“服务器平均CPU利用率低于65%”等指标。

②这种性能测试方法需要在给定的测试环境下进行,通常也需要考虑被测系统的业务压力量和典型场景,另外HP Mercury LoadRuner在使用该方法进行“加压”的时候必须选择典型场景。

③这种性能测试方法一般用来了解系统的性能容量,或者是配合性能调优的时候来使用。

3.压力测试

       该方法测试目标系统在一定饱和状态下,例如CPU、内存等在饱和状态下、系统能够处理的session的能力,以及系统是否会出现错误。该方法需要在系统cache调优与pool优化方面着手。该方法具备以下特点:

①该方法的目的是检查系统处于压力情况下的,应用的表现。如增加VU数量、节点数量、并发用户数量等使应用系统的资源使用保持一定的水平,这种方法的主要目的是检验此时的应用表现,重点在于有无错误信息产生,系统对应用的响应时间等。

②该方法通过模拟负载在实现压力。这种模拟需要考虑的层面很多、首先、模拟必须是有效的,我的经验是需要结合业务系统和软件架构来定制模拟指标、我 测试过一些国内生产的压力测试工具、他们使用通用的指标来考量、造成很多信息反馈有很大的水分。需要考虑的层面如:Oracle I/O、JVM GC、Conn Pool等。

③该方法还可以测试系统的稳定性。

三、区别

1.性能测试:为了获得系统在某种特定的条件下(包括特定的负载条件下)的性能指标数据

2.强度测试:为了发现软件系统中所存在的问题,包括性能瓶颈、内存泄漏等

四、案例

       可能大家对性能测试、负载测试和强度测试比较混淆。没错,这三个概念是比较容易使人糊涂。负载测试和强度测试,都属于性能测试的子集。下面举个跑步的例子进行解释。   

性能测试:表示在一个给定的基准下,能执行的最好情况。例如,在没有负重的情况下,你跑100米需要花多少时间(这边,没有负重是基准)?

负载测试:也是性能测试,但是他是在不同的负载下的。对于刚才那个例子,如果扩展为:在50公斤、100公斤……等情况下,你跑100米需要花多少时间? 

强度测试:是在强度情况下的性能测试。对于刚才那个例子,如果改为:在一阵强风的情况下,你在负重或没有负重的情况下,跑100米需要花多少时间?

所以,可以看出性能测试是动力,负载测试载重,压力测试强度

 

性能测试,负载测试,压力测试一些区别和应用


性能测试(Performance Test) : 就是为了收集系统的性能指标


负载测试(Load Test) : 就是在一定的负载情况下,根据收集的系统性能指标,来预测和判断系统的瓶颈。


压力测试(Stress Test) : 就是在高负载的情况下,把系统搞坏,收集系统中的隐藏问题


容量测试(Volume Test):确定系统可处理同时在线的最大用户数 




负载测试,可以用于预测系统可能出现的问题,从而优化系统,提升系统的稳定性


压力测试,1. 在选定的压力值下,长时间持续运行。通过这类压力测试,可以考察各项性能指标是否在指定范围内。

       2. 通过破坏性不断加压的手段,往往能快速造成系统的崩溃或让问题明显的暴露出来


容量测试,通常和数据库有关,容量和负载的区别在于:容量关注的是大容量,而不需要表现实际的使用。 




其中,容量测试、负载测试、压力测试的英文解释为: 


Load Testing = Large amount of users 


Stress Testing = Too many users, too much data, too little time and too little room 


Volume Testing = Large amounts of data 


本文出自 “LoNice” 博客,请务必保留此出处http://wox666.blog.51cto.com/5141734/1925047

以上是关于系统测试的方法——负载测试压力测试和性能测试的区别的主要内容,如果未能解决你的问题,请参考以下文章

压力测试、负载测试、并发测试的区别是啥?

性能测试,负载测试,压力测试一些区别和应用

负载测试压力测试和性能测试的区别

压力测试和负载测试的区别

压力测试、负载测试和并发测试有啥区别?

压力/负载/性能测试之间的区别