冰兰色的心 发表于 2007-8-18 15:02:58

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

压力测试和性能测试的定义:
      压力测试(Stress):对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。例如:测试一个 Web 站点在大量的负荷下,何时系统的响应会退化或失败。
      多用户情况可以考虑使用压力测试工具,建议将压力测试和性能测试结合起来进行。如果有负载平衡的话还要在服务器端打开监测工具,查看服务器CPU使用率,内存占用情况; 如果有必要可以模拟大量数据输入,对硬盘的影响等等信息;如果还有条件的话就必须进行性能优化(软硬件都可以)。
      性能测试(Performance):是指正常使用的时间内,系统完成一个任务需要的时间,即在可以接受范围内,多人同时使用的时候响应时间。性能测试可以发生在各个测试阶段中,即使是在单元层,一个单独模块的性能也可以使用白盒测试来进行评估。当然只有当整个系统的所有成分都集成到一起之后,才能检查一个系统的真正性能,因此性能测试重点关注的是系统的整体。
      若在测试过程中发现性能问题,修复起来是非常艰难的,因为这常常意味着程序的算法不好,结构不好,或者设计有问题。因此在产品开发的开始阶段,就要考虑软件的性能问题。
      此外,性能测试和通常所说的强度测试、压力/负载测试有密切关系。所以压力和强度测试应该与性能测试一同进行,而且通常需要硬件和软件测试设备。这就是说,通常有必要在一种苛刻的环境中衡量资源的使用(比如:处理器周期)。外部的测试设备可以监测测试执行,当出现情况(如中断)时记录下来。通过对系统的检测,测试者可以发现导致效率降低和系统故障的原因。
压力测试和性能测试的举例说明:
      针对一个网站进行测试,模拟10到50个用户就是在进行常规性能测试,用户增加到1000乃至上万就变成了压力/负载测试。如果同时对系统进行大量的数据查询操作,就包含了强度测试。
压力测试和性能测试的区别是在于不同的测试目的和前提:
      压力测试是为了发现系统能支持的最大负载,他的前提是要求系统性能处在可以接受的范围内(比如经常规定的页面3秒内响应)。概括就是:在性能可以接受的前提下,测试系统可以支持的最大负载。
      性能测试是为了检查系统的反映,运行速度等性能指标,他的前提是要求在一定负载下(如检查一个网站在100人同时在线的情况下的性能指标),每个用户是否都还可以正常的完成操作等。概括就是:在不同负载下(或负载一定)时,通过一些系统参数(如反应时间等)检查系统的运行情况。比如我们说某个网站的性能差,严格上应该说“在N人同时在线情况下,这个站点性能很差”。

总之,就像一个方程式:综合性能 = 压力数 * 性能指数   综合性能是固定的
   压力测试是为了得到性能指数最小时最大的压力数
   性能测试是为了得到压力数确定下的性能指数

red-hat 发表于 2007-8-19 08:55:20

query

看过楼主的帖子,觉得有些别扭,前边已经讨论过这个问题N次了,据我理解的,性能测试的范围最大,包括压力测试,负载测试和容量测试,不知道楼主是怎么理解的,也希望大家一起来讨论

wangze1123 发表于 2007-9-7 19:28:24

我觉得压力测试应该属于性能测试范畴吧

小孩 发表于 2007-9-7 19:41:04

来源于 海龙老师的定义
性能测试(Performance Testing):
在一定的负载情况下,系统的响应时间等特性是否满足特定的性能需求

负载测试(Load Testing):
在一定的软件、硬件及网络环境下,通过运行一种或多种业务在不同虚拟用户数量情况下,测试服务器的性能指标是否在用户的要求范围内,用于确定系统所能承载的最大用户数、最大有效用户数以及不同用户数下的系统响应时间及服务器的资源利用率。

压力/强度测试(Stress Testing):
在一定的软件、硬件及网络环境下,通过模拟大量的虚拟用户向服务器产生负载,使服务器的资源处于极限状态下长时间连续运行,以测试服务器在高负载情况下是否能够稳定工作。

配置测试(Configuration Testing):
在不同的软件、硬件以及网络环境配置下,通过运行一种或多种业务在一定的虚拟用户数量情况下,获得不同配置的性能指标,用于选择最佳的设备及参数配置。

容量测试(Volume Testing):
在一定的软件、硬件及网络环境下,向数据库中构造不同数量级别的数据记录,通过运行一种或多种业务在一定的虚拟用户数量情况下,获取不同数据级别的服务器性能指标,以确定数据库的最佳容量。

基准测试( Benchmark Testing):
在一定的软件、硬件及网络环境下,模拟一定数量虚拟用户运行一种或多种业务,将测试结果作为基线数据,在系统调优或者系统评测过程中,通过运行相同的业务场景并比较测试结果,确定调优是否达到效果或者为系统的选择提供决策数据。

并发测试( Concurrency Testing):
通过模拟多个用户并发访问同一个应用、同一个存储过程或数据记录以及其他并发操作,测试是否存在死锁、数据错误等故障。

Fin 发表于 2007-9-7 21:34:38

区别:
压力测试: 不强调施压,只检查施压后的状况.
容量测试:强调施压,施了多少压.
性能测试:施压后检验性能指标,是否达到需求规格要求,主要从资源利用和响应时间方面考虑.

zlbox 发表于 2007-9-8 14:31:56

回复 #4 小孩 的帖子

sdlkfj2 同学,我想你这里定义的性能测试,可以理解为”狭义的性能测试“,主要目的是在特定的运行条件下验证系统是否具有所宣称的能力,也就是针对特定性能需求的指标验证。而广义的性能测试,就是把你提到的所有那几项都包括在内,甚至还更多。
页: [1]
查看完整版本: 压力测试和性能测试的区别