李金萌
(河南經(jīng)貿(mào)職業(yè)學(xué)院,河南 鄭州 450001)
LoadRunner 是性能測試工具中最常見的工具之一,它主要是有3 個組件,分別是Virtual User Gene rator,Controller,Analysis,分別是虛擬用戶產(chǎn)生器、控制器和分析器。 對于虛擬用戶產(chǎn)生器來說主要是代碼的生成以及調(diào)試腳本,Vuser 在方案中執(zhí)行的操作是用Vuser 腳本描述的。 運(yùn)行場景時,每個Vuser 去執(zhí)行Vuser 腳本。 對于控制器來說,設(shè)置場景參數(shù),管理虛擬用戶。 對于分析器來說,主要生成測試報告。 Load Runner 的版本有很多,本文主要是以LoadRunner12.55的版本為研究基礎(chǔ)。
在LoadRunner 安裝時需要注意的是安裝前,把所有的殺毒軟件和防火墻關(guān)閉; 若以前安裝過LoadRunner,需將其卸載干凈,必要時需要重新安裝系統(tǒng);安裝路徑不要帶中文字符;LoadRunner 12 已經(jīng)不再支持XP 系統(tǒng),瀏覽器建議使用IE10 以上版本。
在資產(chǎn)管理系統(tǒng)中使用LoadRunner 進(jìn)行自動化測試,將測試過程中的重要內(nèi)容進(jìn)行匯總,特別是對于虛擬用戶產(chǎn)生器中的思考時間、檢查點(diǎn)、集合點(diǎn),控制器中的場景設(shè)置,分析器中的圖表的新建和合并等。 在測試過程中,如果出現(xiàn)亂碼,不要忘記將字符編碼改為UTF-8。 下文將對測試過程中的部分內(nèi)容進(jìn)行講解。
從性能測試實(shí)現(xiàn)的角度來說,要真實(shí)地模擬用戶操作,就必須在測試腳本中讓各個操作之間等待一段時間。 思考時間是性能測試過程中最常見的設(shè)置,其代碼為:Lr_think_time(7);該代碼的意思是等待時間為7 s,如果需要修改等待時間直接修改即可。
檢查點(diǎn)是 LoadRunner 重要的部分之一。LoadRunner 中腳本回放成功,只是代表請求成功,并不能代表請求的業(yè)務(wù)成功。 要判斷業(yè)務(wù)是否成功,就需要在腳本中加入檢查點(diǎn)。 檢查點(diǎn)的原理是在回放腳本時搜索特定的文本或者字符串,從而驗(yàn)證請求業(yè)務(wù)的正確性。
檢查點(diǎn)函數(shù):web_reg_find。 比如對界面中“歡迎您”這幾個字設(shè)置檢查點(diǎn),就可以輸入以下代碼:
Web_reg_find(“Text=歡迎您”,LAST)
插入以上代碼就可以對歡迎您這幾個字進(jìn)行檢查點(diǎn)檢查,重點(diǎn)看是否登錄成功。
檢查點(diǎn)代碼要放在檢查的代碼之前,如要對保存是否成功進(jìn)行檢查,就要在保存操作代碼之前設(shè)置檢查點(diǎn)。 添加檢查點(diǎn)后點(diǎn)擊回放查看是否操作成功。
性能測試工具通常會模擬多個用戶對系統(tǒng)進(jìn)行操作,有些系統(tǒng)允許多個完全相同的用戶同時對完全相同的數(shù)據(jù)做完全相同的操作,有些則不允許。 比如,郵箱一般允許同一個賬號在多處登錄,而QQ 賬號肯定是不允許的。 再比如,注冊某個系統(tǒng)時,用戶名是不能有重復(fù),但密碼卻可以。 所以,這么多種情況都要用到參數(shù)化技巧。
LoadRunner 中參數(shù)化方法:
(1)選中需要參數(shù)化的字段的值。
(2)點(diǎn)擊鼠標(biāo)右鍵,選擇Replace with Parameter >Create New Parameter。
(3)彈出Select or Create Parameter 彈窗,輸入?yún)?shù)名稱,選擇參數(shù)類型。
(4)點(diǎn)擊Properties 按鈕,彈出Parameter Properties彈窗。
(5)設(shè)置參數(shù)值,參數(shù)取值、更新方式。
(6) 運(yùn) 行 時 設(shè) 置- Log 中, 選 擇 Parameter substitution。
(7)回放腳本的日志中,可以查看參數(shù)的具體取值情況。
此處為回放后的擴(kuò)展日志,打開后可查看回放中的參數(shù)取值,如圖1 所示。
圖1 參數(shù)化設(shè)置
事務(wù)(Transaction):為了衡量服務(wù)器的性能,需要定義事務(wù)。 比如:在腳本中有一個數(shù)據(jù)查詢操作,為了衡量服務(wù)器執(zhí)行查詢操作的性能,可以把這個操作定義為一個事務(wù),這樣在運(yùn)行測試腳本時,LoadRunner 運(yùn)行到該事務(wù)的開始點(diǎn)時,就會開始計時,直到運(yùn)行到該事務(wù)的結(jié)束點(diǎn),計時結(jié)束。 這個事務(wù)的運(yùn)行時間會在結(jié)果中顯示。
添加事務(wù)操作可以在錄制過程中進(jìn)行,也可以在錄制結(jié)束后進(jìn)行。 LoadRunner 允許在腳本中添加不限數(shù)量的事務(wù)。 主要代碼:
Lr_start_tramsaction(“l(fā)ogin”);
Lr_end_tramsaction(“l(fā)ogin”,LA_AUTO);
集合點(diǎn)的意思是等到特定的用戶數(shù)后再一起執(zhí)行某個操作,比如一起保存或一起提交。 一般情況下使用不到集合點(diǎn),不過,訂票系統(tǒng)或者促銷類可能會需要用到,比如說某個促銷品的促銷時間在8 點(diǎn)到8 點(diǎn)30分,這樣就可能出現(xiàn)在8 點(diǎn)時很多人一起提交的場景。
集合點(diǎn)函數(shù)可以幫助我們生成有效可控的并發(fā)操作。 雖然在Controller 中多用戶負(fù)載的Vuser 是一起開始運(yùn)行腳本的,但是由于計算機(jī)的串行處理機(jī)制,腳本的運(yùn)行隨著時間的推移,并不能完全達(dá)到同步。 這個時候需要手工的方式讓用戶在同一時間點(diǎn)上進(jìn)行操作來測試系統(tǒng)并具有處理的能力,而集合點(diǎn)函數(shù)就能實(shí)現(xiàn)這個功能。 集合點(diǎn)只需要在腳本中添加lr _rendezvous()函數(shù)即可。
代碼為:
Lr_rendezvous(“add_save”)
下圖為集合點(diǎn)和事務(wù)函數(shù),如圖2 所示。
圖2 事務(wù)和集合點(diǎn)設(shè)置
性能測試的場景,可以理解為功能測試中的用例,即性能測試的場景就是性能測試的用例。 性能測試的場景是為了要實(shí)現(xiàn)特定的測試目標(biāo)而對應(yīng)用執(zhí)行的壓測活動。 性能測試場景的設(shè)計與執(zhí)行是整個性能測試活動的核心與靈魂,沒有完整的場景設(shè)計就無法達(dá)到測試的目的,沒有合理的場景設(shè)計就不會發(fā)現(xiàn)系統(tǒng)的性能缺陷。 所開發(fā)的測試腳本,所預(yù)埋的測試數(shù)據(jù)都是為了實(shí)現(xiàn)特定場景所準(zhǔn)備的。
性能測試中的場景設(shè)計是實(shí)施性能測試的基礎(chǔ),只有合理的設(shè)計測試場景才能獲得有價值的測試數(shù)據(jù),為接下來的確認(rèn)瓶頸、系統(tǒng)調(diào)優(yōu)打下基礎(chǔ)。 場景(Scenario)是一種用來模擬大量用戶操作的技術(shù)手段,通過配置和執(zhí)行場景向服務(wù)器產(chǎn)生負(fù)載,驗(yàn)證系統(tǒng)的各項(xiàng)性能指標(biāo)是否達(dá)到用戶要求,而Controller 可以幫助場景的設(shè)計、執(zhí)行以及監(jiān)控進(jìn)行管理。
此處值得注意的是場景設(shè)計與運(yùn)行是在錄制編輯腳本完成后進(jìn)行的,設(shè)計與運(yùn)行場景之前最好對腳本進(jìn)行檢查。 如腳本設(shè)置了集合點(diǎn),點(diǎn)擊此處進(jìn)行設(shè)置。
對于場景的設(shè)計中主要是在design 中的設(shè)置,主要的內(nèi)容有場景名稱、虛擬用戶的開始用戶數(shù)、期間的持續(xù)時長、停止時虛擬用戶的情況等,其中比較難的地方是分組時對每組的情況進(jìn)行設(shè)置,在此處分組是比較復(fù)雜的。 場景設(shè)計完成后點(diǎn)擊底部的Run 按鈕到運(yùn)行界面,點(diǎn)擊Strat 按鈕開始運(yùn)行,如圖3 所示。
圖3 Loadrunner 運(yùn)行界面
LoadRunner 提供了Analysis 應(yīng)用對性能測試的結(jié)果進(jìn)行輔助分析。 Analysis 應(yīng)用可以根據(jù)用戶在測試中獲得的性能計數(shù)器數(shù)據(jù)生成各種圖表,并提供對圖表進(jìn)行合并、分解等功能。 在場景運(yùn)行完成后點(diǎn)擊此處,打開Analysis。
在LoadRunner 中,主要是兩個方面內(nèi)容,第一個是添加新的圖表,具體操作為點(diǎn)擊左側(cè)空白處可添加圖表。 第二個是合并圖表,具體操作為在圖表空白處右鍵點(diǎn)擊此處合并圖表,選擇要進(jìn)行合并的圖表,點(diǎn)擊OK 進(jìn)行合并。
特別是對于集合點(diǎn)來說,手動測試是很難實(shí)現(xiàn)的,但是可以在控制器中設(shè)置集合點(diǎn)策略,并通過分析器中的圖表可以清楚的看出來每個集合點(diǎn)的最少、最多以及平均的時間。 這是手動測試最難的地方,具體如圖4 所示。
圖4 集合點(diǎn)圖表
本文主要是使用的是LoadRunner 軟件進(jìn)行性能測試,使用的系統(tǒng)是資產(chǎn)管理系統(tǒng),通過以上關(guān)于LoadRunner 中事務(wù)、集合點(diǎn)、參數(shù)化、檢查點(diǎn)的設(shè)置,可以更加方便地對資產(chǎn)管理系統(tǒng)進(jìn)行性能測試,通過文中的圖表也可得出相應(yīng)操作所消耗的時間,這對于手動測試來說,是比較困難的,而且準(zhǔn)確性有待考量。 通過自動化測試工具的使用,不僅縮短了測試時間,也讓測試數(shù)據(jù)更加準(zhǔn)確有效。