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


性能測試是一個很廣泛的概念,通常情況下有如下分類:

性能測試分類

  • 負載測試(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個小時的時間來進行持久測試。對於現在的許多網絡類應用程序,通常情況下會持續運行好多天,那么進行持久測試時可以選擇更長的時間段。

總結

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

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

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

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

參考文章:

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


免責聲明!

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



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