性能測試的定義
詳細內容可參考:https://www.cnblogs.com/fnng/archive/2012/06/09/2543274.html
性能測試是一類測試的總稱。一般而言,性能測試能夠評估出被測系統能夠承受多大的訪問量以及其在海量訪問的情況下表現如何,這些數據指標將會直接影響用戶體驗,因臺性能測試是一項非常重要的工作。
常見的性能測試子類如下:
名稱 | 特點 |
---|---|
場景測試 | 驗證系統在真實場景中的表現 |
容量測試 | 預測系統的性能狀況,協助規劃部署方案 |
可靠性測試(穩定性測試) | 驗證系統是否支持長期穩定的運行 |
壓力測試(強度測試) | 驗證系統在大強度的壓力之下是否穩定 |
除此之外,併發測試、負載測試、配置測試等也屬於性能測試,不過在筆者既往經歷的項目中接觸較少,故不做一一列舉。
性能測試的基本流程和關鍵環節
詳細內容可參考:https://testerhome.com/articles/19639
一般而言,一個完整的性能測試流程包含如下六個步驟:
- 確定性能測試目標
- 確定性能測試環境
- 確定性能測試通過標準(確定性能指標及其通過閾值)
- 設計性能測試(工具選型、腳本開發、測試數據準備)
- 執行性能測試
- 分析性能測試結果報告
從流程中我們大致可以看出,性能測試不同於其他類型的測試主要有三個地方:
- 選取性能測試指標
- 搭建性能測試環境
- 基於性能測試工具實現自動化
其中尤以自動化爲重中之重,因爲好的自動化工具(鏈)/自動化平臺會在某種程度上減少測試人員在測試指標以及測試環境的投入。
選取合適的性能測試指標,可參考:https://help.aliyun.com/document_detail/29338.html
設計性能測試環境的方案,可參考:https://testerhome.com/articles/19615
性能測試重中之重:性能測試工具(鏈)
不同於其他的測試,性能測試依賴嚴重依賴於測試自動化。某種程度上來說某些性能測試類型如果沒有自動化實現,基本上無法執行測試。所以,針對性能測試這一領域,測試工具層出不窮。比較知名的性能測試工具如下:
工具名 | 特點 |
---|---|
JMeter | 開源,社區活躍 |
LoadRunner | 商業軟件,功能齊全但擴展性差 |
Gatling | 開源/商業軟件,分佈式壓測工具 |
Locust | 開源,分佈式壓測工具 |
其他如nGrinder、ApacheBench等稍顯小衆,暫不單獨列出。
以上測試工具,大多僅涉及性能測試過程中壓測這一環節,收集的指標往往也侷限於系統性能指標(響應時間、系統處理能力、併發用戶、錯誤率)。
近來,業務及技術的發展也催生了對性能測試更高的述求。因此,業界也有不少公司推出了自己性能測試解決方案級平臺,例如阿里的PTS、騰訊的WeTest壓測大師等可以進行商業化使用,而美團、有贊等也通過技術博客等形式公佈其內部性能測試的大致實現思路。
從上圖我們可以看到,商業級的性能測試解決方案,不僅僅只是覆蓋壓測工具本身,往往還會兼顧模塊性能指標的監控,並且會自動進行測試數據處理,助力最終的測試結論輸出。這些能力都是JMeter、Locust等工具能力範疇之外的。
但可惜的是,阿里的PTS、騰訊的WeTest壓測大師等解決方案往往僅能服務於特定的測試對象且會收取一定的服務費用,具有一定的侷限性。
小結
本章主要回顧了性能測試的幾個主要概念,突出了性能測試工具(鏈)在其中所扮演的角色。