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