一、驗收性能測試
通過模擬生產運行的業務壓力量和使用場景組合,測試系統的性能是否滿足生產性能要求,具有以下特點:
1、主要目的是驗證系統是否具有系統宣稱的能力,包括確定用戶場景、給出需要關注的性能指標、測試執行、測試分析幾個步驟;
2、事先了解被測試系統的典型業務場景,並具有確定的性能目標;
3、已確定運行環境(硬件設備、軟件設備、網絡條件、基礎數據等)。
二、負載測試(可置性測試)
在被測系統上不斷增加壓力,直到性能指標超過預定指標或者某種資源使用已經達到飽和狀態,可以找到系統的處理極限,為系統調優提供數據,具有以下特點:
1、主要目的是找到系統處理能力的極限,描述為“在某條件下最多允許100個用戶並發訪問”,“在某條件下一小時內最多處理2000條數據”;
2、測試環境確定,也需要考慮被測系統的業務壓力量和典型場景,使得測試結果具有業務上的意義;
3、一般用來了解系統的性能容量,或是配合性能調優來使用。
三、壓力測試
測試系統在一定飽和狀態下(CPU/內存等飽和),系統能夠處理的會話能力以及系統是否出現錯誤,具有以下特點:
1、主要目的是檢查系統處於壓力情況下時應用的性能表現;
2、一般通過模擬負載等方法,使得系統的資源使用達到較高的水平。除CPU和內存使用率外,JVM可用內存、數據庫連接數、數據庫服務器CPU使用率等都可以作為壓力的依據;
3、可用於測試系統的穩定性,基於這種原理:如果一個系統能夠在壓力環境下穩定運行一段時間,那么這個系統在平時的運行條件下也是冇問題的。
四、配置測試
通過對被測系統軟硬件環境的調整,了解各種不同環境對系統性能影響的程度,從而找到系統各項資源的最優分配原則,具有以下特點:
1、主要目的是了解各種不同因素對系統性能影響的程度,從而判斷出最值得進行的調優操作;
2、一般在對系統性能狀況有初步了解后進行,在確定的環境、操作步驟和壓力條件下進行,比較每次的測試結果找出影響最大的因素;
3、一般用於性能調優和規划能力。
五、並發測試
通過模擬用戶的並發訪問,測試多用戶並發操作時是否存在死鎖等性能問題,具有以下特點:
1、主要目的是發現系統中可能隱藏的並發訪問時的問題;
2、主要關注系統可能存在的並發問題,例內存泄露、線程鎖和資源競爭方面的問題
3、可在開發的各個階段使用,需要相關的測試工具配合和支持。
並發測試主要關注的問題
問題類型 | 問題描述 |
內存問題 | 是否有內存泄露(C/C++) |
是否有太多的臨時對象(Java) | |
是否有太多的超過設計生命周期的對象(Java) | |
數據庫問題 | 是否有數據庫死鎖(Dead Lock) |
是否經常出現長事務(Long Transaction) | |
線程/進程問題 | 是否出現線程/進程同步失敗 |
其他問題 | 是否出現資源競爭導致的死鎖 |
是否沒有正確處理異常(例如超時)導致系統死鎖 |
六、可靠性測試
通過給系統加載一定的業務壓力(例資源在70%-90%的使用率),讓應用持續運行一段時間,測試系統在這種條件下能否穩定運行,具有以下特點:
(PS:這里的可靠性測試並不等同於“獲得軟件的可靠性”,軟件的可靠性是個很大的話題,其一般用平均無故障時間或者失效率來衡量。)
1、主要目的是驗證系統是否支持長期穩定的運行;
2、需要在壓力下持續一段時間的運行(非關鍵應用,一般進行3*24的穩定性測試即可);
3、測試過程中需要關注系統的運行狀況,如果發現隨着時間的推移,RT或者資源使用率有明顯波動,則可能是不穩定的前奏。
七、失效恢復測試
針對有冗余備份和負載均衡的系統設計的,可以用來檢驗如果系統局部發生故障,用戶是否能夠繼續使用系統,以及會受到多大的影響,具有以下特點:
1、主要目的是驗證在局部故障情況下,系統能否繼續使用;
2、需要給出當問題發生時,能支持多少用戶訪問和采取何種應急措施的方案;
3、一般來說,只有對系統持續運行指標有明確要求的系統才需要進行這種類型的測試。
------------------------------------------------------------------分割線----------------------------------------------------------------------
下圖是性能測試應用領域與測試方法的關聯
能力驗證 | 規划能力 | 性能調優 | 缺陷發現 | 性能基准比較 | |
性能測試 | ★ | ||||
負載測試 | ★ | ★ | |||
壓力測試 | ★ | ★ | ★ | ★ | ★ |
配置測試 | ★ | ★ | |||
並發測試 | ★ | ★ | |||
可靠性測試 | ★ | ||||
失效恢復測試 | ★ | ★ | ★ |
____春風送君千萬里,且飲長亭念故人