摘要:性能測(cè)試是指在一定硬件條件下,獲取軟件系統(tǒng)在不同的業(yè)務(wù)背景下的各種性能表現(xiàn),本文根據(jù)筆者最近所做的幾次性能測(cè)試,就業(yè)務(wù)場(chǎng)景設(shè)計(jì)方面進(jìn)行總結(jié)分析,希望能起到一定的借鑒作用。
1測(cè)試過(guò)程中出現(xiàn)的問(wèn)題
最近一段時(shí)間,我們的團(tuán)隊(duì)連續(xù)承擔(dān)了幾個(gè)基于J2ee架構(gòu)的分布式系統(tǒng)的測(cè)試工作。在測(cè)試過(guò)程中,我們多次發(fā)現(xiàn)一個(gè)問(wèn)題,就是我們?cè)跍y(cè)試環(huán)境中得到的性能指標(biāo)與生產(chǎn)環(huán)境中的性能指標(biāo)差距較大,理論上應(yīng)該是測(cè)試環(huán)境的性能指標(biāo)優(yōu)于生產(chǎn)環(huán)境的指標(biāo),但實(shí)際結(jié)果是生產(chǎn)環(huán)境的性能指標(biāo)大大優(yōu)于測(cè)試環(huán)境下的性能指標(biāo)。經(jīng)過(guò)不斷摸索、總結(jié),我們發(fā)現(xiàn)出現(xiàn)以上問(wèn)題的原因是測(cè)試需求分析不到位,導(dǎo)致業(yè)務(wù)場(chǎng)景設(shè)置不合理、不全面,因而出現(xiàn)問(wèn)題。在這里我們就場(chǎng)景設(shè)計(jì)方面談一些自己的看法。
2業(yè)務(wù)場(chǎng)景分析
性能測(cè)試中涉及的基本場(chǎng)景有兩種,即單一業(yè)務(wù)場(chǎng)景和混合業(yè)務(wù)場(chǎng)景,這兩種業(yè)務(wù)場(chǎng)景缺一不可,缺少任何一種都不能準(zhǔn)確評(píng)估系統(tǒng)性能,定位系統(tǒng)瓶頸。如果只做單一業(yè)務(wù)場(chǎng)景,得到的結(jié)果與實(shí)際生產(chǎn)環(huán)境差距較大,沒(méi)有實(shí)際指導(dǎo)意義;如果只做混合業(yè)務(wù)場(chǎng)景,不能快速定位系統(tǒng)性能快速降低的原因,起不到定位瓶頸、系統(tǒng)調(diào)優(yōu)的作用。只有兩種場(chǎng)景互為補(bǔ)充,才可以獲取最符合客戶(hù)要求的測(cè)試結(jié)果。下面分別就兩種測(cè)試場(chǎng)景的具體設(shè)計(jì)方法結(jié)合一個(gè)論壇系統(tǒng)進(jìn)行討論,一個(gè)論壇系統(tǒng)包含三個(gè)主要單一業(yè)務(wù)流程,即用戶(hù)登陸、發(fā)表文章、閱讀文章。該論壇支持100人同時(shí)在線,支持20人同時(shí)發(fā)表文章,閱讀文章。
3單一業(yè)務(wù)場(chǎng)景
單一業(yè)務(wù)場(chǎng)景主要針對(duì)單一業(yè)務(wù)流程而設(shè)計(jì),主要考察某一項(xiàng)單一業(yè)務(wù)在各種情況下的響應(yīng)時(shí)間,系統(tǒng)資源占用,事務(wù)成功率等指標(biāo)。對(duì)于響應(yīng)時(shí)間這個(gè)指標(biāo),目前國(guó)內(nèi)國(guó)際上還沒(méi)有明確的標(biāo)準(zhǔn),業(yè)界普遍采用的評(píng)價(jià)準(zhǔn)則是2/5/10標(biāo)準(zhǔn),即2秒以?xún)?nèi)優(yōu)秀,5秒以?xún)?nèi)可以接受,10秒是極限。但是在實(shí)際當(dāng)中,并不僅限與這個(gè)標(biāo)準(zhǔn),例如郵件系統(tǒng)的登錄功能可以遵守這個(gè)標(biāo)準(zhǔn),因?yàn)橹皇且粋€(gè)登錄功能;但是針對(duì)上傳附件這個(gè)功能,如果附件本身較大,響應(yīng)時(shí)間自然會(huì)比較長(zhǎng),所以我們應(yīng)該靈活掌握標(biāo)準(zhǔn),以實(shí)際需要為準(zhǔn)則,確定預(yù)期響應(yīng)時(shí)間。事務(wù)成功率這個(gè)指標(biāo),業(yè)界采取的一般標(biāo)準(zhǔn)是90%,但是對(duì)于一些精密程度要求較高的系統(tǒng),如金融、證券、銀行等系統(tǒng),事務(wù)成功率要求更高,應(yīng)該達(dá)到98%以上,部分功能甚至要求達(dá)到100%。下面我們就單一業(yè)務(wù)場(chǎng)景在標(biāo)準(zhǔn)、極限、超載三種情況下的設(shè)計(jì)進(jìn)行討論。
3.1標(biāo)準(zhǔn)場(chǎng)景
設(shè)計(jì)標(biāo)準(zhǔn)場(chǎng)景的目的是驗(yàn)證系統(tǒng)單一業(yè)務(wù)是否達(dá)到所承諾的性能指標(biāo),此時(shí)系統(tǒng)應(yīng)該表現(xiàn)良好,響應(yīng)時(shí)間短,事務(wù)成功率高,資源利用率合理,如果不能達(dá)到以上要求,則說(shuō)明系統(tǒng)存在瓶頸,應(yīng)進(jìn)一步確定瓶頸,并進(jìn)行系統(tǒng)調(diào)優(yōu)。但是在實(shí)際測(cè)試過(guò)程中,我們往往片面的認(rèn)為標(biāo)準(zhǔn)場(chǎng)景就是標(biāo)準(zhǔn)用戶(hù)數(shù),而忽略了操作對(duì)象、操作頻率也是非常重要的場(chǎng)景內(nèi)容,如果這樣我們?cè)O(shè)計(jì)的操作場(chǎng)景將會(huì)如下(以發(fā)表文章為例):

這個(gè)場(chǎng)景初看起來(lái)沒(méi)有任何問(wèn)題,但是我們?nèi)绻钊氲目紤]一下,就會(huì)發(fā)現(xiàn)一些問(wèn)題。例如,發(fā)表文章,文章的大小對(duì)系統(tǒng)的壓力是否有影響呢?發(fā)表一個(gè)1K的文章,和發(fā)表一個(gè)1M的文章是否有區(qū)別呢?一個(gè)用戶(hù)是否會(huì)持續(xù)不斷的發(fā)文章呢?如果不是,發(fā)文章的頻率是多少呢?這需要我們進(jìn)一步在測(cè)試需求中明確,這樣設(shè)計(jì)出來(lái)的場(chǎng)景才是真正的標(biāo)準(zhǔn)情況下的測(cè)試場(chǎng)景,新的測(cè)試場(chǎng)景如下

新的測(cè)試場(chǎng)景增加了標(biāo)準(zhǔn)的迭代時(shí)間和標(biāo)準(zhǔn)大小的操作對(duì)象,這樣的測(cè)試場(chǎng)景才是真正的標(biāo)準(zhǔn)測(cè)試場(chǎng)景,獲得的各項(xiàng)性能指標(biāo)才具有實(shí)際指導(dǎo)作用。
3.2極限場(chǎng)景
設(shè)計(jì)極限場(chǎng)景的目的是為了驗(yàn)證系統(tǒng)單一業(yè)務(wù)否達(dá)到承諾的極限情況,在極限的情況下,能否正確完成相應(yīng)的工作,并保證客戶(hù)數(shù)據(jù)安全,響應(yīng)時(shí)間在可接受范圍內(nèi),資源利用不超標(biāo)。根據(jù)標(biāo)準(zhǔn)場(chǎng)景的分析,我們可以指導(dǎo)極限場(chǎng)景的設(shè)計(jì)應(yīng)包括以下部分,即虛擬用戶(hù)極限,并發(fā)用戶(hù)極限,迭代時(shí)間極限,操作對(duì)象極限;持續(xù)時(shí)間極限屬于疲勞強(qiáng)度測(cè)試,這里不進(jìn)行討論。得到的極限測(cè)試場(chǎng)景如下:

以上得到共計(jì)15種極限情況,由于實(shí)際測(cè)試過(guò)程中資源有限,不可能進(jìn)行如此全面的測(cè)試,可以根據(jù)實(shí)際情況進(jìn)行取舍,以用戶(hù)要求為主導(dǎo),選擇需要的測(cè)試場(chǎng)景進(jìn)行測(cè)試。在加壓過(guò)程中,如果響應(yīng)時(shí)間明顯加長(zhǎng),資源利用率異常上升,吞吐量沒(méi)有隨用戶(hù)增加正比增長(zhǎng)則說(shuō)明系統(tǒng)已到達(dá)瓶頸,可以停止測(cè)試,轉(zhuǎn)而進(jìn)行瓶頸確認(rèn)、系統(tǒng)調(diào)優(yōu)等工作。
3.3超載場(chǎng)景
設(shè)計(jì)超載情況測(cè)試場(chǎng)景的目的是為了驗(yàn)證系統(tǒng)單一業(yè)務(wù)在超載的情況下,何時(shí)出現(xiàn)性能拐點(diǎn),何時(shí)系統(tǒng)失效,失效對(duì)數(shù)據(jù)庫(kù)已有數(shù)據(jù)是否有影響。根據(jù)標(biāo)準(zhǔn)場(chǎng)景的分析,我們可以指導(dǎo)超載場(chǎng)景的設(shè)計(jì)應(yīng)包括以下部分,即虛擬用戶(hù)超載,并發(fā)用戶(hù)超載,迭代時(shí)間超載,操作對(duì)象超載。得到的超載測(cè)試場(chǎng)景如下:

以上得到共計(jì)15種超載情況,由于實(shí)際測(cè)試過(guò)程中資源有限,不可能進(jìn)行如此全面的測(cè)試,可以根據(jù)實(shí)際情況進(jìn)行取舍,以用戶(hù)要求為主導(dǎo),選擇需要的超載測(cè)試場(chǎng)景進(jìn)行測(cè)試。在加壓過(guò)程中,如果響應(yīng)時(shí)間明顯加長(zhǎng),資源利用率異常上升,吞吐量沒(méi)有隨用戶(hù)增加正比增長(zhǎng)則說(shuō)明系統(tǒng)已出現(xiàn)拐點(diǎn);如果出現(xiàn)響應(yīng)時(shí)間超長(zhǎng),資源利用率長(zhǎng)期超標(biāo),吞吐量逆向減少,說(shuō)明應(yīng)用系統(tǒng)已失效,可以停止測(cè)試。
4混合業(yè)務(wù)場(chǎng)景
混合業(yè)務(wù)場(chǎng)景針對(duì)模擬系統(tǒng)真實(shí)生產(chǎn)環(huán)境而設(shè)計(jì),主要為了測(cè)試整個(gè)系統(tǒng)在各種情況下的響應(yīng)時(shí)間,系統(tǒng)資源占用,事務(wù)成功率等指標(biāo)。下面我們就混合業(yè)務(wù)場(chǎng)景在標(biāo)準(zhǔn)、極限、超載三種情況下的設(shè)計(jì)進(jìn)行討論。
4.1標(biāo)準(zhǔn)場(chǎng)景
標(biāo)準(zhǔn)情況下的混合場(chǎng)景是測(cè)試場(chǎng)景中最貼近實(shí)際運(yùn)行環(huán)境的場(chǎng)景,可以全面有效的反應(yīng)被測(cè)系統(tǒng)在真實(shí)環(huán)境下的性能表現(xiàn),驗(yàn)證系統(tǒng)是否達(dá)到所承諾的各項(xiàng)性能指標(biāo),并對(duì)未來(lái)系統(tǒng)擴(kuò)展、調(diào)優(yōu)提供支持。我們可以得到如下的測(cè)試場(chǎng)景:

測(cè)試場(chǎng)景中各個(gè)業(yè)務(wù)所分配的用戶(hù)比例是按照用戶(hù)要求設(shè)計(jì)的,有時(shí)用戶(hù)不能明確自己的測(cè)試需求,需要測(cè)試人員使用日志分析工具分析系統(tǒng)在實(shí)際運(yùn)行情況下的日志得出相關(guān)數(shù)據(jù),指導(dǎo)測(cè)試場(chǎng)景的設(shè)計(jì)。
4.2極限場(chǎng)景
設(shè)計(jì)極限場(chǎng)景的目的是為了驗(yàn)證系統(tǒng)在貼近真實(shí)環(huán)境下能否達(dá)到承諾的極限情況,在極限的情況下,能否正確完成相應(yīng)的工作,并保證客戶(hù)數(shù)據(jù)安全,響應(yīng)時(shí)間在可接受范圍內(nèi),資源利用不超標(biāo)。通過(guò)以上單一業(yè)務(wù)場(chǎng)景的極限情況分析,我們知道會(huì)有極限場(chǎng)景共15個(gè);而混合業(yè)務(wù)又包含多個(gè)單一業(yè)務(wù),這個(gè)例子中包含三個(gè)單一業(yè)務(wù),那么極限測(cè)試場(chǎng)景會(huì)有4125個(gè),這個(gè)數(shù)量顯然是我們無(wú)法接受的,我們只能從中挑選重要的極限場(chǎng)景或用戶(hù)指定的極限場(chǎng)景,并配合正交排列方法選擇。我們選擇如下的混合業(yè)務(wù)極限測(cè)試場(chǎng)景:

當(dāng)然,以上極限測(cè)試場(chǎng)景未必是最合理的,因?yàn)橐詤^(qū)區(qū)六種測(cè)試場(chǎng)景取代4125種測(cè)試場(chǎng)景肯定不能達(dá)到全面體現(xiàn)系統(tǒng)性能的目的,只能是在一定程度上對(duì)系統(tǒng)性能進(jìn)行度量。
4.3超載場(chǎng)景
設(shè)計(jì)超載情況測(cè)試場(chǎng)景的目的是為了驗(yàn)證整個(gè)系統(tǒng)在超載的情況下,何時(shí)出現(xiàn)性能拐點(diǎn),何時(shí)系統(tǒng)失效,失效對(duì)數(shù)據(jù)庫(kù)已有數(shù)據(jù)是否有影響等。通過(guò)以上緩和業(yè)務(wù)場(chǎng)景極限情況的分析,我們同樣可以得出超載場(chǎng)景的數(shù)量也是4125個(gè),同樣根據(jù)用戶(hù)測(cè)試需求、系統(tǒng)自身特點(diǎn)等約束條件,我們進(jìn)行篩選,得到需要的超載場(chǎng)景,這里就不展開(kāi)描述了?;旌蠘I(yè)務(wù)流程的超載測(cè)試場(chǎng)景的結(jié)果對(duì)于系統(tǒng)調(diào)優(yōu)的指導(dǎo)意義是比較大的,因?yàn)橄到y(tǒng)在這種場(chǎng)景下失效的可能性是最大的,系統(tǒng)的弱點(diǎn)暴露的也最完全。
5結(jié)語(yǔ)
性能測(cè)試中的場(chǎng)景設(shè)計(jì)是實(shí)施性能測(cè)試的基礎(chǔ),只有合理的設(shè)計(jì)測(cè)試場(chǎng)景才能獲得有價(jià)值的測(cè)試數(shù)據(jù),為接下里的確認(rèn)瓶頸、系統(tǒng)調(diào)優(yōu)打下基礎(chǔ)。