压力测试
对系统不断施加压力的测试,是通过确定一个系统的瓶颈或不能接收用户请求的性能点,来获得系统能提供的最大服务级别的测试。例如测试一个Web站点在大量的负荷下,系统的事务响应时间何时会变得不可接受或事务不能正常执行。
压力测试的目的是发现在什么条件下系统的性能变得不可接受,并通过对应用程序施加越来越大的负载,直到发现应用程序性能下降的拐点。压力测试和负载测试有些类似,但是通常把负载测试描述成一种特定类型的压力测试——例如增加用户数量或延长压力时间以对应用程序进行压力测试。
负载测试
对系统不断地增加压力或增加一定压力下的持续时间,直到系统的一些性能指标达到极限,例如响应时间超过预定指标或某种资源已经达到饱和状态。这种测试可以找到系统的处理极限,为系统调优提供依据。
压力测试侧重压力大小,而负载测试往往强调压力持续的时间。
似乎有点道理,有点豁然开朗的感觉。可是我还不死心,我还想听听风清扬老前辈是怎么说的。一问之下,他给出的答案和师父果然不一样,他是这样说的:
1.负载测试
在这里,负载测试指的是最常见的验证一般性能需求而进行的性能测试,在上面我们提到了用户最常见的性能需求就是“既要马儿跑,又要马儿少吃草”。因此负载测试主要是考察软件系统在既定负载下的性能表现。我们对负载测试可以有如下理解:
(1)负载测试是站在用户的角度去观察在一定条件下软件系统的性能表现。
(2)负载测试的预期结果是用户的性能需求得到满足。此指标一般体现为响应时间、交易容量、并发容量、资源使用率等。
2.压力测试
压力测试是为了考察系统在极端条件下的表现,极端条件可以是超负荷的交易量和并发用户数。注意,这个极端条件并不一定是用户的性能需求,可能要远远高于用户的性能需求。可以这样理解,压力测试和负载测试不同的是,压力测试的预期结果就是系统出现问题,而我们要考察的是系统处理问题的方式。比如说,我们期待一个系统在面临压力的情况下能够保持稳定,处理速度可以变慢,但不能系统崩溃。因此,压力测试是能让我们识别系统的弱点和在极限负载下程序将如何运行。
这下我又糊涂了。师父教我做性能测试这么多年了,而且也是公认的性能测试高手,都出过好几本关于性能测试的书籍了。我知道他告诉我的那些,实际上就是从他写的其中一本书中摘抄过来的。可是我也知道,风清扬老前辈更是高手中的高手,他说的应该也不会错才是。而他们两个人的说法又很明显不一致。我到底应该听谁的呢?