性能測試-概念篇-性能測試分類

性能測試是一個很普遍的概念,一般狀況下有以下分類:html

性能測試分類

  • 負載測試(Load testing)
    負載測試是不斷增長系統的負載,直到負載達到閾值——評估系統在預期工做負載下的性能的測試。
    這裏增長負載的意思是在測試中增長併發用戶數量、用戶交互等,一般是在可控的環境下進行。典型的負載測試包括在負載測試過程當中肯定響應時間吞吐量誤碼率等。
    該方法能夠找到系統的性能極限,能夠爲性能調優提供相關數據。該類方法一般要基於或模擬系統真實運行環境,且選取的業務場景也要儘量地與實際狀況相符。
    舉例:
    對於具備預計1000併發用戶負載的新開發的應用程序來講,則須要建立負載測試的腳本,配置1000個虛擬用戶,而後持續運行1小時。負載測試完成後,再分析測試結果,肯定應用程序將如何在預期的峯值負載下運行。數據庫

  • 壓力測試(Stress Testing)
    壓力測試是指當硬件資源如cpu、內存、磁盤空間等不充足時對軟件穩定性的檢查。
    壓力測試屬於負面測試(Negative testing),使大量併發用戶/進程加載軟件以使系統硬件資源不能應付。這個測試也被稱爲是疲勞測試(Fatigue testing),經過超出其能力的測試來捕獲應用程序的穩定性。
    壓力測試的主要思想是肯定系統故障,關注系統如何優雅地恢復正常,這種質量被稱爲是可恢復性
    負面測試(Negative testing)是相對於正面測試(Positive testing)而言的。正面測試就是測試系統是否完成了它應該完成的功能;而負面測試就是測試系統是否不執行它不該該完成的操做。網絡

  • 尖峯測試(Spike testing)
    尖峯測試(Spike testing)其實能夠算做是壓力測試(Stress Testing)的子集。
    尖峯測試是在目標系統經受短期內反覆增長工做負載,以致超出預期生產操做的負載量時,分析系統的行爲,驗證其性能特徵。它還包括檢查應用程序是否能夠從忽然增長的超預期負荷中恢復出來的測試。
    舉例:
    在電商應用程序中常常有「整點秒殺」的活動,因此在整點時間先後的兩三分鐘時間裏,會有巨大數量的用戶進入到該活動中秒殺商品。尖峯測試就是爲了分析這類場景。併發

  • 可擴展性測試(Scalability Testing)
    可擴展性測試(Scalability Testing)是一種非功能的測試,它測試軟件應用程序以肯定全部非功能能力的擴展能力,如用戶負載支持、事務數量、數據量等。性能

  • 容量測試(Volume testing)
    容量測試是一種非功能的測試,它經過嚮應用程序中添加大量的數據來實現。能夠經過向數據庫插入大量的數據或讓應用程序處理一個大型文件來進行測試應用程序。
    經過容量測試,能夠識別應用程序中具備大數據時的瓶頸,檢查應用程序的效率,進而獲得不一樣數據量級下應用程序的性能。
    舉例:
    在一個新開發的網絡遊戲應用程序中,在進行容量測試時,能夠經過向數據庫中插入數百萬行的數據,而後在這些數據的基礎上進行性能的測試。
    注意,這裏所說的數據必定是符合其功能場景的,不是毫無關係的數據。測試

  • 持久測試(Endurance testing)
    持久測試(Endurance testing),也被稱爲是浸泡測試(Soak Testing),它也是一種非功能的測試。
    持久測試是指在至關長的時間內使用預期的負載量對系統進行測試,以檢查系統的各類行爲,如內存泄露、系統錯誤、隨機行爲等。
    這裏的提到的至關長的時間是相對而言的,舉例來講,若是一個系統設計爲運行3個小時的時間,那可使用6個小時的時間來進行持久測試;若是設計爲5個小時的時間,不妨用10個小時的時間來進行持久測試。對於如今的許多網絡類應用程序,一般狀況下會持續運行好多天,那麼進行持久測試時能夠選擇更長的時間段。大數據

總結

其實不少時候並不須要把這些概念和分類搞得特別清楚,並且事實上也不多有人能搞得特別清楚。但這並非說理清楚這些分類就沒有意義。偏偏相反,理清性能測試的分類是爲了可以有重點、有針對性地覆蓋性能測試的方方面面。設計

好比容量測試,即使你不知道這個概念,也可能會根據實際的需求考慮到這種場景並進行測試。然而當你知道了這些具體的分類和側重點,在設計性能測試方案時便會有針對性地覆蓋這些方面。orm

在實際工做中,性能測試經常在口頭上表達爲壓力測試,進而簡稱爲壓測。雖然這種稱呼並不許確,但足以達到溝通的效果了。htm

並且實際工做中所作的性能測試方面的工做不少時候是上述分類的組合或衍生,以及根據實際工做的應用場景、產品的側重點、用戶的需求等綜合考量後逐漸演變造成的一些測試方法和規則。所以,上述的分類更可能是一種通用的、普世的分類,沒必要過多較真。

參考文章:

http://www.softwaretestingclass.com/what-is-performance-testing/
http://artoftesting.com/performanceTesting/types-of-performance-testing.html

更多內容

關於性能測試分類,如需更多瞭解,能夠閱讀下列文章:
https://msdn.microsoft.com/en-us/library/bb924357.aspx
http://www.cnblogs.com/fnng/archive/2012/06/09/2543274.html

相關文章
相關標籤/搜索