Jmeter之性能測試基礎

1、概念:

性能測試是通過自動化的測試工具模擬多種正常峯值及負載條件來對系統的各項性能指標進行測試。

負載測試和壓力測試都屬於性能測試,兩者可以結合進行。通過負載測試,確定在各種工作負載下系統的性能,目標是當負載逐漸增加時,測試系統各項性能指標的變化情況。

壓力測試是通過確定一個系統的瓶頸或者不能接受的性能點,來獲取系統能提供的最大服務級別的測試。

如下圖所示爲一個典型的性能測試曲線:

2、目的:

性能測試的目的是驗證軟件系統是否能夠達到用戶提出的性能指標,同時發現軟件系統中存在的性能瓶頸,以優化軟件,最後起到優化系統的目的。性能測試包括以下幾個方面:

A、評估系統的能力:測試中得到的負荷和響應時長數據可以被用於驗證所計劃的模型的能力,並幫助做出決策;

B、識別體系中的弱點:受控的負荷可以被增加到一個極端的水平並突破它,從而修復體系的瓶頸或薄弱的地方;

C、系統調優:重複運行測試,驗證調整系統的活動是否得到了預期的結果,從而改進性能;

D、檢測軟件中的問題:長時間的測試執行可導致程序發生由於內存泄露引起的失敗,揭示程序中隱含的問題或衝突;

E、驗證穩定性(Resilience)、可靠性(Reliability):在一個生產負荷下執行測試一定的時間是評估系統穩定性和可靠性是否滿足要求的唯一方法。

3、常見分類:

性能測試包括負載測試、強度測試和容量測試等。

A、負載測試(load testing):是指通過測試系統在資源負荷情況下的表現,來發現設計上的錯誤或驗證系統的負載能力。在這種測試中,將使測試對象承擔不同的工作量,以評估測試對象在不同工作量條件下的性能行爲,以及持續正常運行的能力。目標是確認並確保系統在超出最大預期工作量的情況下仍可以正常運行。此外,負載測試還要評估性能特徵,如響應時長、事務處理速率和其他與時間相關的性能指標。

B、壓力測試(stress testing):通過確認一個系統的瓶頸或者不能接收的性能點,來獲取系統能提供的最大服務級別的測試。

C、容量測試(volume testing):容量測試確認系統可處理同時在線的最大用戶數。

3、常見指標:

對於B/S(brower/server)架構的軟件,一般會關注如下web服務器性能指標:

對於C/S(client/server)架構的程序,由於軟件後臺通常爲數據庫,所以更注重數據庫的性能指標。

A、User Connections:用戶連接數,也就是數據庫的連接數量

B、Number of Deadlocks:數據庫死鎖

C、Butter Cache Hit:數據庫Cache的命中情況

注意:在實際的測試中,不僅僅限於以上的點,還要根據實際情況選擇,例如cpu佔用率、數據庫連接池等。

5、基本流程:

A、明確性能測試需求:需求應該明確測試涉及的功能點。

B、制定性能測試方案:性能測試方案應該詳盡地描述如何進行性能測試,其中應該至少包括:測試背景、測試目的、測試範圍、測試進入條件、測試退出條件、測試指標要求、測試策略、測試時機、測試風險和測試資源。

C、編寫測試用例

D、執行性能測試案例

E、分析測試結果

F、生成性能測試報告:一份性能測試報告,至少包含如下內容:

(1)測試基本信息:包含測試目的、報告目標讀者、術語定義、參考資料

(2)測試環境描述:包含服務器軟/硬件環境、網絡環境、測試工具、測試人員

(3)性能測試案例執行分析:需要詳細描述每個測試案例的執行情況,以及對應的測試結果分析

(4)測試結果綜合分析及建議:對本次性能測試做綜合分析,並給出測試結論和改進建議

(5)測試經驗總結

6、開源web性能測試

是否應該選擇開源性能測試工具?首先要明確所在組織的測試策略,其次還要考慮組織的實現情況。回答以下的幾個問題,有助於做出正確的判斷:

A、測試部門是否擁有非常充足的預算來購置商業性能測試工具?

B、測試人員是否擁有基礎的編程經驗?

C、測試人員是否有良好的英語閱讀能力?

7、開源性能測試的優勢:

A、更少的IT投入;

B、更靈活的定製工具;

C、更快、更便捷的服務支持;

D、更靈活的測試框架,避免綁定IT服務供應商

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章