负载测试

负载测试(Stress Testing)简介

在实际工作中,负载测试方法和压力测试方法往往被放在一起谈论,因此很容易混淆,其实它们的区别是很明显的。

【负载测试方法】

负载测试(Load Testing)方法通过在被测试系统上不断增加负荷,直到事先选定的性能指标(比如响应时间),变为不可接受或系统的某类资源使用已经达到饱和状态。负载测试方法实际就是一个不断加压,直到找到系统不可用临界点的过程,形象地说,那一点正是"强弩之末"。

【负载测试方法与举重比赛】

在5.1.7节我们把压力测试和体操比赛的规定动作相类比,在这里我们将负载测试方法类比为举重比赛,如图5-4所示。在比赛中,选手不断地增加重量,挑战自己的极限,直到杠铃加到某一个重量时,3次试举都失败。这一重量就是举重比赛的最终结果。

 
图5-4  举重比赛与负载测试有相同之处

通过负载测试方法,我们可以发现系统的处理极限点在哪里。

负载测试的特点

负载测试方法有如下几个特点。

(1)它的主要目的在于找到系统处理能力的极限,为系统进一步优化做参考。另外,这种测试也可以用来比较不同的优化方法对于性能极限的提升,因此也可以称之为可扩展性测试(Scalability Testing)。这个名词可以用图5-5清晰地表述出来。

在图5-5中,2条曲线分别代表两种优化方法经历负载测试的结果。A方法的性能极限在A点,B方法的性能极限在B点。根据负载测试的定义,比A、B两点值小的部分都是系统的安全运行区间。由于B的数值要大于A,说明采用B方法优化,系统的可扩展性提高了。

 
图5-5  负载测试用于优化方法的比较:B好于A

(2)负载测试方法的操作是一个不断加压的过程。负载测试方法是一个"性能指标记录--增加负荷"的操作循环,直到预定被关注的性能指标不再令人满意。这个极限点在测试结果中的表示类似这样的形式:"在给定条件下当前Web应用将最多允许10000个并发用户访问"、"在给定条件下当前Web应用最多能够在1分钟内处理1000次用户对数据库的修改"等。常见的在负载测试方法中被关注的性能指标包括:Web应用的响应时间、Web服务器平均CPU利用率等,它们的具体数值需要根据实际情况来调整。

(3)负载测试方法要考虑被测Web应用的实际业务负荷量与正确的使用场景,以保证测试结果具有参考价值。

【实战演练:教训】

在这方面,笔者的同事曾经有一个教训。有一个网站,可以通过Web直接访问,也可以通过RSS进行订阅。在网站发布之前,网站技术部门的所有工程师都认为绝大部分用户都是通过Web来访问的,因此,在时间紧迫的情况下,重点测试了Web访问的性能,对于RSS相关代码测试的就很少。结果在网站上线之后,他们惊奇地发现,大部分用户访问都是通过RSS来完成的,因为负载测试做的很简略,结果每过多久服务器就被拖的几乎无法访问了。可见,对于负载测试,乃至整个性能测试而言,模拟真实的应用场景是多么的关键。

原文: http://book.51cto.com/art/201008/218491.htm

猜你喜欢

转载自lylhelin.iteye.com/blog/800906