性能测试、负载测试以及压力测试

根据产品的时间特性和资源特性,效率测试能够包括不一样的测试类型,例如:性能测试、负载测试和压力测试。本文则主要介绍这三种测试,但愿对你有帮助,一块儿来看。html

下面咱们主要介绍性能测试负载测试压力测试数据库

效率做为ISO 9126内部和外部质量的重要质量属性之一,其含义是在规定条件下,相对于所用的资源的数量,软件产品可提供适当性能的能力。资源可能包括其余软件产品或系统的软件和硬件配置,以及其余相关的资源(例如:打印纸、磁盘等)。服务器

效率测试主要关注产品的时间和资源相关的特性。时间相关的特性是指在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间以及吞吐量的能力,例如:用户打开某个网页须要等待的时间;资源相关的特性是指,在规定条件下,软件产品执行其功能时,使用合适数量和类别的资源的能力,例如:用户在进行相关操做时,系统的内存和CPU的变化状况。网络

根据产品的时间特性和资源特性,效率测试能够包括不一样的测试类型,例如:性能测试(Performance Test)、负载测试(Load Test)和压力测试(Stress Test)。这三种效率测试类型,不只在具体定义上面有不一样的侧重点,同时相互之间又是密切关联的。并发

1)性能测试性能

性能测试主要评价系统或组件的性能是否和具体的性能需求一致,例如:对访问速度的性能需求或对内存使用状况的需求。特定性能测试的关注点在于组件或系统在规定的时间内和特定的条件下响应用户或系统输入的能力。测试

不一样的性能的度量方法取决于不一样的被测对象。对于一个单独软件组件,其性能能够根据CPU主频来断定。而带客户端的系统,其性能则要根据系统处理特定用户请求的响应时间来断定。对于那些由多种组件(如客户端、服务器、数据库)构成的系统,则要进行各组件之间的性能测试。网站

产品的性能对用户是否会持续使用该产品影响很大。表1所示是一个用户对访问一个独立页面时等待不一样时间的态度分布。能够看到,当页面加载时间在10秒的时候,有84%的用户愿意等待;可是当页面加载时间达到30秒的时候,只有5%的用户愿意等待。spa

表1 用户愿意等待时间分布设计

用户愿意等待时间分布 

表1中的数据考虑了网络的延迟。而若是在测试环境中,整个网络是被测试系统所独占的时候,对系统性能的要求要高的多。对于愿意等待的时间,每一个用户的承受范围是不一样,并且用户对不一样的应用程序愿意接受的等待时间也是不同的。下面是一组关于响应时间的性能需求描述:

  • 对于多媒体交互系统,在90%的时间内系统响应时间应该不超过0.1秒;
  • 对于每一个用户同时只有一项任务的在线系统,在90%的时间内系统响应时间应该不超过0.5秒;
  • 对于每一个用户同时有多任务的在线系统,在90%的时间内系统响应时间应该不超过1秒。

性能测试关注的是系统性能是否和具体的性能需求相一致,而当系统性能超过性能需求的时候,系统的表现并非测试人员关心的重点。

例如:性能需求中要求系统应该支持最大同时在线用户为5000个,那么在性能测试过程当中重点测试系统是否能支持5000个用户同时在线;当有5000个用户同时在线后,性能测试须要关注整个系统的运行是否符合要求;而对于在线用户超过5000人的时候,系统的表现行为并非性能测试须要关注的。

2)负载测试

负载测试是一种经过增长负载来评估组件或系统的性能的测试方法。例如:经过增长并发用户数和(或)事务数量来测量组件或系统可以承受的负载。负载测试和性能测试的主要区别在于负载测试时,系统负载是逐渐增长的,而不是一步到位,负载测试须要观察系统在各类不一样的负载状况下是否都可以正常工做。

下图是某网站随着用户数量的增长,对应的响应时间也在增长的趋势图。具体趋势如图1所示。

用户数量和响应时间关系图

图1 某网站负载测试中用户数量和响应时间关系图

经过观察图1,能够发现随着用户数目的增长,系统响应时间也跟着增长。当在线用户数到700之后,系统响应时间增速明显加快。固然响应时间只是须要观察的数据之一,随着测试负载的增长还须要观察系统资源等占有状况。

3)压力测试

压力测试是评估系统处于或超过预期负载时系统的运行状况。压力测试的关注点在于系统在峰值负载或超出最大载荷状况下的处理能力。在压力级别逐渐增长时,系统性能应该按照预期缓慢降低,可是不该该崩溃。压力测试还能够发现系统崩溃的临界点,从而发现系统中的薄弱环节。

例如:系统最大支持的同时在线用户数是1000个,压力测试须要测试在1000个用户甚至2000个用户同时在线时系统的表现。虽然测试时负载已经超过了系统的设计能力,可是在这种状况下被测试系统也不该该发生崩溃。压力测试也能够针对系统资源进行测试,例如:在系统内存耗尽状况下,测试系统的运行状况,这种状况下被测试系统也不该该崩溃。

前面分别介绍了性能测试、负载测试和压力测试三种效率测试类型。目前在软件测试领域,对这三种测试类型的定义并不统一。在实际的测试工做中,性能测试这个词被普遍的使用。在不少场合,性能测试是上述三种测试类型的通称;在有的书籍或者参考资料中,性能测试的范围甚至更加普遍。

 

补充一个跑步的例子进行解释: 

  • 性能测试,表示在一个给定的基准下,能执行的最好状况。
    • 例如,在没有负重的状况下,你跑100米须要花多少时间(没有负重是基准)? 
  • 负载测试,也是性能测试,可是它是在不一样的负载下的。
    • 若是扩展为:在50公斤、100公斤……等状况下,你跑100米须要花多少时间? 
  • 压力测试,是在压力状况下的性能测试。
    • 在一阵强风的状况下,你在负重或没有负重的状况下,跑100米须要花多少时间?

                                                                                        >( 来自性能测试、负载测试以及压力测试的区别 )