Vuser 發(fā)生器(Visual User Generator, VuGen)主要通過捕獲客戶端向服務(wù)器發(fā)送的HTTP請求,將這些請求錄制成腳本,在回放時將捕獲的HTTP請求再次發(fā)送继控,以達(dá)到模擬客戶行為的目的。
Vuser 主要是用來捕獲最終用戶業(yè)務(wù)流程創(chuàng)建和創(chuàng)建自動化測試腳本蟀伸,即生成測試腳本僵闯。
VuGen 是錄制測試腳本、編輯與完善測試腳本的一個平臺癞谒,支持C語言語法底燎。
3.1 腳本錄制
? ? 3.1.1 錄制腳本環(huán)節(jié)的關(guān)鍵點(diǎn)是選擇正確的協(xié)議,常用方法如下:
? ? ? ? (1) 跟開發(fā)確認(rèn)數(shù)據(jù)通信所采用的協(xié)議弹砚;
? ? ? ? (2) 通過概要或詳細(xì)設(shè)計手冊獲知双仍;
? ? ? ? (3) 使用協(xié)議分析工具捕獲通信時的數(shù)據(jù)包并進(jìn)行分析,然后確定協(xié)議桌吃,例如:Fiddler朱沃;
? ? ? ? (4) 經(jīng)驗(yàn)判斷法;
? ? ? ? (5) LoadRunner 11.0 提供了一個工具 Protocol Advisor茅诱;
這個在我的實(shí)際應(yīng)用中相對比較簡單逗物,因?yàn)槲沂侵苯訉懣蛻舳撕头?wù)端請求接口的,所以只需要用 Web(HTTP\HTML)協(xié)議瑟俭;
? ? 3.1.2 開始錄制腳本
注意一下:錄制的時候或者是我們自己寫腳本時翎卓,代碼都要放在Action部分,因?yàn)関user_init和vuser_end兩部分的代碼只會執(zhí)行一次摆寄。
3.2 Recording Option 設(shè)置
Tools->Recording Options 或者 Ctrl + F7 可打開該配置對話框失暴。
這里要重點(diǎn)關(guān)注:Recording、Advanced和Correlation 三個選項(xiàng)卡椭迎。
3.3 Run-Time Settings 設(shè)置
該設(shè)置主要用于腳本運(yùn)行過程中的策略設(shè)置锐帜。可以從 Vuser -> Run-Time Settings 菜單或按 F4 打開畜号。
此項(xiàng)設(shè)置在實(shí)際腳本調(diào)試和場景運(yùn)行時都使用頻繁缴阎,所以我們來重點(diǎn)看下這幾個選項(xiàng)卡:
General-Run Logic:
Number of Iterations:設(shè)置運(yùn)行時腳本迭代的次數(shù)。這只會影響在單位時間內(nèi)客戶端向服務(wù)器提交的HTTP請求數(shù)简软。
General-Pacing:
設(shè)置腳本迭代過程中腳本之間的時間間隔蛮拔。有3種條件設(shè)置:
As soon as the previous iteration ends:上一次迭代執(zhí)行結(jié)束后馬上執(zhí)行下一次迭代。這個選項(xiàng)對服務(wù)器壓力最大痹升,因?yàn)樵趩挝粫r間內(nèi)提交的請求數(shù)最多建炫。所以在做壓力測試時,建議選擇該選項(xiàng)疼蛾。
After the previous iteration ends:
? ? Fixed:上一次迭代執(zhí)行結(jié)束后肛跌,等待一個固定時間后,再執(zhí)行下一次迭代;
? ? Random:上一次迭代執(zhí)行結(jié)束后衍慎,等待一個隨機(jī)時間后转唉,再執(zhí)行下一次迭代。隨機(jī)時間范圍可以設(shè)置稳捆。
At Fixed/Random intervals:表示上一次迭代開始到下一次迭代開始之間的時間間隔赠法,如果設(shè)置的時間達(dá)到要求后,不管上一次迭代執(zhí)行是否完成乔夯,都會開始下一次迭代砖织。Fixed表示一個固定的時間長度,Random表示一個隨機(jī)的時間長度末荐,隨機(jī)時間范圍可以設(shè)置侧纯。
General-Log:
這個設(shè)置項(xiàng)在調(diào)試腳本時應(yīng)用最多,主要用于設(shè)置腳本回放時的日志格式甲脏。
Enable logging:設(shè)置日志是否生效茂蚓,即在場景運(yùn)行時是否收集日志信息。
Send messages only when an error occurs:指當(dāng)腳本回放時出現(xiàn)錯誤信息才收集日志
Always send messages:收集所有日志信息剃幌,不管對錯聋涨。
關(guān)于日志的類型:
Standard log:默認(rèn)為標(biāo)準(zhǔn)日志
Extended log:擴(kuò)展日志
? ? Parameter substitution:表示客戶端提交給服務(wù)端的所有參數(shù)會記錄在日志中
? ? Data returned by server:不僅包含提交的參數(shù)信息,還包含服務(wù)端返回給客戶端的信息负乡;
? ? Advanced trace:所有客戶端提交和服務(wù)端返回的信息都會被記錄牍白;
LoadRunner 一共包括4類日志文件: Replay Log、Recording Log抖棘、Correlation Results 和 Generation Log茂腥。
General-Think Time:
設(shè)置用戶操作的思考時間,在這里指的是每個HTTP請求之間的時間間隔切省。有6個設(shè)置項(xiàng):
(1)Ignore think time:運(yùn)行腳本時忽略思考時間最岗,該設(shè)置項(xiàng)對服務(wù)端壓力最大
(2)Replay think time:
? ? (3)As recorded:按錄制時的思考時間來回放
? ? (4)Multiply recorded think time:根據(jù)錄制時思考時間的整數(shù)倍來運(yùn)行
? ? (5)Use random percentage of recorded think time:分別設(shè)置一個最大值和一個最小值,并從中選出一個隨機(jī)值朝捆。實(shí)際應(yīng)用中經(jīng)常會采用這種模式般渡。
(6)Limit think time to:設(shè)置 think time 的最大值。假如上面幾種設(shè)置的思考時間超過該設(shè)置值芙盘,以該限制時間為準(zhǔn)驯用;
General-Miscellaneous:
包含3個設(shè)置項(xiàng):
Error Handling:表示腳本運(yùn)行出錯時所采取的措施,缺省值是出錯時仍然繼續(xù)執(zhí)行腳本
Multi threading:表示運(yùn)行時把虛擬用戶當(dāng)做進(jìn)程還是線程來處理儒老。注:當(dāng)以進(jìn)程方式運(yùn)行虛擬用戶時蝴乔,在負(fù)載機(jī)的任務(wù)管理器中可以看到,每個虛擬用戶都會產(chǎn)生一個進(jìn)程驮樊,名為 mmdrv.exe薇正。在實(shí)際應(yīng)用中片酝,從這項(xiàng)數(shù)據(jù)可以計算出每臺負(fù)載機(jī)最多可以并發(fā)多少虛擬用戶數(shù)。
Automatic Transactions:設(shè)置事務(wù)的模式挖腰。
? ? Define each action as a transaction:將一個 action 看作一個事務(wù)钠怯;
? ? Define each step as a transaction: 將每一個操作步驟看作一個事務(wù);
3.4 腳本完善
直接錄制的腳本其實(shí)并不能很好的適應(yīng)實(shí)際的場景運(yùn)行曙聂,所以我們還需要對腳本進(jìn)行一些完善:
3.4.1 插入事務(wù)
后續(xù)在設(shè)計腳本時會深入了解該方法,這個地方只提醒一件事情:LoadRunner 在自動判斷事務(wù)結(jié)束狀態(tài)時是以結(jié)束函數(shù)是否運(yùn)行為標(biāo)準(zhǔn)鞠鲜,只要結(jié)束事務(wù)的函數(shù)運(yùn)行了宁脊,就將狀態(tài)置為 PASS。所以我們在實(shí)際應(yīng)用時贤姆,盡量設(shè)置檢查點(diǎn)榆苞,再根據(jù)檢查點(diǎn)來判斷事務(wù)是否成功。
3.4.2 插入集合點(diǎn)
集合點(diǎn)是指在腳本中插入一個集合點(diǎn)函數(shù)霞捡,場景設(shè)置里選擇相應(yīng)集合點(diǎn)坐漏,在運(yùn)行時,虛擬用戶在執(zhí)行到該函數(shù)時碧信,將停止運(yùn)行赊琳,并等待允許運(yùn)行的條件(集合點(diǎn)策略)達(dá)到后才釋放集合點(diǎn)開始運(yùn)行。
3.4.3 插入注釋
類似于代碼砰碴,腳本也需要有注釋說明躏筏,解釋該腳本的目的和作用,以及一些注意配置項(xiàng)呈枉。