性能測試過程分為4個階段:設計、構建、執行、分析/診斷/調節具體的工作流程如下圖
?
設計 > 構建 > 執行 > 分析/診斷/調節
收集要求 設置測試環境 基準測試 診斷瓶頸
設計測試策略 記錄測試腳本 ?性能測試 調整配置
定義業務流程 創建測試方案 ?可擴展性測試 量化改善
定義系統工作量 報告生成
?
以上4個階段的任務如下:
1、設計階段定義待測試的業務流程、業務的平均處理量、業務處理量的最高峰值、組合業務流程、系統的整體用戶和響應時間目標。
2、構建階段涉及設置和配置測試系統及基礎設施、使用自動化性能測試解決方案構建測試腳本和負載方案。
3、執行階段包括運行負載方案和測量系統性能。
4、分析、診斷和調節階段主要測量系統性能并使負載測試進入下一級別,重點查找問題原因以幫助開發工程師迅速解決問題,并實時調節系統參數以提高性能。
下面對這4個階段進行詳細的描述。
一、設計階段
可以將需要關注的問題分為4個方面,即業務需求、技術需求、系統要求和團隊要求。業務要求需通過業務分析師或最終用戶收集。一個全面的業務要求應該考慮以下問題:
1、應用程序情況:創建系統使用演示,讓性能測試團隊從整體上了解應用程序如何被使用。
2、業務流程列表:創建關鍵業務流程列表,以使用反映最終用戶在系統上執行的活動。
3、業務流程操作列表:創建word文檔,以便詳細記錄每個業務流程的正確步驟。
4、交易列表:匯編業務流程中需要負載測量(如“登錄”,“轉移資金”等)的關鍵活動的列表。
5、業務流程圖:創建業務流程圖,以便描繪業務流程的分支情況。
技術要求應該通過系統管理員和數據庫管理員進行收集并確認。一個全面的技術要求應該考慮以下問題:
1、環境預排工作:與系統或基礎設施團隊開展測試架構的預排工作。
2、系統范圍會議:舉行會議來討論系統的哪些部分應該排除在測試流程外,并達成一致見解。
3、生產圖:創建生產基礎設備的圖表,以標記出從QA遷移到生產過程中可能影響性能的因素。
收集系統的要求至關重要,這些是管控負載測試流程通過/未通過狀態的系統高級目標,這些通常與來自業務的經理合作而達成一致的,一個全面的系統要求應該考慮以下問題:
1、系統在正常和高峰期必須支持的用戶數量為多少?
2、系統每秒必須處理的交易量是多少?常用的一種估算方法為80~20原理法。
3、對于所有的關鍵業務交易,可接受的最低和最高的響應時間是多少?
4、用戶社區如何連接到系統?
5、生產中需要承載的系統工作量如何?交易組合如何?
6、自后是團隊要求階段,需要確定性能測試團隊成員。提前收集完整的業務、技術、系統和團隊要求,是有效和成功地進行負載測試的基礎。
二、構建階段
在構建階段,需要將設計階段所確定的業務流程和工作量轉變為可用來推動可重復、真實負載的自動化組件。可以從兩個方面來關注:自動化設置和環境設置。
(1)自動化設置包括一系列由性能工程師執行的序列任務。
1)制作腳本。將存檔的業務流程記錄到自動化腳本中。
2)交易。插入計時器來產生業務所需要的邏輯計時。
3)參數化。用數據池來代替所有的輸入數據(如登錄用戶名和密碼),以便每個虛擬用戶使用唯一的數據訪問應用程序。
4)方案。通過為不同的用戶組分配不同的腳本、連接和用戶行為來創建生產工作量。
5)監視。確定要監視哪些負載服務器或機器。
(2)環境設置包括組裝硬件、軟件和數據,這些都是執行成功及真實負載測試所必需的,這可能要與系統人員、DBA、操作人員和業務團隊協作。環境設置中最主要的是準備數據,數據來源有兩種方式:一是歷史事件;二是創建數據。
歷史數據即是將真實存在的數據,只需要從數據庫抽取出來即可。
創建數據則是測試過程中通過一些方法生成批量數據,制作數據的方法通常包括ultraedit結合EXCEL制作數據、數據庫、shell編程和Java編程等。所有創建的數據都應該滿足數據模型的要求,否則數據在調用過程中會產生錯誤。
構建階段的最終結果是得到一套自動化方案,可在配置好的可用環境中隨意執行。
3、執行階段
常見的幾類負載測試如下:
1、基線測試。用戶驗證系統及其周圍的環境是否在合理的技術參數下運行。性能測試僅運行5~10名用戶來對最終用戶交易性能進行基線測試,這些測試應該在性能測試流程的開始和結束時執行,以測量絕對響應時間的提高量。
2、性能測試。可模擬環境中的負載,從而提高有關系統可處理多少用戶的信息,這些測試應該模擬平均和高峰時的生產用量,它們應該使用真實的用戶行為(如思考時間)、調制解調器模擬和多個瀏覽器類型,以獲得最高的準備度,應該運行所有的監視程序和診斷程序,以便于工作最大限度地了解系統的性能降低和瓶頸。
3、基準測試。用于在理想的情況下測量和比較每種機器類型、環境或應用程序版本的性能,這些測試時系統進行了可擴展測試后運行的,旨在了解不同架構的性能影響。
4、滲入測試。其目的在于長時間在負載下運行系統,從而檢驗系統的性能狀況。
5、峰值測試。其目的在于模擬一段時間內系統上的峰值負載,以便幫助演示應用程序和底層硬件能夠在合理的時間內處理高負荷。
四、分析、診斷、調節階段
在監控、分析、診斷和調節過程中可以獲取大量的信息:
1、監控。性能測試過程中監控可顯示基礎設備每個層上所發生的一切,同時會更清晰地提供有關測試中的數據庫服務器、web服務器、應用程序服務器、單個應用程序或流程的信息。監控可快速獲取有價值的信息,如應用程序服務器的處理器(CPU)只能支持150名用戶并發,遠低于目標值。
2、分析。完成負載測試后,可將各種指標(如虛擬用戶、CPU或服務器CPU)關聯起來,以獲取有關應用程序行為不端的其他信息。
3、診斷。高效的性能測試解決方案應該向性能工程師提供有關層、組件、SQL語句是如何影響負載條件業務流程整體性能的單個統一視圖,性能工程師應該能夠看到有最終用戶交易所接觸到的所有組件,然后確定各組件使用的處理時間及調用次數。有了這些信息就可以針對web服務器、應用程序和數據服務器瓶頸進行調優。
4、許多企業都在應用程序部署前、中和后3個階段進行自動化性能測試。有些自動化性能測試解決方案可系統的識別并分離基礎實施性能瓶頸,然后通過修改系統配置設定來解決它們,通過反復解決基礎設施瓶頸,可以不斷改進配置。