對于一個比較成熟的業務系統來說,功能已經相對完善。但是在大業務量的情況下往往出現各種異常情況,這就需要通過修改系統配置或者調整產品框架來優化系統。
在優化系統的過程中,最有效的手段就是對系統進行性能測試。然后對測試過程中收集的數據進行分析,找出問題所在,不斷對系統進行優化,最終達到系統在大業務量時穩定運行的目的。
1、明確測試方法
測試方法主要是通過測試步驟體現出來的。測試步驟不是一成不變的,而是根據每次的測試結果不斷調整和完善。開始性能測試之前必須確定以下兩個任務。
(1)建立業務模型。根據業務的開展情況,建立科學的業務模型。
(2)設置性能指標。性能指標作為判斷設計和實際性能處理的基準值,必須在測試之前明確。
確定以上兩點后就可以開始調整循環,進行一系列重復和受控的性能測試。調整循環步驟如圖1所示。測試時需重復圖1中的4個階段,直到獲得初始建立的系統性能目標。
圖1 調整循環的4個階段
2、測試
測試階段是調整循環操作的起點,是根據測試要求進行的相關操作,并為結果統計提供相應的測試數據。該階段需要考慮環境配置和測試用例兩個方面。
2.1環境配置
不同的測試環境會產生不同的測試結果,因此測試前需要對環境配置進行詳細的檢查。主要檢查以下幾個方面。
(1)網絡連通性。網絡是否通暢是測試能否正常進行的基本前提。
(2)流量模型是否超出系統負荷。如果測試時施加的業務量遠大于系統所能承受的負荷,則會對系統產生損傷,并在測試過程中出現宕機、告警等異常情況。
(3)被測系統的系統配置。系統配置包括軟件和硬件兩個方面。由于不同的系統配置會產生不同的測試結果,因此測試之前應對被測系統進行嚴格的核對,檢查其是否符合測試要求。
(4)測試工具的參數配置。對于一個功能相對完善的測試工具來說,不但應能模擬大業務量,還應能配置壓力遞增方式、壓力大小以及壓力持續時間等參數,因此在測試之前需要檢查相應的參數配置能否滿足測試要求。
2.2測試用例
性能測試用例大體分為環境配置、預置條件、測試步驟、預期結果、判定原則和測試結果6個方面。
(1)環境配置是指依照測試需求配置測試環境,包括網絡組網和系統參數配置等。
(2)預置條件是指為了真實模擬某些場景而需要在測試前預置的條件。
(3)測試步驟是指在環境配置和預置條件完成后,如何對系統加壓的過程。一般來說,首先確定壓力的生成形式(如階梯遞增、二次曲線遞增等),然后確定壓力遞增的時間,最后確定壓力保持時間。
(4)預期結果是指通過理論及經驗分析,對實際測試結果的預期指標或現象。此內容是檢驗測試結果的依據。
(5)判定原則是制定標準以判斷測試是否滿足要求。判定原則的制定在很大程度上依賴于測試的預期結果。
(6)測試結果是根據實際的測試情況、預期結果以及判定原則等對性能測試作出的總體結論。
3、結果統計
結果統計是將測試結果進行統計的過程,此過程是調整循環中承上啟下的階段。此階段統計的數據來源于上一次的測試結果,并為后續的數據分析提供依據。結果統計的數據可以來源于被測系統和測試工具兩個方面,因此在統計過程中不但要考慮從被測系統獲取的統計數據,還要兼顧測試工具本身的數據統計。從被測系統可以直接獲取通過系統日志統計出的系統資源消耗;從測試工具本身可以統計壓力大小、業務處理時延和業務處理成功率等。
4、結果分析
收集好系統所需的性能數據后,再對這些數據進行分析以確定系統瓶頸。需要明確的是,統計數據僅具有指示性,并不一定能準確地確定實際瓶頸的位置。因為性能問題可由多種原因引起,這就需要從系統角度來分析和查找原因。例如,對某郵件系統進行郵件轉發業務流程測試過程中,在保持最大在線并發用戶數時系統資源消耗在50%左右,如果單從這個數據表面來看,此郵件系統性能良好,即在保持最大用戶數時系統資源還有很大的可利用空間,但是如果進一步分析就會發現此系統的郵件轉發業務流程設計不太合理,還有很大的系統優化空間。因為對一個優化的系統來說,當其保持最大用戶數時,系統資源消耗應在80%以上。
在進行結果分析時應注意以下幾點。
(1)數據發現的敏感性。能夠主動發現一些貌似“合理”的數據問題。
(2)數據分析的系統性。能夠通過測試數據的表面,從系統角度對數據進行分析,盡快發現系統瓶頸。
(3)數據合理的疑問性。測試的目的是發現問題,進而優化系統。因此應該抱著懷疑的態度分析測試數據,這樣才能做到不遺漏任何“可疑”的數據。
(4)結果分析的分步性。根據測試經驗,對測試結果的分析可以分為觀察、初步假設、預測、測試、控制和結論6步進行。結論由該過程積累的最佳證據集合所支持的假設組成。
5、系統優化
在循環調整過程中,前三個階段的目的是對系統進行優化,因此系統優化的依據直接來源于對測試結果的分析。在通常情況下,對于一個比較成熟的系統來說,系統的絕大多數優化工作是對系統配置的優化,只有少部分是對系統設計的修改。
通過結果分析可大體定位系統出現問題的位置,隨后就需要對系統配置進行更改。此優化過程大部分工作是嘗試性和不間斷性的,因此需要不斷嘗試改變參數配置,然后驗證修改后的配置是否達到預期目的。如果沒有達到預期目的,則需要進一步對配置進行修改和驗證。根據測試經驗,參數配置更改的原則是“一次僅實現一個配置的更改”。原因是對于系統某一個模塊/單元出現的問題可能是由涉及多個模塊/單元的瓶頸引起的,因此分別對問題進行處理很重要。如果同時進行多個更改,則難以準確地評定每次更改的影響。
配置更改后必須對修改后的系統進行測試,以確定更改對調整后的系統所產生的影響。如果性能達到預期水平,便結束測試;否則必須重新進入下一個調整循環階段。
|