zoukankan      html  css  js  c++  java
  • 负载测试与压力测试的区别

    以下内容引自: http://blog.csdn.net/shangyichen/article/details/5438528

    什么叫压力测试(Stress Testing)

    原创 2010年03月31日 19:15:00

    什么叫压力测试(Stress Testing)

    在测试两个字前面加上一个限定词,就变成了很多测试。例如:压力测试、负载测试、性能测试、功能测试等等。但究竟什么是压力测试,初学者往往望文生义,都能说上一两句。是啊,谁还不懂“压力”是什么意思?谁还没经历过压力?然而,压力测试的真正含义和目的,它和其它测试(特别是负载测试)的区别,不是所有的软件工程师都是掌握的。

    按照Ron Patton在其《Software Testing》一书中的定义,压力测试是一种破坏性测试,它故意让软件在比较少的资源环境下运行,如低内存、小硬盘、慢CPU上运行,考验程序直至程序无法运行,从而发现软件缺陷。用一句形象的话来比喻,就是让软件在饥饿状态上运行。

    下面有一个例子。

    一般地,软件应生成运行日志,当系统出现故障时能根据日志快速诊断出问题所在,或用于操作的责任追踪和审计,这些日志文件可能记录在本地磁盘上,工程师如想到要这一步,即系统运行情况要记录在日志里,那么他就比完成学校老师作业进了一步。日志文件随着时间的推移不断膨胀,总有一天当前磁盘不够用了,无法记录新的日志,软件设计者要想办法解决这个问题,解决这个问题有两个办法:一是提示用户系统无法记录新的日志,让用户判断有不要中断系统运行;二是按照字母顺序,将日志记录到下一个磁盘,如D盘或E盘或F盘,如此等等。软件工程师如能想到这一步,那么他又进了一步。如果将后续的D、E、F等所有的盘都用完了,再提醒用户,或直接终止系统运行。

    上述逻辑可用下面的伪程序表示:

    1       If disk C has enough available space then

    2                 Write Log to C;

    3       Else

    4                 If D disk exists then

    5                          If D has enough available space then

    6                                   Write log to D;

    7                          Else

    8                                   If E disk exist then

    9                                             If E has enough available space then

    10                                                    Write Log to E;

    11                                           Else

    12                                                    Prompt user: not available disk space for log;

    13                                           End if

    14                                 Else

    15                                           Prompt user: not available disk space for log;

    16                                 End if

    17                        End if

    18               End if

    19     End if

    在上面的例子中,如果对其进行压力测试,就是选用一台很小配置的机器,各磁盘的剩余空间都很小。在这种情况下运行系统,很快机器上的所有磁盘空间都能被占满,最后程序被迫终止。

    这就是压力测试的一个典型例子,将程序施加“压力”,将其逼到没法运行的地步。如果你选用的机器C盘足够大,在你整个测试活动过程中,C盘不会本占满,则执行到的语句只有1、2和19三行,如果你选用的机器,其C、D、E三个磁盘都很小,则日志很快就会占满这几个磁盘,则1-19的所有语句都能本执行。可以看出,有无压力测试,对程序语句和逻辑分支的覆盖是不一样的。

    很多人误将负载测试和压力测试混为一谈,认为给程序的负载大,程序经受的压力就大。其实不然,负载测试考验的是系统的吞吐量,假如一个网站号称能经受100万个用户同时访问,那么就想方设法模拟出100万个用户对网站发起连接,观察服务器能否正常作出反应。一般地,负载测试是给被测的系统“喂饱”,看看它能否吞下去,系统为了能吞下大的输入,常常在内部机制上下工夫,或者扩大服务器的配置。

    负载测试是尽量增加对系统的访问,而压力测试是尽量使系统在资源稀缺的环境下运行。二者区别很大。但不排斥两个技术同时使用。

  • 相关阅读:
    《Erlang程序设计》学习笔记-第2章 并发编程
    《Erlang程序设计》学习笔记-第1章 编译并运行程序
    76个值得你注意的erlang编程习惯
    教你透彻了解红黑树
    B树、B-树、B+树、B*树 红黑树
    TCP协议的一些认识及实践
    epoll 和select
    Log4erl
    排序_快速排序
    划分_快速排序的前提技术
  • 原文地址:https://www.cnblogs.com/cheese320/p/8316772.html
Copyright © 2011-2022 走看看