肖祥春,李偉洪,王麗
(1.廣東省科技基礎(chǔ)條件平臺(tái)中心,廣東 廣州 510000;2.廣東省高性能計(jì)算重點(diǎn)實(shí)驗(yàn)室,廣東 廣州 510000;3.中國(guó)人民解放軍95269 部隊(duì))
能力驗(yàn)證作為一種重要的外部質(zhì)量評(píng)價(jià)手段,可有效評(píng)估確認(rèn)實(shí)驗(yàn)室相關(guān)技術(shù)能力[1]。能力驗(yàn)證的目的是保證實(shí)驗(yàn)室的運(yùn)行滿足質(zhì)量管理的要求,出具的結(jié)果可信可靠,對(duì)實(shí)驗(yàn)室的質(zhì)量控制起到補(bǔ)充和完善的作用[2]。軟件測(cè)試能力驗(yàn)證由CNAS 組織,開展過效率測(cè)試、功能性測(cè)試及易用性測(cè)試能力驗(yàn)證活動(dòng)[3]。軟件的性能效率作為軟件八大特性之一,是評(píng)估軟件質(zhì)量的重要指標(biāo)[4],因此其測(cè)試過程的規(guī)范性和結(jié)果的準(zhǔn)確性十分重要。
性能效率測(cè)試是指在最大限度地模擬系統(tǒng)在實(shí)際使用環(huán)境下的業(yè)務(wù)壓力或用戶場(chǎng)景來運(yùn)行系統(tǒng),同時(shí)在系統(tǒng)運(yùn)行過程中采集相關(guān)性能指標(biāo),并在測(cè)試結(jié)束后對(duì)運(yùn)行過程中采集的指標(biāo)數(shù)據(jù)進(jìn)行分析,從而判斷系統(tǒng)性能是否達(dá)到預(yù)期要求。由于性能測(cè)試場(chǎng)景執(zhí)行、指標(biāo)監(jiān)控及分析等比較復(fù)雜,所以性能測(cè)試一般需要借助測(cè)試工具來完成,LoadRunner是目前比較流行的一款自動(dòng)化性能測(cè)試工具[5]。
本文以NAST-PT21001“軟件性能效率測(cè)試”能力驗(yàn)證為例,詳細(xì)介紹性能效率能力驗(yàn)證性能測(cè)試需求理解分析、腳本編寫調(diào)試、場(chǎng)景設(shè)置運(yùn)行等過程。
NAST-PT21001“軟件性能效率測(cè)試”能力驗(yàn)證的被測(cè)樣品為“出入庫管理系統(tǒng)V1.0”,由組織機(jī)構(gòu)統(tǒng)一部署在阿里云,測(cè)試環(huán)境包括一臺(tái)服務(wù)器和互聯(lián)網(wǎng)網(wǎng)絡(luò)。出入庫管理系統(tǒng),包含“入庫管理”“出庫管理”和“庫存盤點(diǎn)”三個(gè)模塊,涉及“系統(tǒng)登錄”“入庫”“入庫記錄查詢”“出庫”和“出庫記錄查詢”五個(gè)主要功能點(diǎn)。入庫用戶可對(duì)物品進(jìn)行“入庫”“入庫記錄查詢”和“庫存盤點(diǎn)”操作,出庫用戶可對(duì)物品進(jìn)行“出庫”“出庫記錄查詢”和“庫存盤點(diǎn)”操作。系統(tǒng)內(nèi)設(shè)10個(gè)倉庫,共可容納100萬件物品。系統(tǒng)入庫用戶日常情況下進(jìn)行“系統(tǒng)登錄”“入庫”和“入庫記錄查詢”操作的使用占比為3:4:3。
根據(jù)組織機(jī)構(gòu)提供的軟件需求規(guī)格說明得到本次能力驗(yàn)證的性能效率需求:
(1)系統(tǒng)主要功能點(diǎn)支持100用戶并發(fā)操作,平均響應(yīng)時(shí)間在10秒以內(nèi);
(2)系統(tǒng)支持100入庫用戶在線操作,吞吐率應(yīng)達(dá)到10事務(wù)/秒;
(3)系統(tǒng)容量能夠符合倉庫容量需求。
收到測(cè)試樣品及其配套資料后,實(shí)驗(yàn)室首先對(duì)需求進(jìn)行了理解與分析,依據(jù)性能效率需求設(shè)計(jì)了對(duì)應(yīng)的測(cè)試用例:
表1 測(cè)試用例
針對(duì)性能效率需求1,因入庫用戶與出庫用戶的操作權(quán)限不同,所以采用兩個(gè)測(cè)試用例分別對(duì)應(yīng)入庫用戶與出庫用戶進(jìn)行驗(yàn)證;針對(duì)性能效率需求2,測(cè)試在線操作,需考慮日常情況下各操作的比例進(jìn)行驗(yàn)證;針對(duì)性能效率需求3,需驗(yàn)證系統(tǒng)容量能夠符合倉庫容量需求,即可容納100萬件物品,本次測(cè)試使用100個(gè)用戶每次入庫50件物品,并迭代運(yùn)行210次,共計(jì)入庫1050000件物品進(jìn)行驗(yàn)證。
基礎(chǔ)腳本可使用Loadrunner2020工具進(jìn)行錄制,錄制時(shí)采用基于URL的腳本錄制模式,以獲取更詳細(xì)的腳本信息,或者使用Fiddler4工具抓包,再使用Loadrunner2020工具將抓取的請(qǐng)求包轉(zhuǎn)換成對(duì)應(yīng)的腳本。
獲得基礎(chǔ)腳本后需要對(duì)腳本進(jìn)行調(diào)試,以保證腳本的正確性以及與測(cè)試用例的一致性;本次能力驗(yàn)證主要的調(diào)試工作有:
3.2.1 設(shè)置檢查點(diǎn)
腳本執(zhí)行一次可能服務(wù)器響應(yīng)是正常的,而執(zhí)行次數(shù)多了后有可能響應(yīng)失敗,所以需要在腳本中的關(guān)鍵位置設(shè)置檢查點(diǎn)校驗(yàn)服務(wù)器的返回?cái)?shù)據(jù),以確保測(cè)試過程中服務(wù)器響應(yīng)正常,腳本調(diào)試中使用典型的檢查點(diǎn)函數(shù):
3.2.2 參數(shù)化腳本
針對(duì)存在并發(fā)、多用戶在線等要求的性能效率需求,涉及多用戶同時(shí)操作的情況,需要對(duì)關(guān)鍵字段進(jìn)行參數(shù)化,以達(dá)到模擬多用戶的效果,本次能力驗(yàn)證需要參數(shù)化的字段主要有用戶名、密碼、倉庫號(hào)與物品類型。腳本參數(shù)化中最重要的是進(jìn)行參數(shù)化策略的配置,針對(duì)并發(fā)業(yè)務(wù)場(chǎng)景,用戶名采用的是Unique-Once的策略,保證每個(gè)Vuser對(duì)應(yīng)一個(gè)用戶賬號(hào);針對(duì)多用戶在線的綜合場(chǎng)景業(yè)務(wù),則需要針對(duì)不同業(yè)務(wù)操作使用不同的腳本,在用戶參數(shù)化過程中需要根據(jù)按照需求的比例區(qū)分用戶,不同的腳本設(shè)置不同的參數(shù)讀取開始行數(shù),以滿足不同的用戶進(jìn)行的不同業(yè)務(wù)操作[6-7]。綜合場(chǎng)景的參數(shù)化配置如圖1所示:
圖1 綜合場(chǎng)景參數(shù)化配置
3.2.3 設(shè)置關(guān)聯(lián)
在進(jìn)行入庫和出庫操作前,系統(tǒng)會(huì)針對(duì)每次請(qǐng)求生成一個(gè)隨機(jī)值:UUID,在執(zhí)行入庫與出庫操作請(qǐng)求時(shí),請(qǐng)求中帶有該UUID的值,所以為了使每次請(qǐng)求成功需要對(duì)該UUID進(jìn)行關(guān)聯(lián),本次使用典型的關(guān)聯(lián)函數(shù):
web_reg_save_param(“ingoods_uuid”,
與入庫操作不同的是出庫操作的UUID是兩個(gè)字符串的拼接值,所以需要對(duì)出庫的UUID關(guān)聯(lián)函數(shù)設(shè)置不同的邊界進(jìn)行分段截取,保存為不同的參數(shù),在執(zhí)行出庫請(qǐng)求的時(shí)候進(jìn)行參數(shù)的拼接。
3.2.4 倉庫容量驗(yàn)證腳本調(diào)試
性能效率需求3是本次能力驗(yàn)證的一個(gè)難點(diǎn),與常規(guī)的并發(fā)與響應(yīng)時(shí)間需求不同的是,此需求要通過腳本對(duì)物品的數(shù)據(jù)量進(jìn)行驗(yàn)證。本次測(cè)試使用100個(gè)用戶每次入庫50件物品,并迭代運(yùn)行210次,共計(jì)入庫1050000件物品進(jìn)行驗(yàn)證。在入庫操作完成后進(jìn)行庫存盤點(diǎn)操作,因?yàn)閹齑姹P點(diǎn)頁面響應(yīng)的每頁行數(shù)limit的值為10,為了一次性獲得所有入庫物品與倉庫的列表,所以將庫存盤點(diǎn)請(qǐng)求中l(wèi)imit的值改為100(10類物品對(duì)應(yīng)10個(gè)倉庫,數(shù)據(jù)行總數(shù)為100),然后將庫存盤點(diǎn)請(qǐng)求返回的每行數(shù)據(jù)的物品數(shù)量goodscount的值截取后保存在queryResponseBody數(shù)組中:
在腳本調(diào)試結(jié)束后的工作就是根據(jù)設(shè)計(jì)好的測(cè)試用例,建立對(duì)應(yīng)的場(chǎng)景用于運(yùn)行測(cè)試,場(chǎng)景的設(shè)置一般包括Vuser的數(shù)量、啟動(dòng)時(shí)間、退出時(shí)間、運(yùn)行時(shí)長(zhǎng)以及運(yùn)行時(shí)設(shè)置,另外針對(duì)像性能效率需求2這樣的多用戶在線的綜合場(chǎng)景,需要根據(jù)性能效率需求對(duì)不同的腳本配置對(duì)應(yīng)的用戶比例,以滿足不同的用戶進(jìn)行的不同業(yè)務(wù)操作需求,綜合場(chǎng)景配置如圖2所示:
圖2 綜合場(chǎng)景配置
在完成需求指定的性能測(cè)試場(chǎng)景執(zhí)行后,Loadrunner2020工具可以生成結(jié)果文件,測(cè)試結(jié)果整理如表2所示:
表2 測(cè)試結(jié)果
整理測(cè)試結(jié)果后按照實(shí)驗(yàn)室質(zhì)量體系要求編寫能力驗(yàn)證組織機(jī)構(gòu)要求上報(bào)的測(cè)試文檔,并按時(shí)交付即完成了本次軟件性能效率測(cè)試能力驗(yàn)證。
參加軟件性能效率能力驗(yàn)證,對(duì)參與的工程師而言是一個(gè)極佳的鍛煉性實(shí)踐機(jī)會(huì),對(duì)實(shí)驗(yàn)室而言,不僅在性能效率測(cè)試能力方面得到了有效的提升,而且加強(qiáng)了實(shí)驗(yàn)室執(zhí)行性能效率測(cè)試過程的規(guī)范化。
在軟件性能效率能力驗(yàn)證實(shí)踐中,實(shí)驗(yàn)室要在充分理解性能效率需求的基礎(chǔ)上設(shè)計(jì)測(cè)試用例,針對(duì)測(cè)試用例錄制并調(diào)試合適的腳本,設(shè)置場(chǎng)景運(yùn)行以獲得測(cè)試結(jié)果。實(shí)驗(yàn)室參加性能效率能力驗(yàn)證有助于提升實(shí)驗(yàn)室技術(shù)能力,對(duì)實(shí)驗(yàn)室建設(shè)具有重要意義,未來要積極參加包含性能效率在內(nèi)的多個(gè)方面的能力驗(yàn)證,從多角度、多方位、多層次全面提升實(shí)驗(yàn)室技術(shù)能力。