最近,在总结系统测试类型的过程中,对“负载测试、压力测试、容量测试、性能测试”这几个测试类型有些分不清界限,上网查了一些资料,汇总如下:
1.负载测试(Load testing):
负载测试是模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,已发现系统可能存在的性能瓶颈、内存泄露、不能实时同步等问题。
负载测试将使测试对象承担不同的工作量,已测试和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。
2.压力测试(Stress Testing):
压力测试可以被看做是负载测试的一种,即高负载下的负载测试,或者说压力测试采用负载测试技术。
测试要点: 要想做到压力测试,必须将极限情况模拟出来,然后再在该极限情况下进行测试。看系统性能如何。
实例:查看手机短信列表,短信越多时打开列表所花费的时间越长。考虑在手机短信已满的情况下打开短息列表,看在这种极限情况下花费的时间是多少,这就是压力测试。
3.性能测试(Performance Testing):
性能测试时通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两种可以结合进行。
4.容量测试(Volume Testing)
通过性能测试,如果找到了系统的极限或苛刻的环境中系统的性能表现,在一定的程度上,我们完成了容量测试。
容量测试的目的是使系统承受超额的数据容量来发现它是否能够处理的数据容量。而压力测试主要是使系统承受速度方面的差额负载,例如一个短时间之内的吞吐量。容量测试是面向数据,并且它的目的是显示系统可以处理目标内确定的数据容量。
实例:检查手机最多能保存多少条短信,最多能保存多少个联系人信息,这就是容量测试。
有一个农夫决定买一匹骡子,他认为这个骡子至少得能扛动3袋大米,他才会决定买这匹骡子(这相当于用户提出的性能需求)。结果他来到农贸集市上,试了好几头骡子,都不合适,最后终于有一头骡子能够比较轻松的扛动这3袋大米,而且还潇洒的走了几步(这相当于于性能测试通过)。然后农夫高高兴兴地牵着这头骡子回家,而且给它扛了4袋大米(相当于让系统超负荷运行),因为他跑了太远才买到了这匹不可多得的骡子,他想看看它到底能有多强,所以农夫决定,让这匹骡子就扛着这四袋大米走回家试试看,这匹骡子真的很厉害,刚开始的时候还一颠一跑的,可是后来实在路太远了,骡子越驮越费劲(在超负荷情况下检验系统能正常运行多久,这相当于压力测试),快到家的时候,已经是走两步歇一步了。终于到家了,农夫非常自豪地叫出自己的老婆,说:“老婆子,快来看看,看我买到了一头多么厉害的骡子啊!”,老婆出来后,农夫把他和骡子在一路上的经历都告诉了老太婆,谁知这个老太婆却说:“你真蠢,这么大老远的路,也不让骡子驮着你,竟然和这头傻骡子一样走回来!”,农夫听了,觉得非常后悔,说:“那好吧,既然在路上它没有驮我,那就让它现在补上,也算是对我的补偿。”,骡子还没有反应过来,就看那老农夫一个箭步,跳到了骡子背上(这相当于容量测试的极限点),可怜的骡子,无论如何也不会想到,这狠心的农夫竟然在它走了这么久之后,不但没有帮它卸掉身上的重担,更没有给它喝口水,竟然变本加厉的跳到了它那本已弯曲的背上。可怜的骡子啊,就这么一命呜乎了!就看见那个骡子、农夫和4袋麦子一起轰然倒地。(相当于已经到了系统的最大拐点,造成了系统瘫痪,无法使用,容量测试结束)。
通过这个小例子我们可以看出:压力测试和容量测试都是高负载下的一种负载测试,他们又都属于性能测试的一种,
只是从不同角度来测试的一种性能测试而已,他们可以结合起来使用来测试系统的性能。其区别在于他们不同的测试目的,压力测试主要是使系统承受速度方面的超额负载,例如一个短时间内的吞吐量。容量测试时面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。