負載測試與壓力測試的區別


以下內容引自: 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萬個用戶對網站發起連接,觀察服務器能否正常作出反應。一般地,負載測試是給被測的系統“喂飽”,看看它能否吞下去,系統為了能吞下大的輸入,常常在內部機制上下工夫,或者擴大服務器的配置。

負載測試是盡量增加對系統的訪問,而壓力測試是盡量使系統在資源稀缺的環境下運行。二者區別很大。但不排斥兩個技術同時使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM