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