對于一個開發(fā)比較成熟的業(yè)務(wù)系統(tǒng)而言,功能相對已經(jīng)完善,但在大業(yè)務(wù)量的情況下往往會出現(xiàn)各種異常。對此,需通過對系統(tǒng)進(jìn)行配置修改或者產(chǎn)品框架調(diào)整來優(yōu)化系統(tǒng)。在優(yōu)化系統(tǒng)過程中,有效的手段是對系統(tǒng)做性能測試,通過測試結(jié)果的收集分析,不斷進(jìn)行系統(tǒng)優(yōu)化,終達(dá)到系統(tǒng)在大業(yè)務(wù)量情況下穩(wěn)定運(yùn)行的目的。
一、測試方法
測試方法主要通過測試過程中的測試步驟體現(xiàn)出來。測試步驟需根據(jù)每次的測試結(jié)果不斷調(diào)整,一個完善的測試方法需要不斷地進(jìn)行性能測試和性能調(diào)整。在開始性能調(diào)整循環(huán)之前,必須確定以下兩點(diǎn):一是建立業(yè)務(wù)模型,通過統(tǒng)計或數(shù)學(xué)模型的方法建立起科學(xué)的業(yè)務(wù)模型,如業(yè)務(wù)流程分布比例、平均負(fù)荷、峰值負(fù)載等;二是設(shè)置性能指標(biāo),作為判斷設(shè)計指標(biāo)和實(shí)際性能處理指標(biāo)的基準(zhǔn)值,總體的系統(tǒng)吞吐量、系統(tǒng)的吞吐效率、響應(yīng)時延等都是用于測量性能的常用度量標(biāo)準(zhǔn)。
確定以上兩點(diǎn)后,開始調(diào)整循環(huán),這是一系列重復(fù)的受控性能試驗。重復(fù)四個調(diào)整循環(huán)階段,直至獲得在開始調(diào)整過程前建立的系統(tǒng)性能目標(biāo)。
二、測試階段
測試階段是調(diào)整循環(huán)操作的起點(diǎn),此階段是根據(jù)測試的要求進(jìn)行相關(guān)操作,為下一步結(jié)果統(tǒng)計提供相應(yīng)的測試數(shù)據(jù)。此階段需要注意測試環(huán)境配置、測試用例的操作兩個要點(diǎn)。
1.測試環(huán)境配置
不同的測試環(huán)境會產(chǎn)生不同的測試結(jié)果,因此測試前需要對環(huán)境配置進(jìn)行詳細(xì)的檢查。
(1)檢查網(wǎng)絡(luò)連通性。網(wǎng)絡(luò)暢通是測試能夠正常進(jìn)行的基本前提。
(2)檢查流量模型是否超出系統(tǒng)負(fù)荷。如果將要加的壓力大大超出系統(tǒng)的負(fù)荷,會對系統(tǒng)產(chǎn)生傷害,并可能在測試過程中出現(xiàn)宕機(jī)、告警等異常情況。
(3)檢查被測系統(tǒng)的系統(tǒng)配置。此系統(tǒng)配置包括軟件版本和硬件配置兩個方面,不同的系統(tǒng)配置會產(chǎn)生不同的測試結(jié)果,故測試之前應(yīng)對被測系統(tǒng)的配置進(jìn)行嚴(yán)格核對,檢查是否是測試所需的系統(tǒng)配置。
(4)檢查測試工具的參數(shù)配置。在性能測試中,必須利用測試工具來模擬大業(yè)務(wù)量。對于一個功能相對完善的測試工具,不但能模擬大業(yè)務(wù)量,而且還能夠配置壓力遞增方式、壓力大小、壓力持續(xù)時間等參數(shù)。在測試之前需要根據(jù)測試的需求檢查相應(yīng)參數(shù)配置是否滿足測試要求。
2.測試用例操作
測試過程中,性能測試主要按照測試用例規(guī)定的內(nèi)容去逐步操作。一般來講性能測試用例內(nèi)容大體分成測試環(huán)境配置、預(yù)置條件、測試步驟、預(yù)期結(jié)果、判定原則、測試結(jié)果六個方面。
環(huán)境配置是指按照測試的需求配置測試環(huán)境,包括網(wǎng)絡(luò)的組網(wǎng)、系統(tǒng)的參數(shù)配置等;測試預(yù)置條件是指為了真實(shí)模擬一些場景,需要在測試之前在系統(tǒng)中預(yù)置一些條件,例如在郵箱系統(tǒng)的性能測試過程中,為了模擬業(yè)務(wù)開展的實(shí)際情況測試,需要在郵件系統(tǒng)中預(yù)先存儲一些積壓的郵件;測試步驟是指在環(huán)境配置完成及預(yù)置條件完成后,如何對系統(tǒng)加壓的過程,一般而言,首先確定壓力的生成形式(如階梯型遞增、二次曲線形式遞增等),然后確定壓力遞增的時間,后要求壓力保持的時間;預(yù)期結(jié)果是指通過理論及經(jīng)驗分析,對實(shí)際測試結(jié)果的一個預(yù)期指標(biāo),此內(nèi)容是檢驗測試結(jié)果的一個依據(jù);判定原則是制定出一個標(biāo)準(zhǔn)來判斷測試是否滿足要求,此原則的制定很大程度上依據(jù)測試的預(yù)期結(jié)果;測試結(jié)果是根據(jù)實(shí)際測試情況及參考預(yù)期結(jié)果和判定原則對測試的一個總體結(jié)論,其結(jié)論包括此項測試是否通過及測試的相應(yīng)指標(biāo)記錄兩個方面。
3.結(jié)果統(tǒng)計
此過程是調(diào)整循環(huán)內(nèi)容中一個承上啟下的環(huán)節(jié)。此環(huán)節(jié)統(tǒng)計的數(shù)據(jù)來源于上一次的測試結(jié)果,并為下一步的數(shù)據(jù)分析提供相關(guān)數(shù)據(jù)。
結(jié)果的統(tǒng)計可以來源于被測系統(tǒng)和測試工具本身兩個方面,在統(tǒng)計過程中不但要考慮到從被測系統(tǒng)中統(tǒng)計數(shù)據(jù)還要兼顧到測試工具本身的數(shù)據(jù)統(tǒng)計。一般來講,從被測系統(tǒng)可以直接通過系統(tǒng)的日志統(tǒng)計出系統(tǒng)資源消耗(如CPU、內(nèi)存的占用率等);從測試工具本身可以統(tǒng)計出壓力的大小、業(yè)務(wù)處理時延、業(yè)務(wù)處理成功率等指標(biāo)。結(jié)果統(tǒng)計階段需要將以上兩個方面的數(shù)據(jù)一并統(tǒng)計出來,為下一步數(shù)據(jù)分析提供重要依據(jù)。
4.結(jié)果分析
通過數(shù)據(jù)統(tǒng)計收集到系統(tǒng)所需的性能數(shù)據(jù)后,對這些數(shù)據(jù)進(jìn)行分析以確定系統(tǒng)瓶頸。在這里,需要明確的是統(tǒng)計到的體現(xiàn)性能數(shù)據(jù)僅具有指示性,它并不一定可以確定實(shí)際的瓶頸在哪里,因為一個性能問題可能由多個原因所致。因此,在結(jié)果分析階段需要從系統(tǒng)的角度去分析并查找原因,千萬不能走入“頭痛醫(yī)頭,腳痛醫(yī)腳”的誤區(qū)。在結(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ù)進(jìn)行分析,發(fā)現(xiàn)系統(tǒng)瓶頸。
(3)數(shù)據(jù)合理的疑問性,測試工作的目的是要發(fā)現(xiàn)問題,優(yōu)化系統(tǒng),所以應(yīng)該抱著對所有數(shù)據(jù)懷疑的態(tài)度去分析測試數(shù)據(jù),這樣才能做到不遺漏任何的“可疑”數(shù)據(jù)。
(4)結(jié)果分析的分步性,通過測試經(jīng)驗,對于測試結(jié)果分析可以分成六步進(jìn)行,包括觀察、初步假設(shè)、預(yù)測、測試、控制和結(jié)論,結(jié)論由該過程積累的佳證據(jù)集合所支持的假設(shè)組成。
三、總結(jié)
在循環(huán)調(diào)整的過程中,測試、結(jié)果統(tǒng)計、結(jié)果分析環(huán)節(jié)的終目的是要對系統(tǒng)進(jìn)行優(yōu)化。因此,系統(tǒng)優(yōu)化的依據(jù)直接來源于對測試結(jié)果的分析。通常來講,對于一個比較成熟的系統(tǒng),系統(tǒng)的絕大多數(shù)優(yōu)化工作往往是對系統(tǒng)配置的優(yōu)化,只有少部分的優(yōu)化工作是對系統(tǒng)設(shè)計的修改。
通過對結(jié)果的分析,可以大體定位出系統(tǒng)問題出現(xiàn)在哪里,隨后對系統(tǒng)配置進(jìn)行更改及優(yōu)化。此優(yōu)化過程大部分的工作是嘗試性和不間斷性的,需要不斷嘗試配置參數(shù)的改變,然后驗證此配置的修改是否達(dá)到預(yù)期目的。如果沒有達(dá)到預(yù)期目的,需要進(jìn)一步對配置進(jìn)行修改和驗證。根據(jù)以往的測試經(jīng)驗,實(shí)現(xiàn)參數(shù)配置更改的重要規(guī)則是一次僅實(shí)現(xiàn)一個配置更改。這主要是由于系統(tǒng)某一個模塊/單元出現(xiàn)問題可能是由多個模塊/單元的瓶頸導(dǎo)致的。因此,分別處理每個問題很重要。如果同時進(jìn)行多個更改,將不可能準(zhǔn)確地評定每次更改的影響。
實(shí)現(xiàn)了配置更改后,必須對修改后的系統(tǒng)進(jìn)行測試,確定更改對系統(tǒng)所產(chǎn)生的影響。如果幸運(yùn),性能提高到預(yù)期的水平,這時便可以退出。如果不是這樣,則必須重新逐步進(jìn)行調(diào)整循環(huán)。
綜合考慮以上的內(nèi)容,一個調(diào)整循環(huán)的流程才算基本完成,根據(jù)調(diào)整的結(jié)果來考慮是否進(jìn)入下一部調(diào)整循環(huán)的階段。
推薦閱讀:
本文內(nèi)容不用于商業(yè)目的,如涉及知識產(chǎn)權(quán)問題,請權(quán)利人聯(lián)系SPASVO小編(021-60725088-8054),我們將立即處理,馬上刪除。