LoadRunner12是一款專業(yè)的性能自動(dòng)化測(cè)試工具,可以幫助企業(yè)進(jìn)行應(yīng)用架構(gòu)的測(cè)試。LoadRunner12通過(guò)模擬實(shí)際用戶的操作行為和實(shí)行實(shí)時(shí)性能監(jiān)控,來(lái)幫助客戶更快的確認(rèn)和查找問(wèn)題。LR能支持廣泛的協(xié)議的技術(shù),為客戶的特殊環(huán)境,提供特殊的解決方案。
軟件特色:
1、能很輕松地創(chuàng)建虛擬用戶
2、能創(chuàng)建真實(shí)的負(fù)載
3、定位性能問(wèn)題
4、分析結(jié)果精確定位問(wèn)題所在
5、完整的企業(yè)應(yīng)用環(huán)境支持
工作原理:
LR的工作原理是通過(guò)用戶執(zhí)行被測(cè)程序的客戶端,在VuGen中錄制被測(cè)系統(tǒng)的客戶端和服務(wù)器的協(xié)議交互,生成腳本,然后在Controller中控制Load Generator,按照一定的配置(又稱為場(chǎng)景),模擬一定數(shù)量的用戶,對(duì)服務(wù)器產(chǎn)生壓力,同時(shí)對(duì)被測(cè)系統(tǒng)涉及的操作系統(tǒng),數(shù)據(jù)庫(kù),中間件筆資源進(jìn)行監(jiān)控,收集壓力情況下的資源信息,測(cè)試結(jié)束后形成測(cè)試結(jié)果和監(jiān)控?cái)?shù)據(jù),在結(jié)果分析器中進(jìn)行分析,最后生成測(cè)試結(jié)果報(bào)告。在下一篇中我會(huì)以一個(gè)具體的測(cè)試案例來(lái)具體說(shuō)明,敬請(qǐng)留意。
OK,按照上面的原理,我們來(lái)畫(huà)一個(gè)圖來(lái)說(shuō)明,這樣更容易理解了,如下圖所示:
OK,這就是LR了,當(dāng)然在實(shí)際的操作中可不象那么簡(jiǎn)單,RL的功能非常強(qiáng)大,在下一篇中會(huì)講到,插入事務(wù),參數(shù)化技術(shù),精確搜索數(shù)據(jù)和篩選特定數(shù)據(jù)等等。
測(cè)壓思路:
第一步 錄制腳本
先錄制用戶請(qǐng)求訪問(wèn)的行為,如用戶訪問(wèn)首頁(yè),或用戶先登陸,后瀏覽頁(yè)面,后搜索;錄制完后會(huì)生成用戶請(qǐng)求行為的腳本;然后我們按需要修改腳本,使腳本更符合實(shí)際請(qǐng)求情況;
第二步 運(yùn)行場(chǎng)景
在第一步中錄制了單個(gè)用戶請(qǐng)求流程的腳本,第二步主要是設(shè)置用戶按照腳本同時(shí)訪問(wèn)的并發(fā)數(shù)以及并發(fā)訪問(wèn)的時(shí)間和策略,使其更接近真實(shí)高并發(fā)訪問(wèn)的場(chǎng)景;在模擬并發(fā)訪問(wèn)后,會(huì)形成測(cè)試報(bào)告,包括服務(wù)器數(shù)據(jù)流吞吐量、每秒請(qǐng)求次數(shù)、事務(wù)響應(yīng)時(shí)間等。
壓力測(cè)試步驟:
1設(shè)置錄制選項(xiàng)
1.1選擇首頁(yè)中的創(chuàng)建/編輯腳本
1.2選擇協(xié)議
對(duì)web站點(diǎn)進(jìn)行壓力測(cè)試,選擇web(HTTP/HTML)
1.3輸入系統(tǒng)url,設(shè)置錄制選項(xiàng)
【要錄制的程序】:這個(gè)是打開(kāi)url的瀏覽器,默認(rèn)為IE,不過(guò)loadrunner11支持到IE8,可以自定義瀏覽器。
【URL地址】:需要進(jìn)行測(cè)試的鏈接
2錄制腳本
2.1錄制腳本
在上一步點(diǎn)擊"確定"后,會(huì)自動(dòng)打開(kāi)瀏覽器并定位到配置的url地址中。然后需要在瀏覽器中模擬用戶的行為,我們執(zhí)行一個(gè)搜索功能。
在模擬用戶行為完后,點(diǎn)擊藍(lán)色按鈕停止錄制,會(huì)生成腳本,如下一步所示
2.2驗(yàn)證回放腳本
在生成腳本后,可以點(diǎn)擊驗(yàn)證回放,會(huì)根據(jù)生成的腳本在瀏覽器中回放用戶的行為,來(lái)驗(yàn)證用戶的行為是否符合要求。
2.3腳本優(yōu)化
回放驗(yàn)證成功后,可以進(jìn)行事務(wù)、參數(shù)、并發(fā)用戶的設(shè)置、腳本運(yùn)行時(shí)設(shè)置。此操作為可選項(xiàng),可以不用配置,系統(tǒng)采用默認(rèn)配置。
事務(wù):根據(jù)項(xiàng)目需要,除了衡量整個(gè)腳本的性能外,還想獲取到腳本中的某一段或幾段操作,例如:想知道從單擊"確定"按鈕到顯示首頁(yè)這一登錄過(guò)程的性能數(shù)據(jù),以便更詳細(xì)的知道具體是用戶的哪些動(dòng)作對(duì)系統(tǒng)性能的影響比較大。這時(shí)候,可以將登錄的運(yùn)行腳本標(biāo)記在一個(gè)事務(wù)內(nèi)。
在腳本中沒(méi)有事務(wù)時(shí),可以在腳本開(kāi)始和結(jié)束的地方分別加上
lr_start_transaction("xxx");
lr_end_transaction("xxx", LR_AUTO);
表示整個(gè)腳本為一個(gè)事務(wù)。否則,可能監(jiān)控不到事務(wù)響應(yīng)時(shí)間
參數(shù)化:所謂參數(shù)化,針對(duì)的是腳本中的某些常量。讓不同的虛擬用戶在執(zhí)行相同的腳本時(shí),分別使用單數(shù)數(shù)據(jù)源中的不同數(shù)據(jù)代替這些常量,從而達(dá)到模擬多用戶真實(shí)使用系統(tǒng)的目的。例如在'用戶搜索'的事務(wù)腳本中,搜索的關(guān)鍵字是'AAA'。但實(shí)際情況中,每個(gè)并發(fā)訪問(wèn)的用戶搜索的關(guān)鍵字是不一樣的。所以要使每個(gè)用戶執(zhí)行腳本時(shí)的關(guān)鍵字都不一樣,這個(gè)過(guò)程就需要對(duì)關(guān)鍵字參數(shù)化。
腳本運(yùn)行時(shí)設(shè)置:設(shè)置每個(gè)action的執(zhí)行次數(shù)、設(shè)定思考時(shí)間、步等
【步】:每個(gè)用戶請(qǐng)求事務(wù)的時(shí)間間隔,一般選第一個(gè),上一個(gè)事務(wù)一結(jié)束就開(kāi)始下一個(gè)
【思考時(shí)間】:思考時(shí)間是為了模擬時(shí)更加接近用戶的真實(shí)行為。實(shí)際中,用戶進(jìn)行一系列的操作之間會(huì)有停頓,即思考時(shí)間,例如:加載出數(shù)據(jù)后,用戶會(huì)閱讀數(shù)據(jù),而瀏覽數(shù)據(jù)的過(guò)程對(duì)服務(wù)器是沒(méi)有壓力的。因此,在腳本中用函數(shù)lr_think_time(double time)來(lái)模擬用戶停頓過(guò)程(未執(zhí)行任何操作的過(guò)程),執(zhí)行該函數(shù)時(shí),用戶線程會(huì)按照相應(yīng)的time值進(jìn)行等待。如果選擇忽略思考時(shí)間,會(huì)對(duì)服務(wù)器造成更大的壓力。
2.4創(chuàng)建場(chǎng)景及運(yùn)行場(chǎng)景
2.4.1創(chuàng)建場(chǎng)景
在錄制完腳本頁(yè)面中點(diǎn)擊tools->create controller scenario,會(huì)彈出以下窗口
number of vusers:共要?jiǎng)?chuàng)建的虛擬用戶100個(gè);
Load gennrator:創(chuàng)建虛擬用戶的機(jī)器,localhost本地;
點(diǎn)擊ok后,跳轉(zhuǎn)到創(chuàng)建場(chǎng)景的主頁(yè)面
1"場(chǎng)景組"窗格。在"場(chǎng)景組"窗格中配置虛擬用戶組及用戶組來(lái)源,可以用來(lái)做分布式壓力測(cè)試。我們知道一臺(tái)測(cè)試機(jī)可以產(chǎn)生的虛擬用戶是有限的(通常普通配置的主機(jī)能產(chǎn)生200個(gè)),當(dāng)需要更大的壓力即更多虛擬用戶時(shí),我就需要從別的測(cè)試機(jī)產(chǎn)生虛擬用戶,并在此處配置,指定運(yùn)行的 Vuser 數(shù)目以及運(yùn)行時(shí)使用的計(jì)算機(jī)。
2"場(chǎng)景計(jì)劃"窗格。在"場(chǎng)景計(jì)劃"窗格中,設(shè)置加壓方式以準(zhǔn)確模擬真實(shí)用戶
行為。可以設(shè)置初始化用戶策略、逐步增加并發(fā)用戶的速度、并發(fā)用戶持續(xù)請(qǐng)求時(shí)間、逐步減少并發(fā)用戶的速度。
3設(shè)置 Vuser 初始化。
初始化是指通過(guò)運(yùn)行腳本中的vuser_init 操作,為負(fù)載測(cè)試準(zhǔn)備虛擬用戶。在Vuser 開(kāi)始運(yùn)行之前對(duì)其進(jìn)行初始化可以減少CPU占用量,并有利于提供更加真實(shí)的結(jié)果。
4 設(shè)置啟動(dòng)vusers,可以設(shè)置逐步增加并發(fā)用戶的速度,下圖表示表示每30 秒啟動(dòng) 2 個(gè)Vuser。
通過(guò)按照一定的間隔啟動(dòng)Vuser,可以讓Vuser 對(duì)應(yīng)用程序施加的負(fù)載在測(cè)試
過(guò)程中逐漸增加,幫助準(zhǔn)確找出系統(tǒng)響應(yīng)時(shí)間開(kāi)始變長(zhǎng)的轉(zhuǎn)折點(diǎn)。
5設(shè)置用戶并發(fā)訪問(wèn)持續(xù)時(shí)間。設(shè)置用戶并發(fā)持續(xù)訪問(wèn)10分中。
中的時(shí)間顯示為00:11:30。設(shè)置Vuser 運(yùn)行10 分鐘。
6安排逐漸減少用戶訪問(wèn)。
建議逐漸停止Vuser,以幫助在應(yīng)用程序到達(dá)閾值后,檢查系統(tǒng)恢復(fù)情況。
如下圖所示,表示每隔30 秒停止 2 個(gè) Vuser。
7用戶并發(fā)訪問(wèn)策略,可以在下圖中表現(xiàn)出來(lái)。
2.4.2創(chuàng)建及運(yùn)行場(chǎng)景
場(chǎng)景設(shè)計(jì)完后點(diǎn)擊運(yùn)行->運(yùn)行場(chǎng)景,運(yùn)行場(chǎng)景主頁(yè)面如下圖所示
1"場(chǎng)景組"窗格。位于左上角的窗格,可以在其中查看場(chǎng)景組內(nèi) Vuser 的狀態(tài)。使用該窗格右側(cè)的按鈕可以啟動(dòng)、停止和重置場(chǎng)景,查看各個(gè) Vuser 的狀態(tài),通過(guò)手動(dòng)添加更多 Vuser 增加場(chǎng)景運(yùn)行期間應(yīng)用程序的負(fù)載。
2"場(chǎng)景狀態(tài)"窗格。位于右上角的窗格,可以在其中查看負(fù)載測(cè)試的概要信息,包括正在運(yùn)行的 Vuser 數(shù)量和每個(gè) Vuser 操作的狀態(tài)。
3可用圖樹(shù)。位于中間偏左位置的窗格,您可以在其中看到一列 LoadRunner 圖。在樹(shù)中選擇一個(gè)圖,會(huì)在圖查看區(qū)域中顯示。如下是常用的圖
4圖查看區(qū)域。位于中間偏右位置的窗格,用來(lái)顯示可用圖數(shù)中的圖表。
5圖例。位于底部的窗格,可以在其中查看所選圖的數(shù)據(jù)。
2.5查看報(bào)告
在場(chǎng)景運(yùn)行完后,可以在當(dāng)前頁(yè)面看到部分測(cè)試結(jié)果,如網(wǎng)絡(luò)吞吐量,每秒請(qǐng)求數(shù),事務(wù)平均響應(yīng)時(shí)間,也可以在results->analyze results中查看詳細(xì)的結(jié)果報(bào)告和圖表,如下所示。
負(fù)載測(cè)試流程:
計(jì)劃負(fù)載測(cè)試:計(jì)劃你的負(fù)載測(cè)試都需要做哪些準(zhǔn)備,比如:并發(fā)的用戶數(shù),主要的業(yè)務(wù)流程,和需要的相應(yīng)次數(shù)等。
創(chuàng)建Vuser腳本:用VuGen把終端用戶的操作活動(dòng)錄制成腳本。
設(shè)計(jì)場(chǎng)景:用Controller創(chuàng)建一個(gè)負(fù)載測(cè)試的環(huán)境。
運(yùn)行場(chǎng)景:用Controller驅(qū)動(dòng),管理并監(jiān)控這個(gè)負(fù)載測(cè)試。
分析結(jié)果:用LoadRunner Analysis生成圖表與報(bào)表,對(duì)系統(tǒng)的性能進(jìn)行評(píng)估。