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