1. 程式人生 > >性能基準自動化測試

性能基準自動化測試

測試報告 圖片 策略 表示 mage 計算 sum atp 趨勢分析

性能基準測試是一項系統性能測量工作,根據目前的項目實際,在這裏做了一些新的定義。基準測試在項目中與一般性能測試工作的主要區別在於其更短的回歸周期與直觀的趨勢分析,並同時為混合業務性能場景的腳本線程配比計算提供依據。一般的性能測試往往只在版本計劃中或遭遇系統性能問題時進行,而基準測試在日常中進行,特別是在發生重大變更事件(例如:系統配置、環境發生變更)之前與之後的測試,讓測試結果數據與一般的性能測試結果數據更有實質上的參考意義。因為,當為系統創建性能基準後,基準數據作為性能指標的參照物,可用於判斷任意一項變更為系統帶來的具體影響。例如:某項配置優化後能夠為系統帶來的性能提升是多少、系統某項操作歷史數據的增長與性能響應的關系、系統環境的變更對系統性能產生的影響。而且實施該項工作並不復雜。

基準測試數據的實際用途

1) 了解系統性能基準作為參照物(性能問題發生後的測試很難了解系統性能基準)

2) 識別系統或環境的配置變更對性能響應帶來的影響

3) 為系統優化前後的性能提升/下降提供參考指標

4) 觀察系統的整體性能趨勢與拐點發生,及早識別系統性能風險

性能基準自動化測試與一般性能測試的主要區別

1) 測試周期:基準測試每天定時自動化執行,性能測試需要事件驅動執行。

2) 測試腳本:基準測試的性能測試腳本僅僅包含所關註業務的必須的HTTP請求,不進行用戶行為模擬;性能測試的測試腳本包含關鍵業務的所有上下文請求,並進行用戶行為的模擬。

3) 測試策略:基準測試策略固定,幾乎不允許修改(否則將與過去所有歷史數據發生斷層);性能測試需要根據不斷變化的性能需求進行修改。

4) 腳本維護:基準測試的測試腳本僅在訪問鏈接發生變更時維護,或者POST請求參數發生變更時維護,GET請求幾乎不需要維護;性能測試腳本在每輪測試中一般都需要重新開發。

5) 結果用途:基準測試結果數據僅用於作為系統性能下降/提升的衡量指標,性能測試結果腳本可用於預測用戶性能體驗、系統性能風險。

性能基準測試自動化測試的實施

1) 性能基準數據的獲取

利用Apache的開源項目Jmeter測試工具,使用Jmeter針對關註的系統性能點進行腳本開發,如下圖,線程在事務控制器“用戶登錄”內進行系統登錄,循環控制器內裝載了各個性能關註點的HTTP請求:

技術分享圖片

在測試計劃中維護性能基準測試環境信息與測試策略,包括:主機、端口、線程數、加載速度、叠代次數等。並采用50線程執行性能測試腳本,每條線程執行10次叠代,每個性能關註點取得500個響應樣本,從而性能響應數據,包括:平均值、標準差、事務通過情況、錯誤內容。

技術分享圖片

2) 計劃任務的定時執行

利用Apache開源項目Ant每日中午定時執行基準測試,自動保存性能測試結果,生成當日的性能基準測試結果數據,每日基準測試報告如下圖:

技術分享圖片

假定性能關註點為5個,采用以上測試策略,在系統性能響應理想的情況下,整個測試過程時間可在3分鐘內完成,最後生成一定數量的結果文件,最好有30天以上

技術分享圖片

3) 數據的整合與趨勢分析

當取得足夠量的基準測試結果以後(例如:30天、60天、90天),即可對第二節中所提到的每天的測試結果數據進行整合,生成報表的形式,直觀的了解過去時間內,系統的性能拐點發生日期,對拐點發生當日的變更事件進行跟蹤。報表所體現的內容在使用summary中的平均響應時間、事務通過率作為系統整體性能響應考量指標。不把每個事務都展現到報表中,除非:

a) 系統整體事務通過率無法達到95%;

b) 系統整體響應時間平均值大於2秒,最高值大於10秒;

下面是用perl寫了個程序對html文件進行分析的輸出,每個基準測試時間後對應了系統整體性能狀況(事務的通過率,以及響應時間的平均、最快、最大值),最後根據預定義的閾值給出結果,為了更好的說明問題,這裏把“平均響應時間大於5秒”判斷為性能下降,最後一列的“↘”表示了3月31日出現了性能拐點。

技術分享圖片技術分享圖片

性能基準自動化測試