王應棟 李黔蜀
摘要:文章使用LoadRunner12.6對民宿信息管理平臺進行性能測試。首先,根據(jù)測試需求編寫測試計劃;然后錄制相關腳本,針對測試需求,增強腳本、壓測和結果分析,重點展示如何通過LoadRunner12.6實現(xiàn)性能測試的詳細測試策略;最后整理測試分析報告。希望該方法可以對使用LoadRunner應用到具體項目中的同行起到一定的指導作用。
關鍵詞:性能測試;參數(shù)化;集合點;關聯(lián);
引言
軟件測試是軟件開發(fā)中不可缺少的一個重要環(huán)節(jié),是確保軟件質(zhì)量的重要手段[1,2]。其中,性能測試是驗證軟件能否達到預期性能標準,提前發(fā)現(xiàn)并修復軟件潛在的性能缺陷,為軟件上線后高效、穩(wěn)定運行奠定基礎。本文結合民宿信息管理平臺項目,詳細介紹性能測試流程。
1.LoadRunner12.6介紹
LoadRunner12.6是一款預測系統(tǒng)行為和性能的工業(yè)標準級負載測試工具[3,4]。在LoadRunner12.6的幫助下,用戶可以模擬上千萬用戶實施并發(fā)負載及實時性能監(jiān)測的方式來確認和查找問題。LoadRunner12.6 能夠對整個企業(yè)架構進行測試,它通過模擬實際用戶的操作行為和實行實時性能監(jiān)測,來幫助用戶更快的查找和發(fā)現(xiàn)問題。此外,LoadRunner12.6 能支持廣泛的協(xié)議和技術,可以為用戶的特殊環(huán)境提供特殊的解決方案。LoadRunner12.6是主要有三個部分組成,分別是VuGen(Virtual User Generator)、Controller、Analysis。VuGen是用于Vuser腳本開發(fā)的工具,模擬真實場景操作的過程;Controller是壓測Vuser腳本場景的工具,LoadRunner12.6利用Controller模擬多用戶的工作環(huán)境對應用系統(tǒng)進行測試;Analysis是對測試數(shù)據(jù)進行分析的工具,Analysis提供豐富的圖表幫助分析。
2.測試過程
本文基于LoadRunner12.6對民宿信息管理平臺進行性能測試流程如圖1所示。
2. 測試需求
1、系統(tǒng)支持50用戶并發(fā),響應時間在5秒以內(nèi);
2、在20%用戶處于登錄狀態(tài),20%用戶處于新增民宿,20%用戶處于注銷民宿,40%用戶處于民宿信息查詢狀態(tài)下,系統(tǒng)50用戶在線的吞吐率(TPS)應達到30事務/秒。
2.2測試計劃
描述軟件性能測試的范圍、方法、資源、進度。測試計劃[5]目的主要有:明確測試范圍、測試對象;明確測試目標;明確測試環(huán)境需求,包括:測試需要的軟、硬件環(huán)境以及測試人力需求;確定測試方案,測試的方法和步驟[6];制定測試工作的時間安排;確定測試需要輸出的結果和結果表現(xiàn)形式。
2.3測試設計及執(zhí)行
測試設計包含三項內(nèi)容:環(huán)境確認、性能測試、測試方法。環(huán)境確認是指由于腳本開發(fā)環(huán)境和實際測試環(huán)境不同,在開發(fā)環(huán)境下開發(fā)的測試腳本需要到測試環(huán)境中進行確認測試。如何進行環(huán)境確認是指運用VuGen逐一在測試環(huán)境中執(zhí)行所有腳本,確認腳本能夠在測試環(huán)境中順利運行。性能測試是指在一定量的并發(fā)情況下測試以下指標:業(yè)務的平均交易響應時間、并發(fā)操作下的響應時間、混合場景下的吞吐率。通過性能測試,模擬實際生產(chǎn)環(huán)境中在民宿信息管理平臺中的壓力情況,得到此時的民宿信息管理平臺性能表現(xiàn)數(shù)據(jù)。性能測試的測試方法是指按照性能測試需求設置測試場景。設置50并發(fā)量,記錄每次測試數(shù)據(jù),收集系統(tǒng)性能變化曲線。
測試用例主要用于指導性能測試人員進行性能測試,并對性能測試場景設計與執(zhí)行給出參考信息,同時適用項目經(jīng)理、開發(fā)經(jīng)理、測試經(jīng)理及其他人員對被測系統(tǒng)的性能評測點進行評估與了解。
并發(fā)測試XQ_001:
使用LoadRunner12.6 Virtual User Generator錄制民宿信息管理平臺的操作過程,生成性能測試腳本,手動設置思考時間,關閉緩存,將系統(tǒng)登錄、民宿信息新增、民宿信息查詢、民宿信息注銷動作各作為一個事務,在民宿信息查詢。
表2中,參數(shù)化設置:用test001~test050進行腳本用戶名參數(shù)化,新增格式使用temp{HostIDHead}-{IDTail},HostIDHead參數(shù)化數(shù)據(jù)從00~49,并使用Unique+Once設置;IDTail參數(shù)化從1~1000的%04d格式設置。集合點設置:查詢事務之前,lr_rendezvous("jihedian")。檢查點設置:登錄事務開始之后,web_reg_find("Text=歡迎您",LAST);注銷事務開始之后,web_reg_find("Text=注銷成功",LAST)。關聯(lián)設置:查詢事務開始之后,格式為:
web_reg_save_param_regexp(
"ParamName=id",
"RegExp=\\{\"dataList\":\\[\\{\"id\":(.*?),",
SEARCH_FILTERS,
"Scope=Body",
"IgnoreRedirections=No",
LAST);
吞吐率測試XQ_002:
表3是吞吐率測試用例。VuGen:使用LoadRunner12.6 Virtual User Generator分別錄制4個某民宿信息管理系統(tǒng)的操作過程,生成性能測試腳本,手動設置思考時間,關閉緩存,關閉每個動作作為一個事務。
表3中,系統(tǒng)登錄TPScon:用test001~test010進行腳本用戶名參數(shù)化,使用Unique+Once讓一個虛擬用戶可以使用唯一的賬號登錄,登錄事務使用Login_user表示。新增民宿InsertHostNew:用test011~test020進行腳本用戶名參數(shù)化,新增格式使用temp{HostIDHead}-{IDTail},HostIDHead參數(shù)化數(shù)據(jù)從10~19,并使用Unique+Once設置;IDTail參數(shù)化從1~1000的%04d格式設置,最后得到一個虛擬用戶可以使用唯一的用戶賬號進行新增民宿功能,新增事務使用insertHost表示。注銷民宿ExitHouseNew:用test021~test030進行腳本用戶名參數(shù)化,并使用Unique+Once設置;對民宿編號后面的數(shù)字使用{num1}進行參數(shù)化,參數(shù)化數(shù)據(jù)從-00021~-00031;對民宿地址使用{id}進行關聯(lián),最后得到一個虛擬用戶可以使用唯一的用戶賬號進行注銷民宿功能,注銷事務用ExitHost表示。民宿信息查詢SearchNew:用test031~test050進行腳本用戶名參數(shù)化,最后得到一個虛擬用戶可以使用唯一的用戶賬號進行民宿查詢功能,查詢事務用searchHost表示。
Controller:場景設計使用百分比模式。其中,系統(tǒng)登錄TPScon 20%、新增民宿InsertHostNew 20%、注銷民宿ExitHouseNew 20%、民宿信息查詢SearchNew40%。
3.測試結果分析
在利用LoadRunner12.6 Controller壓測整個測試過程后,使用LoadRunner12.6 Analysis生成相應的圖表和報告,包括概要報告、運行Vuser、每秒點擊次數(shù)、吞吐量、事務摘要、平均事務響應時間等,通過分析這些測試指標來評估系統(tǒng)性能。
并發(fā)測試響應時間如圖2所示。
由圖2可知,此次并發(fā)測試中的“系統(tǒng)登錄”操作的事務平均響應時間為0.149s;“新增民宿”操作的事務平均響應時間為0.118s;在“民宿信息查詢”前加入集合點操作,事務平均響應時間為0.596s;“注銷民宿”操作的事務平均響應時間為0.385s。同時,此次測試需求操作的響應時間小于5s。顯而易見,“系統(tǒng)登錄”、“新增民宿”、“民宿信息查詢”、“注銷民宿”四項操作的平均響應時間均小于5s。因此,此次并發(fā)測試符合性能測試條件要求。
并發(fā)測試其他測試結果如表4所示。
如表4可知,此次并發(fā)測試中TPS的最大數(shù)值為62.450事務/秒。由此可知,在運行性能測試的過程中,測試場景中每秒最多同時運行62.450項事務。系統(tǒng)在負載測試期間,虛擬用戶從Web服務器接收或發(fā)送的數(shù)據(jù),在160s處出現(xiàn)最大吞吐量 784769675字節(jié)。具體事務數(shù)如3所示。
由圖3可知,“系統(tǒng)登錄”操作的成功事務數(shù)為4421,且不存在錯誤事務?!靶略雒袼蕖辈僮鞯某晒κ聞諗?shù)為4421,且不存在錯誤事務?!懊袼扌畔⒉樵儭辈僮鞯某晒κ聞諗?shù)為4380,且不存在錯誤事務。“注銷民宿”操作的成功事務數(shù)為4380,且不存在錯誤事務。
吞吐率測試TPS如圖4所示。
由圖4可知,系統(tǒng)50用戶在線下的TPS最大數(shù)值為59.875事務/秒,平均值為52.254事務/秒。同時,此次測試需求TPS數(shù)值應超過30事務/秒。因此本次的吞吐率測試TPS數(shù)值符合測量要求。
吞吐率測試用戶數(shù)目如圖5所示。
由圖5可知,此次吞吐率測試場景存在10名用戶處于登錄狀態(tài),10名用戶處于新增民宿狀態(tài),10名用戶處于注銷用戶狀態(tài),20名用戶處于民宿信息查詢狀態(tài)的測試場景。同時,測試需求為:20%用戶處于登錄狀態(tài),20%用戶處于新增民宿狀態(tài),20%用戶處于注銷用戶狀態(tài),40%用戶處于民宿信息查詢狀態(tài)。由于此次吞吐率測試中的虛擬用戶總數(shù)為50名虛擬用戶。因此,在設置吞吐率測試場景時,需設置10名用戶處于登錄狀態(tài),10名用戶處于新增民宿狀態(tài),10名用戶處于注銷用戶狀態(tài),20名用戶處于民宿信息查詢狀態(tài)的測試場景。綜上所述,此次吞吐率測試符合性能測試條件要求。
吞吐率測試其他測試結果如表5所示。
如表5可知,此次吞吐率測試中的“系統(tǒng)登錄”操作的事務平均響應時間為0.019s,“新增民宿”操作的事務平均響應時間為0.031s,“民宿信息查詢”操作的事務平均響應時間為0.064s,“注銷民宿”操作的事務平均響應時間為0.083s。系統(tǒng)在負載測試期間,虛擬用戶從Web服務器接收或發(fā)送的數(shù)據(jù),在224s處出現(xiàn)最大吞吐量 205516769625字節(jié)。具體事務數(shù)如3所示。
由圖6可知,“系統(tǒng)登錄”操作的成功事務數(shù)為3221,且不存在錯誤事務?!靶略雒袼蕖辈僮鞯某晒κ聞諗?shù)為2616,且不存在錯誤事務。“民宿信息查詢”操作的成功事務數(shù)為2925,且不存在錯誤事務。“注銷民宿”操作的成功事務數(shù)為2460,且不存在錯誤事務。
4.總結
通過添加事務、檢查點、參數(shù)化、集合點、關聯(lián)增強腳本,手動設置思考時間,關閉緩存,關閉每個動作作為一個事務的測試策略,最后得到的測試結果符合測試需求,這證明本文的增強腳本和測試策略是可行的。在其他類似的利用LoadRunner工具應用到具體Web系統(tǒng)性能測試項目里面,本文的測試策略具有廣泛的實用推廣價值。
參考文獻:
[1]于涌,王磊,曹向志,高樓,于躍. 精通軟件性能測試與LoadRunner最佳實戰(zhàn)[M].人民郵電出版社:軟件測試叢書, 201306.762.
[2]李旭東,朱立谷.基于LoadRunner的參數(shù)化策略的研究與應用[J].計算機應用與軟件,2012,29(12):232-236.