肖祥春,李偉洪,王麗
(1.廣東省科技基礎(chǔ)條件平臺中心,廣東 廣州 510000;2.廣東省高性能計算重點實驗室,廣東 廣州 510000;3.中國人民解放軍95269 部隊)
能力驗證作為一種重要的外部質(zhì)量評價手段,可有效評估確認(rèn)實驗室相關(guān)技術(shù)能力[1]。能力驗證的目的是保證實驗室的運行滿足質(zhì)量管理的要求,出具的結(jié)果可信可靠,對實驗室的質(zhì)量控制起到補充和完善的作用[2]。軟件測試能力驗證由CNAS 組織,開展過效率測試、功能性測試及易用性測試能力驗證活動[3]。軟件的性能效率作為軟件八大特性之一,是評估軟件質(zhì)量的重要指標(biāo)[4],因此其測試過程的規(guī)范性和結(jié)果的準(zhǔn)確性十分重要。
性能效率測試是指在最大限度地模擬系統(tǒng)在實際使用環(huán)境下的業(yè)務(wù)壓力或用戶場景來運行系統(tǒng),同時在系統(tǒng)運行過程中采集相關(guān)性能指標(biāo),并在測試結(jié)束后對運行過程中采集的指標(biāo)數(shù)據(jù)進行分析,從而判斷系統(tǒng)性能是否達到預(yù)期要求。由于性能測試場景執(zhí)行、指標(biāo)監(jiān)控及分析等比較復(fù)雜,所以性能測試一般需要借助測試工具來完成,LoadRunner是目前比較流行的一款自動化性能測試工具[5]。
本文以NAST-PT21001“軟件性能效率測試”能力驗證為例,詳細(xì)介紹性能效率能力驗證性能測試需求理解分析、腳本編寫調(diào)試、場景設(shè)置運行等過程。
NAST-PT21001“軟件性能效率測試”能力驗證的被測樣品為“出入庫管理系統(tǒng)V1.0”,由組織機構(gòu)統(tǒng)一部署在阿里云,測試環(huán)境包括一臺服務(wù)器和互聯(lián)網(wǎng)網(wǎng)絡(luò)。出入庫管理系統(tǒng),包含“入庫管理”“出庫管理”和“庫存盤點”三個模塊,涉及“系統(tǒng)登錄”“入庫”“入庫記錄查詢”“出庫”和“出庫記錄查詢”五個主要功能點。入庫用戶可對物品進行“入庫”“入庫記錄查詢”和“庫存盤點”操作,出庫用戶可對物品進行“出庫”“出庫記錄查詢”和“庫存盤點”操作。系統(tǒng)內(nèi)設(shè)10個倉庫,共可容納100萬件物品。系統(tǒng)入庫用戶日常情況下進行“系統(tǒng)登錄”“入庫”和“入庫記錄查詢”操作的使用占比為3:4:3。
根據(jù)組織機構(gòu)提供的軟件需求規(guī)格說明得到本次能力驗證的性能效率需求:
(1)系統(tǒng)主要功能點支持100用戶并發(fā)操作,平均響應(yīng)時間在10秒以內(nèi);
(2)系統(tǒng)支持100入庫用戶在線操作,吞吐率應(yīng)達到10事務(wù)/秒;
(3)系統(tǒng)容量能夠符合倉庫容量需求。
收到測試樣品及其配套資料后,實驗室首先對需求進行了理解與分析,依據(jù)性能效率需求設(shè)計了對應(yīng)的測試用例:

表1 測試用例
針對性能效率需求1,因入庫用戶與出庫用戶的操作權(quán)限不同,所以采用兩個測試用例分別對應(yīng)入庫用戶與出庫用戶進行驗證;針對性能效率需求2,測試在線操作,需考慮日常情況下各操作的比例進行驗證;針對性能效率需求3,需驗證系統(tǒng)容量能夠符合倉庫容量需求,即可容納100萬件物品,本次測試使用100個用戶每次入庫50件物品,并迭代運行210次,共計入庫1050000件物品進行驗證。
基礎(chǔ)腳本可使用Loadrunner2020工具進行錄制,錄制時采用基于URL的腳本錄制模式,以獲取更詳細(xì)的腳本信息,或者使用Fiddler4工具抓包,再使用Loadrunner2020工具將抓取的請求包轉(zhuǎn)換成對應(yīng)的腳本。
獲得基礎(chǔ)腳本后需要對腳本進行調(diào)試,以保證腳本的正確性以及與測試用例的一致性;本次能力驗證主要的調(diào)試工作有:
3.2.1 設(shè)置檢查點
腳本執(zhí)行一次可能服務(wù)器響應(yīng)是正常的,而執(zhí)行次數(shù)多了后有可能響應(yīng)失敗,所以需要在腳本中的關(guān)鍵位置設(shè)置檢查點校驗服務(wù)器的返回數(shù)據(jù),以確保測試過程中服務(wù)器響應(yīng)正常,腳本調(diào)試中使用典型的檢查點函數(shù):

3.2.2 參數(shù)化腳本
針對存在并發(fā)、多用戶在線等要求的性能效率需求,涉及多用戶同時操作的情況,需要對關(guān)鍵字段進行參數(shù)化,以達到模擬多用戶的效果,本次能力驗證需要參數(shù)化的字段主要有用戶名、密碼、倉庫號與物品類型。腳本參數(shù)化中最重要的是進行參數(shù)化策略的配置,針對并發(fā)業(yè)務(wù)場景,用戶名采用的是Unique-Once的策略,保證每個Vuser對應(yīng)一個用戶賬號;針對多用戶在線的綜合場景業(yè)務(wù),則需要針對不同業(yè)務(wù)操作使用不同的腳本,在用戶參數(shù)化過程中需要根據(jù)按照需求的比例區(qū)分用戶,不同的腳本設(shè)置不同的參數(shù)讀取開始行數(shù),以滿足不同的用戶進行的不同業(yè)務(wù)操作[6-7]。綜合場景的參數(shù)化配置如圖1所示:

圖1 綜合場景參數(shù)化配置
3.2.3 設(shè)置關(guān)聯(lián)
在進行入庫和出庫操作前,系統(tǒng)會針對每次請求生成一個隨機值:UUID,在執(zhí)行入庫與出庫操作請求時,請求中帶有該UUID的值,所以為了使每次請求成功需要對該UUID進行關(guān)聯(lián),本次使用典型的關(guān)聯(lián)函數(shù):
web_reg_save_param(“ingoods_uuid”,

與入庫操作不同的是出庫操作的UUID是兩個字符串的拼接值,所以需要對出庫的UUID關(guān)聯(lián)函數(shù)設(shè)置不同的邊界進行分段截取,保存為不同的參數(shù),在執(zhí)行出庫請求的時候進行參數(shù)的拼接。
3.2.4 倉庫容量驗證腳本調(diào)試
性能效率需求3是本次能力驗證的一個難點,與常規(guī)的并發(fā)與響應(yīng)時間需求不同的是,此需求要通過腳本對物品的數(shù)據(jù)量進行驗證。本次測試使用100個用戶每次入庫50件物品,并迭代運行210次,共計入庫1050000件物品進行驗證。在入庫操作完成后進行庫存盤點操作,因為庫存盤點頁面響應(yīng)的每頁行數(shù)limit的值為10,為了一次性獲得所有入庫物品與倉庫的列表,所以將庫存盤點請求中l(wèi)imit的值改為100(10類物品對應(yīng)10個倉庫,數(shù)據(jù)行總數(shù)為100),然后將庫存盤點請求返回的每行數(shù)據(jù)的物品數(shù)量goodscount的值截取后保存在queryResponseBody數(shù)組中:

在腳本調(diào)試結(jié)束后的工作就是根據(jù)設(shè)計好的測試用例,建立對應(yīng)的場景用于運行測試,場景的設(shè)置一般包括Vuser的數(shù)量、啟動時間、退出時間、運行時長以及運行時設(shè)置,另外針對像性能效率需求2這樣的多用戶在線的綜合場景,需要根據(jù)性能效率需求對不同的腳本配置對應(yīng)的用戶比例,以滿足不同的用戶進行的不同業(yè)務(wù)操作需求,綜合場景配置如圖2所示:

圖2 綜合場景配置
在完成需求指定的性能測試場景執(zhí)行后,Loadrunner2020工具可以生成結(jié)果文件,測試結(jié)果整理如表2所示:

表2 測試結(jié)果
整理測試結(jié)果后按照實驗室質(zhì)量體系要求編寫能力驗證組織機構(gòu)要求上報的測試文檔,并按時交付即完成了本次軟件性能效率測試能力驗證。
參加軟件性能效率能力驗證,對參與的工程師而言是一個極佳的鍛煉性實踐機會,對實驗室而言,不僅在性能效率測試能力方面得到了有效的提升,而且加強了實驗室執(zhí)行性能效率測試過程的規(guī)范化。
在軟件性能效率能力驗證實踐中,實驗室要在充分理解性能效率需求的基礎(chǔ)上設(shè)計測試用例,針對測試用例錄制并調(diào)試合適的腳本,設(shè)置場景運行以獲得測試結(jié)果。實驗室參加性能效率能力驗證有助于提升實驗室技術(shù)能力,對實驗室建設(shè)具有重要意義,未來要積極參加包含性能效率在內(nèi)的多個方面的能力驗證,從多角度、多方位、多層次全面提升實驗室技術(shù)能力。