生產圖:一個生產基礎設施圖,用于說明測試與生產環境的差異,當從QA向生產遷移時可能對性能造成影響。
最后,重要的是,必須收集系統需求。這些是系統的高層次目標,決定著負載測試過程的通過/失敗狀態。這些一般在與LOB的項目經理工作中達成一致。系統需求包括對以下問題的回答:
系統在正常和最高峰時期必須支持多少用戶?
每秒鐘它必須處理多少個事務?
對于可業務關鍵事務最大和最小可接受的響應時間是多少?
用戶群體如何聯系?
生產中系統承受的工作負載是什么?以及混合的事務?
團隊需求是進展到構建階段前需要解決的最后一個問題。這只不過是決定適合的性能團隊成員來參與到未來的負載測試。最初,這也許被自動的確定(例如,當只有一個團隊)。然而,如果性能測試成為卓越中心(CoE)的一部分,那么資源分配,內部后勤就應該在設計階段考慮和解決。
預先收集一套完整的業務,技術,系統,和團隊需求是使負載測試有效和成功的基礎。
構建
構建階段將在設計階段確定的業務過程和工作負載轉變為自動化組件,這部分可以驅動可重復的,實際的負載。這可以分為兩個方面:自動化設置和環境設置。自動化設置是由性能工程師完成的一系列連續的工作。
腳本:將確定的業務過程記錄為自動腳本。
事務:插入定時器來產生業務所需的邏輯計時。
參數化:用一個池替代所有的輸入數據,例如ID和密碼,這樣每個虛擬用戶用唯一的數據訪問應用。
場景:通過給用戶組分配不同的腳本,連通性和用戶行為等方法,創建生產工作負載。
監測器:確定負載下所要監控的服務器或機器。
環境設置由執行成功,現實的負載測試所需的硬件,軟件,和數據組成。這些可能涉及到系統,DBA,運營和業務團隊。
構建階段的最終成果就是可以執行在可用的,已配置的環境上的一系列自動化“資產”。
執行
對于剛接觸性能測試的新手來說,經常存在一個誤解,就是執行是一個單一事件。實際上,它是一個由多種類型的性能測試組成的多步驟的過程。每種測試都提供了理解發布應用所帶來風險的必要信息。負載測試的類型包括:
基線測試驗證了系統和其周圍環境可在合理的技術參數下運行。性能測試按5到10個用戶執行,作為最終用戶事務性能的基線。這些測試應該在性能測試的開始和結束時執行,來測量響應時間的絕對改進。
性能測試在環境中模仿負載,并確定系統可以支撐的最佳和最大用戶數量。這些測試應該仿效平均和峰值時間的生產用法,他們應當最大限度地仿真用戶的真實行為,例如思考時間,調制解調器的仿真,和各種類型的瀏覽器。同時,采用其它專用的監控和診斷工具,有效地查看系統內部行為,診斷系統衰變和瓶頸。
基準測試被設計來測量和對比理想情況下的各種機器類型,環境,或應用的版本。當系統經過擴展性測試后,執行這些測試可以幫助了解不同體系結構的影響。
滲透測試被設計用于在長時間的負載下檢測系統的執行情況。
峰值測試被設計用于模擬系統在峰值負載下運行一段時間來保證應用和其硬件可以在合理的時間段內支持高負載
分析,診斷,和調整
如何確定性能測試的 ROI
良好的性能測試的ROI有雙重意義:
緩解風險保證項目達到正確的擴展性和性能。緩解風險是標準的性能測試好處。大多數自動化性能測試的用戶可以向開發部門或項目團隊反饋清晰的,可量化的信息,預測系統在生產環境的擴展和性能情況。
性能最優化以量化方式改善系統的性能,通過測量改進的最終用戶響應時間,或者通過減少所需的全面硬件基礎設施
如何優化性能
在性能測試后的階段中,提供了很多有利于改善系統性能的有價值信息。
監測性能測試期間的監測顯示出基礎設施中每一層發生的情況,在性能測試期間提供了數據庫服務器,Web服務器,應用服務器,或單獨的應用和過程的更加清晰的記錄。例如,這些信息可以快速表明應用服務器的CPU使用率在200用戶的時候達到100%,而不能達到300用戶的目標。這意味著要么需要更多的應用服務器容量要么需要優化應用自身。
分析:在負載測試完成之后,用戶可以關聯分析—例如創建虛擬用戶對抗CPU或應用服務器CPU到Web服務器—來測定應用行為更深一層次的信息。
調整:許多公司在應用部署的前中后期使用壓力測試工具來實施自動化性能測試。同時可以采用其它工具允許用戶通過修改系統配置設置系統地識別,隔離,和解決基礎設施的性能瓶頸。通過反復實施解決基礎設施的瓶頸的過程,用戶可以建立當前最優的黃金配置。
診斷:當前的技術可以允許,性能工程師在負載條件下對各個層,組件和SQL語句如何影響整個業務過程性能有一個統一的認識。診斷時,性能工程師使用診斷工具可以看到最終用戶事務當前涉及到的所有組件。此外,用戶也可以看到每一個組件花費的時間和被調用的次數。依靠這些信息,項目和QA經理可以定位到最重要的Web,應用,和數據庫服務器瓶頸,集中資源來改善用戶體驗。它為開發者提供了如此有效的實際數據以至于用戶把它稱為“性能測試的圣杯。”
良好的性能測試涉及到哪些人?
項目經理
協調多個性能項目,管理測試進度,獲得必要的硬件或軟件,處理資源和資金問題。
業務分析師
負責從業務的角度對系統性能作出評價和結論。幫助開發性能測試中的混合事務和期望時間。
性能經理
負責協調性能支持團隊的工作,作為小組的聯系人。負責管理日常性能工作。
性能測試人員
負責創建和執行自動測試和收集測試結果。
應用構造師
接受負載測試的診斷和分析的信息,來最優化應用性能和解決性能問題。
基礎設施專家:DBA,網絡管理員,系統架構師