5.1.7 压力测试(Stress Testing)
相对于前面性能测试方法的普通,压力测试(Stress Testing)方法可以说走了一个极端。它测试Web应用在事先规定的某种饱和状态下,比如CPU处于75%利用率的情况下,系统是否还具备处理业务的能力,或者系统会发生什么样的状况(出现错误?系统宕机?等)。
一句话,压力测试是考验一个系统的抗压能力的:在当前比较大的压力下,它能否承受得住。压力测试的目的是为了测试Web应用的稳定性。
【压力测试与体操比赛】
在体育比赛场上我们可以看到生活中的压力测试,例如体操比赛中的规定动作环节。场上选手在比赛时,其动作组合必须包含组委会所设定的所有规定动作,如图5-3所示的经典规定动作--托马斯全旋。通过在这样的条件下比赛,裁判来考察运动员的完成质量,由于动作难度系数基本一致,重点将是完成质量的稳定性。通过这个类比,压力测试就很好理解了。
图5-3 类似压力测试的体操规定动作比赛(图中动作为托马斯全旋)
压力测试方法有如下的两个特点:
(1)压力测试方法的目的是测试系统(本书中为Web应用)的稳定性。人们对很多软件系统都有这样一个经验:当系统处于较大压力的时候,如果还能够维持正常工作,那么,就能说明它在压力不大的一般条件下,具有长时间正常工作的能力。从这里可以看出,压力测试方法有一点“一叶知秋”、“以小见大”的含义在其中。
(2)压力测试方法的具体操作过程是通过对系统施加负荷(模拟用户对Web应用的访问等),使系统的资源占用保持在一个事先约定的水平(比如前文所提到的CPU占用率75%),来检验此时系统的表现。测试的重点在于系统对于用户的响应时间变化、系统是否出现错误甚至崩溃等。
5.1.8 负载测试(Stress Testing)简介
在实际工作中,负载测试方法和压力测试方法往往被放在一起谈论,因此很容易混淆,其实它们的区别是很明显的。
【负载测试方法】
负载测试(Load Testing)方法通过在被测试系统上不断增加负荷,直到事先选定的性能指标(比如响应时间),变为不可接受或系统的某类资源使用已经达到饱和状态。负载测试方法实际就是一个不断加压,直到找到系统不可用临界点的过程,形象地说,那一点正是“强弩之末”。