【讀書筆記】《深入性能測試-LoadRunner性能測試》【第3章 Vuser 發(fā)生器】

文/秋之川

【目錄】

【上一章】

Vuser 發(fā)生器(Visual User Generator, VuGen)主要通過捕獲客戶端向服務(wù)器發(fā)送的HTTP請求,將這些請求錄制成腳本,在回放時將捕獲的HTTP請求再次發(fā)送继控,以達(dá)到模擬客戶行為的目的。

Vuser 主要是用來捕獲最終用戶業(yè)務(wù)流程創(chuàng)建和創(chuàng)建自動化測試腳本蟀伸,即生成測試腳本僵闯。

VuGen 是錄制測試腳本、編輯與完善測試腳本的一個平臺癞谒,支持C語言語法底燎。

3.1 腳本錄制


腳本開發(fā)過程

? ? 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 開始錄制腳本


VuGen 錄制原理


錄制窗口

注意一下:錄制的時候或者是我們自己寫腳本時翎卓,代碼都要放在Action部分,因?yàn)関user_init和vuser_end兩部分的代碼只會執(zhí)行一次摆寄。


錄制工具欄

3.2 Recording Option 設(shè)置

Tools->Recording Options 或者 Ctrl + F7 可打開該配置對話框失暴。


Recording Options

這里要重點(diǎn)關(guān)注:Recording、Advanced和Correlation 三個選項(xiàng)卡椭迎。

3.3 Run-Time Settings 設(shè)置

該設(shè)置主要用于腳本運(yùn)行過程中的策略設(shè)置锐帜。可以從 Vuser -> Run-Time Settings 菜單或按 F4 打開畜号。


Run-Time Settings對話框

此項(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è)置腳本回放時的日志格式甲脏。


Log

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)呈枉。

【下一章】

【目錄】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末趁尼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子猖辫,更是在濱河造成了極大的恐慌酥泞,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啃憎,死亡現(xiàn)場離奇詭異芝囤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)辛萍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門凡人,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叹阔,你說我怎么就攤上這事挠轴。” “怎么了耳幢?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵岸晦,是天一觀的道長欧啤。 經(jīng)常有香客問我,道長启上,這世上最難降的妖魔是什么邢隧? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮冈在,結(jié)果婚禮上倒慧,老公的妹妹穿的比我還像新娘。我一直安慰自己包券,他們只是感情好纫谅,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著溅固,像睡著了一般付秕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侍郭,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天询吴,我揣著相機(jī)與錄音,去河邊找鬼亮元。 笑死猛计,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的爆捞。 我是一名探鬼主播有滑,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嵌削!你這毒婦竟也來了毛好?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤苛秕,失蹤者是張志新(化名)和其女友劉穎肌访,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艇劫,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吼驶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了店煞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蟹演。...
    茶點(diǎn)故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖顷蟀,靈堂內(nèi)的尸體忽然破棺而出酒请,到底是詐尸還是另有隱情,我是刑警寧澤鸣个,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布羞反,位于F島的核電站布朦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏昼窗。R本人自食惡果不足惜是趴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望澄惊。 院中可真熱鬧唆途,春花似錦、人聲如沸掸驱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亭敢。三九已至,卻和暖如春图筹,著一層夾襖步出監(jiān)牢的瞬間帅刀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工远剩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扣溺,地道東北人。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓瓜晤,卻偏偏與公主長得像锥余,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子痢掠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容