性能測試、負載測試以及壓力測試

根據產品的時間特性和資源特性,效率測試能夠包括不一樣的測試類型,例如:性能測試、負載測試和壓力測試。本文則主要介紹這三種測試,但願對你有幫助,一塊兒來看。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米須要花多少時間?

                                                                                        >( 來自性能測試、負載測試以及壓力測試的區別 )