HP LoadRunner 12.02 Tutorial T7177-88037教程独家中文版
?
LoadRunner 12.02教程獨(dú)家中文版
Tylan獨(dú)家嘔血翻譯
轉(zhuǎn)載請(qǐng)注明出自“天外歸云”的博客園?
Welcome to the LoadRunner Tutorial
LoadRunner所包含的組件
?如下所示:
?
Vugen:Virtual User Generator,虛擬用戶發(fā)生器的簡(jiǎn)稱,用來錄制用戶的業(yè)務(wù)流程,創(chuàng)建自動(dòng)化性能測(cè)試腳本,亦稱之為Vuser腳本。
Controller:控制器,用于組織、驅(qū)動(dòng)、管理并監(jiān)控負(fù)載測(cè)試。
Analysis:分析器,幫助你查看,剖析并比較負(fù)載測(cè)的結(jié)果報(bào)告。
Load Generator:負(fù)載發(fā)生器,用來攢動(dòng)與運(yùn)行虛擬用戶以對(duì)目標(biāo)系統(tǒng)產(chǎn)生負(fù)載的計(jì)算機(jī)。
LoadRunner術(shù)語
場(chǎng)景:在場(chǎng)景中將根據(jù)性能需求來定義測(cè)試過程中所發(fā)生的事件。
虛擬用戶:虛擬用戶會(huì)在系統(tǒng)中模仿真實(shí)用戶的行為。一個(gè)場(chǎng)景可以包含數(shù)以千計(jì)的虛擬用戶。
虛擬用戶腳本:錄制了你在程序中所操作的業(yè)務(wù)流程。
協(xié)議:協(xié)議就是客戶端和服務(wù)器之間的交流方式。
事務(wù):事務(wù)用以衡量你的系統(tǒng)性能。一個(gè)事務(wù)代表了一個(gè)或多個(gè)終端用戶的業(yè)務(wù)流程。一個(gè)事務(wù)讓你衡量業(yè)務(wù)流程所花費(fèi)的時(shí)間成為可能。
腳本足跡:由負(fù)載發(fā)生器所需的大量不同資源所定義,以執(zhí)行Vuser腳本為目的。典型的資源包括內(nèi)存,CPU能源,硬盤空間。
LoadRunner負(fù)載測(cè)試流程:
?
?
開始HP Web Tours(惠普在線旅游)
為了理解LoadRunner是如何做為負(fù)載測(cè)試的解決方案,這個(gè)教程將用性能需求作為一個(gè)樣本應(yīng)用。這個(gè)樣本應(yīng)用——HP Web Tours(惠普在線旅游),是一個(gè)web-based(基于網(wǎng)絡(luò)的)旅游代理系統(tǒng)。HP Web Tours的用戶連接到一個(gè)web服務(wù)器,用于搜索與預(yù)訂航班,檢查航班行程。
LoadRunner支持超過50種應(yīng)用,這個(gè)教程僅僅用來講述怎樣來對(duì)一個(gè)web-based類型的應(yīng)用進(jìn)行負(fù)載測(cè)試。如果你要對(duì)其他類型的應(yīng)用進(jìn)行負(fù)載測(cè)試,請(qǐng)聯(lián)系惠普以求幫助。
在教程的這一部分中,你將會(huì)學(xué)到如何開始并登錄HP Web Tours。
在你訪問這個(gè)應(yīng)用的同時(shí)你一定要讓 "Start HP Web Tours Server"的窗口始終開著。
定義應(yīng)用的性能需求
現(xiàn)在你已經(jīng)熟悉了HP Web Tours,設(shè)想你是性能工程師,你要對(duì)HP Web Tours的性能負(fù)責(zé)并讓其符合HP Web Tours的商業(yè)需求。你的產(chǎn)品經(jīng)理已經(jīng)給出了四點(diǎn)產(chǎn)品的發(fā)布標(biāo)準(zhǔn):
這個(gè)教程將教你如何建立一個(gè)滿足所有這些需求的負(fù)載測(cè)試,以便于在產(chǎn)品發(fā)布前你可以給出諸如產(chǎn)品性能通過或失敗的數(shù)據(jù)。
第一課:建立一個(gè)Vuser腳本
要對(duì)你的系統(tǒng)產(chǎn)生負(fù)載,首先你要?jiǎng)?chuàng)建一個(gè)可以運(yùn)行的能夠模仿真實(shí)用戶操作的Vuser腳本。這里,你需要用Vugen來完成這一需求。
介紹一下Vugen——Virtual User Generator(虛擬用戶發(fā)生器)
在一個(gè)性能測(cè)試環(huán)境中,LoadRunner用虛擬用戶代替了真實(shí)用戶,虛擬用戶也叫Vusers,虛擬用戶通過可預(yù)見的,重復(fù)性的模擬真實(shí)用戶操作來對(duì)系統(tǒng)產(chǎn)生負(fù)載。
Vugen幫你創(chuàng)建虛擬用戶腳本,它以錄制與回放的原則去工作。當(dāng)你在你的應(yīng)用中完成一遍業(yè)務(wù)流程的同時(shí),Vugen會(huì)記錄你的操作并將其按步驟翻譯成虛擬用戶腳本。虛擬用戶腳本是你負(fù)載測(cè)試的基礎(chǔ)構(gòu)成。
創(chuàng)建一個(gè)空的虛擬用戶(Vuser)腳本
去開發(fā)一個(gè)虛擬用戶腳本,你首先要打開Vugen并創(chuàng)建一個(gè)空腳本。此后你才可以通過錄制事件或加入人為改善的方式來改善這個(gè)空腳本。
本節(jié)你將創(chuàng)建一個(gè)基于Web-based HTTP/HTML協(xié)議的虛擬用戶腳本。
定義:協(xié)議是服務(wù)器與客戶端之間的交流方式。
接下來我們創(chuàng)建一個(gè)空的虛擬用戶腳本:
錄制一個(gè)虛擬用戶腳本
這部分內(nèi)容將幫你完成之前預(yù)訂航班和檢查行程的錄制。
首先,你要點(diǎn)擊Record>Recording Options:
確保Track processes created as COM local servers這一項(xiàng)是沒有勾選的,然后點(diǎn)擊OK。
接下來我們錄制虛擬用戶腳本:
查看虛擬用戶腳本
左側(cè)的Solution Explorer給出了Vuser腳本的各個(gè)組成部分與相關(guān)文件。
Step Navigator以小圖標(biāo)的形式列出了虛擬用戶各個(gè)步驟的操作,你在錄制腳本的過程中所做的每一個(gè)操作,Vugen都會(huì)在Step Navigator中生成相應(yīng)的步驟。
每個(gè)步驟名字右側(cè)的小圖標(biāo)代表有截圖:
用戶的操作是以API函數(shù)的形式顯示在右邊的編輯器中的,你可以用C語言或者LoadRunner API函數(shù)或是一些流程控制語句在其中直接進(jìn)行編寫。
第二課:回放你的腳本
上一節(jié),你錄制了腳本。但是在你把你的腳本放到場(chǎng)景中執(zhí)行前,你需要回放你的腳本以檢查你錄制的Vuser腳本是否能正常工作。
在你回放腳本之前,你必須配置腳本的runtime settings,它定義了虛擬用戶的行為。
怎樣設(shè)置虛擬用戶的runtime行為?
LoadRunner的運(yùn)行時(shí)設(shè)置(runtime settings)讓你能夠模擬不同種類的用戶活動(dòng)和行為。例如:你可以模擬一個(gè)對(duì)服務(wù)器的輸出立刻做出響應(yīng)的用戶,或者你也可以模擬一個(gè)每一步都要思考才能做出響應(yīng)的用戶。你可以配置運(yùn)行時(shí)設(shè)置(runtime settings)來具化虛擬用戶需要重復(fù)多少次腳本中的操作。
本節(jié)介紹通用的可以應(yīng)用與所有的虛擬用戶協(xié)議的runtime settings該如何配置,關(guān)于特殊的協(xié)議在第四節(jié)課中將會(huì)講到。General runtime settings包括:
Run Logic(運(yùn)行邏輯):Vuser重復(fù)不同部分Vuser腳本的次數(shù)。
Pacing(節(jié)奏):每?jī)纱沃貜?fù)之間的等待時(shí)間。
Think Time(思考時(shí)間):腳本之中步驟之間Vuser所需要停頓的時(shí)間。
Log:設(shè)置在你回放腳本過程中所需要收集的信息的level(等級(jí))。
本節(jié)課介紹用Vugen修改runtime settings,之后的課程將介紹如何用Controller修改runtime settings。
修改runtime settings:
在左側(cè)欄中選擇Run Logic,設(shè)置Number of iterations(重復(fù)次數(shù))為2,這個(gè)是用來設(shè)置腳本中Action部分的重復(fù)次數(shù):
在這里你可以設(shè)置每?jī)纱沃貜?fù)之間的等待時(shí)間,你可以設(shè)置一個(gè)隨機(jī)值,這將以一個(gè)隨機(jī)的間隔時(shí)間更加精確的模擬真實(shí)用戶在重復(fù)操作之間等待所用的時(shí)間,比如你不會(huì)看到真實(shí)用戶在每?jī)纱沃貜?fù)操作之間總是等待六十秒。
選擇第三個(gè)圓按鈕,設(shè)置隨機(jī)時(shí)間間隔為60到90秒:
這里設(shè)置在運(yùn)行時(shí)要記錄那些log信息。在你開發(fā)腳本的時(shí)候你可能會(huì)為了debug方便而想要得到一些特別的log信息,但是一旦你調(diào)試通過了,你可能以后只需要得到error的log信息,或根本不需要log信息了。
選擇Extended log并勾選parameter substitution。這個(gè)選項(xiàng)和以后課程中將要討論的點(diǎn)相關(guān)。
保持默認(rèn)設(shè)置,忽略Think Time時(shí)間。你可以在Controller中設(shè)置。
我怎么運(yùn)行我的Vuser腳本?
在錄制好腳本并設(shè)置好runtime settings后,你就做好了運(yùn)行腳本所需要的準(zhǔn)備。Vugen在你運(yùn)行腳本的過程中會(huì)給予你一些的指示器。
介紹完界面上的東西,下面我們來運(yùn)行錄制好的腳本:
在回放結(jié)束后會(huì)彈出個(gè)東東建議你檢查相關(guān)的,點(diǎn)擊NO。
我在哪里可以看到回放信息?
當(dāng)Vuser腳本停止運(yùn)行,你可以看到回放的一個(gè)總結(jié),回放的總結(jié)會(huì)顯示在Replay Summary 標(biāo)簽下。
回放總結(jié)標(biāo)簽下列出了關(guān)于腳本運(yùn)行的基本信息,比如回放時(shí)間間隔,回放的開始與截止時(shí)間。下面的兩個(gè)link分別是腳本運(yùn)行的詳細(xì)結(jié)果和回放時(shí)所收集的log。
回放的log里記錄了回訪時(shí)所發(fā)生的事件,在Vugen的output欄里顯示。
在教材的這一部分,你將打開log,在log中找到指定的事件和提示。
查看回放log:
注意:Output欄中綠色的是成功信息,紅色的是失敗信息。Output欄中也會(huì)指出出現(xiàn)的的error在腳本中對(duì)應(yīng)的行號(hào)。
雙擊Output欄中的行,將會(huì)定位到相應(yīng)的腳本行。
我怎么知道我的腳本回放是否成功?
在你回放了你所錄制的腳本后,你需要查看回放結(jié)果去判斷腳本是否回放成功。如果有哪有東西失敗了,你想知道什么時(shí)候?yàn)槭裁词×恕?/p>
這一部分你將學(xué)會(huì)檢查和分析腳本運(yùn)行結(jié)果。Vugen在Test Results窗口中總結(jié)了回放結(jié)果。
你打開Test Results窗口后會(huì)發(fā)現(xiàn)它有兩個(gè)欄,左側(cè)的樹欄和右側(cè)的結(jié)果總結(jié)欄。
- 樹欄包括結(jié)果樹,每一次重復(fù)在樹中都被標(biāo)注了數(shù)字。
- 結(jié)果總結(jié)欄包含了腳本回放的詳細(xì)信息,當(dāng)然也包括了屏幕錄制器(Screen Recorder)的移動(dòng),如果有的話。頂部的表告訴你哪些次重復(fù)(Iteration)失敗了,哪些次成功了。和原始錄制的過程相比較,如果虛擬用戶順利完成了整個(gè)過程,那么這次測(cè)試將被認(rèn)為是通過的。底部的表告訴你事務(wù)(Transactions)或檢查點(diǎn)(CheckPoints)是否成功或失敗。在教程的后續(xù)章節(jié)你將學(xué)到如何添加這些特色(指事務(wù)或檢查點(diǎn))。
可以通過下面兩種方法來查看回放結(jié)果:
下一部分,你將鉆入回放結(jié)果中仔細(xì)研究,從而判斷腳本在回放過程中是否到達(dá)了預(yù)期的web頁面。
我應(yīng)該怎樣查找或過濾回放結(jié)果?
如果你的回放結(jié)果表示有什么東西失敗了,你可以進(jìn)一步定位失敗的原因。
在Test Results窗口中左側(cè)的樹欄,你可以展開你的測(cè)試樹,分別查看每一次重復(fù)中每一步的結(jié)果。右側(cè)的總結(jié)欄中會(huì)顯示該次重復(fù)過程中對(duì)應(yīng)的回放截圖。
點(diǎn)擊Submit Form:reservations.pl,右側(cè)總結(jié)欄將顯示該步操作時(shí)所對(duì)應(yīng)的截圖:
總結(jié)欄顯示關(guān)于步驟的總結(jié)性信息:如對(duì)象或步驟名,詳細(xì)的關(guān)于頁面是否成功加載,結(jié)果是否通過,每一步的發(fā)生時(shí)間等。
你可以在回放結(jié)果中搜索"Passed"或"Failed"。
這是非常有幫助的,因?yàn)槿绻愕幕胤沤Y(jié)果總結(jié)中告訴你失敗了,它可以幫你找到哪里失敗了。
你可以過濾測(cè)試樹欄來顯示一個(gè)指定的循環(huán)或狀態(tài)。比如,你可以過濾它只顯示"Failed"狀態(tài)的。
可以看到左面的樹欄空了,這是因?yàn)檫^程中不存在失敗。
點(diǎn)擊File>Exit。
第三課:解決回放過程中所遇到的一般問題
當(dāng)你錄制好一個(gè)腳本后,你通過在VuGen中運(yùn)行來驗(yàn)證該腳本是否通過。有時(shí)回放會(huì)失敗,即便同樣的操作在錄制時(shí)是成功的。
有很多應(yīng)用是動(dòng)態(tài)生成值的,你每次打開這個(gè)應(yīng)用的時(shí)候都不一樣。比如,有些服務(wù)器為每一個(gè)新的會(huì)話都賦予一個(gè)獨(dú)一無二的會(huì)話ID。當(dāng)你試著回放一個(gè)錄制好的會(huì)話時(shí),會(huì)話會(huì)生成一個(gè)與錄制時(shí)不同的新的會(huì)話ID。當(dāng)你回放特定的腳本時(shí),像會(huì)話ID這樣的動(dòng)態(tài)值將會(huì)給你帶來麻煩。比如當(dāng)你回放Web-HTTP/HTML類型的腳本時(shí)動(dòng)態(tài)的會(huì)話ID就會(huì)帶來麻煩,但是當(dāng)回放Web-TruClient類型腳本時(shí)就不會(huì)。
LoadRunner利用關(guān)聯(lián)性來定位與解決這種動(dòng)態(tài)值的問題。關(guān)聯(lián)性保存這種變化的值到一個(gè)參數(shù)中,就像我們這個(gè)例子中的會(huì)話ID。當(dāng)我們運(yùn)行腳本時(shí),虛擬用戶將不會(huì)采用事先錄制的值,取而代之,會(huì)采服務(wù)器所賦予其的新會(huì)話ID。
這節(jié)課你講學(xué)習(xí)LoadRunner是如何解決在Web-HTTP/HTML類型Vuser腳本運(yùn)行時(shí)產(chǎn)生的動(dòng)態(tài)值問題。
為HP Web Tours的回放錯(cuò)誤做準(zhǔn)備
為了說明一個(gè)普遍存在的回放失敗,你需要在HP Web Tours應(yīng)用中修改一個(gè)設(shè)置。這個(gè)設(shè)置會(huì)讓HP Web Tours服務(wù)器需要獨(dú)一無二的會(huì)話ID。
Start > All Programs > HP Software > HP LoadRunner > Samples > Web > HP Web Tours Application. 之后HP Web Tours的Home Page頁面就被打開了。(Win8的話在界面輸入HP Web進(jìn)行搜索)
我們對(duì)于獨(dú)一無二的服務(wù)器值是如何處理的?
在HP Web Tours被修改的配置中,服務(wù)器給每一個(gè)虛擬用戶一個(gè)獨(dú)一無二的值。如果你試著回放沒有修改過的在第一課中所錄制的虛擬用戶腳本,回放的結(jié)果將是失敗的。
為了克服這個(gè)問題,你需要用VuGen去實(shí)現(xiàn)這個(gè)關(guān)聯(lián)會(huì)話 ID的需求。你需要在VuGen中添加一步把這個(gè)獨(dú)特的會(huì)話ID添加到一個(gè)參數(shù)中。在后續(xù)的每一個(gè)會(huì)話中,VuGen都會(huì)將新的獨(dú)一無二的會(huì)話ID存入一個(gè)參數(shù)中。在虛擬用戶運(yùn)行Vuser腳本中的步驟時(shí),虛擬用戶會(huì)使用已經(jīng)保存的會(huì)話ID值,而不是原先錄制好的值。
點(diǎn)擊錄制按鈕進(jìn)行錄制,VuGen運(yùn)行這個(gè)新的腳本,你會(huì)注意到回放log中有一些紅色字體的錯(cuò)誤信息出現(xiàn)。
回訪結(jié)束后,一個(gè)消息對(duì)話框會(huì)彈出提醒你檢查關(guān)聯(lián),點(diǎn)擊"No"。
觀察回放總結(jié)欄(Replay Summary Tab),總結(jié)中會(huì)指出你的回放失敗了。
選擇"Design > Design Studio"
VuGen檢查腳本和它所關(guān)聯(lián)的數(shù)據(jù),查找可能的動(dòng)態(tài)值。Design Studio下Correlation這個(gè)欄列出了三個(gè)需要關(guān)聯(lián)的動(dòng)態(tài)值。這三個(gè)值中最長(zhǎng)的那個(gè)是會(huì)話ID。
在之后的每一個(gè)回放會(huì)話中,VuGen都將保存新的獨(dú)一無二的會(huì)話ID到參數(shù)中。當(dāng)虛擬用戶運(yùn)行腳本時(shí),會(huì)以該參數(shù)取代原先錄制的值;
在VuGen編輯器中個(gè),定位到VuGen加到腳本中的語句。新的語句看起來就像下面這樣:
這個(gè)語句告訴VuGen將第一次包含在正則表達(dá)式中的值(獨(dú)一無二的會(huì)話ID)存入?yún)?shù)中并叫CorrelationParameter這個(gè)名字。
現(xiàn)在你對(duì)回放中的錯(cuò)誤有一定的了解了,可以去學(xué)習(xí)第四課了。
第四課:為負(fù)載測(cè)試準(zhǔn)備一個(gè)虛擬用戶腳本
在之前的課程中,你已經(jīng)確認(rèn)你的腳本回放的過程精確的模擬了真實(shí)用戶的行為。下一步,就是為了負(fù)載測(cè)試準(zhǔn)備腳本。那么,多個(gè)用戶同時(shí)并發(fā)的在系統(tǒng)上工作會(huì)怎樣呢?系統(tǒng)會(huì)不會(huì)慢到一個(gè)不可接受的程度?
在這一課中,你將會(huì)學(xué)到不同的方法去豐富你的腳本,讓它在負(fù)載測(cè)試的過程中更加有效率。
怎樣去估量一個(gè)業(yè)務(wù)流程的持續(xù)時(shí)間呢?
當(dāng)你為一個(gè)應(yīng)用做部署時(shí),一定要準(zhǔn)確的估測(cè)業(yè)務(wù)流程的持續(xù)時(shí)間——登陸需要多久,訂飛機(jī)票等等。每一個(gè)業(yè)務(wù)流程都由你腳本中的一步或多步組成。在一個(gè)虛擬用戶腳本中,你通過把這些步驟加到一個(gè)事務(wù)(transaction)中來設(shè)計(jì)一系列你想要估測(cè)的行為。
當(dāng)你運(yùn)行一個(gè)包含事務(wù)的腳本時(shí),LoadRunner將會(huì)收集關(guān)于事務(wù)所花費(fèi)時(shí)間的信息,并且以彩色編碼的段落顯示結(jié)果和報(bào)告。你通過這個(gè)信息去判斷這個(gè)應(yīng)用是否能滿足你的性能需求。
你可以手動(dòng) 的在虛擬腳本中的任何位置插入一段事務(wù)。為了將一系列步驟組成事務(wù),在第一步之前插入一個(gè)事務(wù)開始(start_transaction)標(biāo)識(shí),在最后一步之后插入一個(gè)事務(wù)結(jié)束(end_transaction)標(biāo)識(shí)。
這部分你將在你的腳本中插入一段事務(wù)來衡量用戶查找和預(yù)訂機(jī)票這個(gè)過程所花費(fèi)的時(shí)間。
在虛擬用戶腳本中插入一段事務(wù)(transaction):
現(xiàn)在你知道該怎么樣去定義"find_confirm_flight"這個(gè)事務(wù)了。
要怎樣才能模仿多個(gè)用戶?
在你的模仿中,你記錄了一個(gè)預(yù)定航班和選座的過程。但是真實(shí)的生活中,往往多個(gè)用戶會(huì)有不同的選擇。為了改進(jìn)你的測(cè)試,你需要檢查當(dāng)多個(gè)用戶做出不同的選擇時(shí)(Aisle,Window或None)預(yù)定是否依然能正常工作。
為了完成這個(gè)愿望,你需要參數(shù)化你的腳本。這就意味著你要把你錄制的值,比如Aisle,用參數(shù)來替代。你將在一個(gè)參數(shù)文件中替換這些參數(shù)的值。當(dāng)你運(yùn)行腳本時(shí),虛擬用戶將會(huì)使用參數(shù)文件中的值(Aisle,Window或None)以便更加真實(shí)的模擬一個(gè)客戶端環(huán)境。
參數(shù)化你的腳本:
這個(gè)圖標(biāo)代表有定值。
備注:值并不是大小寫敏感的。
你現(xiàn)在已經(jīng)為seating preference創(chuàng)建了一個(gè)參數(shù),當(dāng)你運(yùn)行負(fù)載測(cè)試時(shí),虛擬用戶會(huì)使用參數(shù)中的值而不使用你事先錄制好的腳本中的值——Aisle。
當(dāng)你運(yùn)行腳本時(shí),Replay log里將會(huì)告訴你每次重復(fù)所用到的參數(shù)中的值。虛擬用戶第一次運(yùn)行使用的是Aisle,第二次是Window,第三次是None。
我怎樣確認(rèn)網(wǎng)頁上的內(nèi)容?
當(dāng)你運(yùn)行一個(gè)測(cè)試時(shí),你經(jīng)常需要確認(rèn)返回頁面上是否包含某些特定內(nèi)容。Content check功能將會(huì)在腳本運(yùn)行時(shí)自動(dòng)幫你在頁面上檢查你的預(yù)期信息。你可以插入兩種內(nèi)容檢查:
Text Check:在網(wǎng)頁上檢查一段文字;
Image Check:在網(wǎng)頁上檢查一張圖片。
在這一部分你將插入一個(gè)text check去檢查是否Find Flight字樣出現(xiàn)在HP Web Tours的Reservations頁面上。
插入一個(gè)text check:
Find Text Dialog打開了:
當(dāng)你回放腳本時(shí),VuGen將會(huì)查找文字"Find Flight"并在回放log中表明是否找到相應(yīng)文字。
我應(yīng)該怎樣去生成調(diào)試信息?
在測(cè)試中 的一些點(diǎn)上,你想讓LoadRunner生成并發(fā)送一些和腳本運(yùn)行時(shí)相關(guān)的消息,這些消息既會(huì)顯示在Output欄中的Replay log中,也會(huì)顯示在Controller的Output窗口中。你可以生成標(biāo)準(zhǔn)輸出信息,或生成信息以指出錯(cuò)誤所在之處。
對(duì)待錯(cuò)誤消息的推薦處理方式是檢查Failed狀態(tài),如果發(fā)現(xiàn)了狀態(tài)為Failed的信息,你讓VuGen去生成一個(gè)錯(cuò)誤消息。更多的詳細(xì)信息請(qǐng)查看HP LoadRunner Function Reference中的例子。
在教程的本部分,你將讓VuGen在應(yīng)用完成一次完整的預(yù)訂后插入一條輸出信息(Output Message)。
插入一條輸出信息:
請(qǐng)注意,插入一條錯(cuò)誤消息你要重復(fù)相同的過程,除非在Steps Toolbox中選擇lr_error_message方法而不是lr_output_message方法。
我的腳本回放真的成功了嗎?
在這一部分,你將學(xué)習(xí)運(yùn)行強(qiáng)化后的腳本并在Replay log中查找text check信息。你將會(huì)檢查text check的結(jié)果以及事務(wù)和參數(shù)化的詳細(xì)信息。
默認(rèn)情況下,image(圖片)和text(文本)的檢查在回放過程中是禁用的,因?yàn)樗鼈冃枰嗟膬?nèi)存。如果你想要執(zhí)行圖片或文本的檢查,你需要在runtime settings中enable他們(使它們可用)。
點(diǎn)擊VuGen工具欄上的Replay按鈕,VuGen開始運(yùn)行腳本,在Output欄的Replay log中生成條目信息。
等待腳本完成運(yùn)行。
點(diǎn)擊Find Next,你先后會(huì)搜索到符合的信息:
web_reg_find started
Registering web_reg_find was successful.
這其實(shí)不是真正的text check,這是在表單提交后進(jìn)行的查詢。
點(diǎn)擊Find Next顯示下一處包含web_reg_find的地方:
Registered web_reg_find successful for "Text=Find Flight" (count=1)
這行表明text被找到,如果有人改變了網(wǎng)頁并移除了Find Flight字樣,那么在之后的運(yùn)行中,Output將指出找不到相應(yīng)的text。
第五課:創(chuàng)建一個(gè)負(fù)載測(cè)試場(chǎng)景
在之前的課程中,你用VuGen來驗(yàn)證你的虛擬用戶腳本。在本節(jié)課中,你將在多個(gè)虛擬用戶負(fù)載你的系統(tǒng)下來測(cè)評(píng)你的系統(tǒng),你將模擬10個(gè)客戶端不同程度的同時(shí)使用訂票系統(tǒng),并在此負(fù)載下觀察系統(tǒng)的運(yùn)行。為了設(shè)計(jì)并運(yùn)行這個(gè)測(cè)試,你需要使用LoadRunner Controller。
場(chǎng)景目標(biāo):
在本節(jié)課中,你的目標(biāo)是創(chuàng)建一個(gè)場(chǎng)景來模擬十個(gè)不同的用戶并發(fā)的進(jìn)行登陸,查詢飛機(jī)票,預(yù)訂飛機(jī)票,檢查旅程與注銷的行為。
介紹一下LoadRunner Controller
負(fù)載測(cè)試意味著要在典型的工作場(chǎng)景下測(cè)試你的系統(tǒng)。比如,你需要對(duì)許多旅游客戶同時(shí)在網(wǎng)上對(duì)同一個(gè)票務(wù)預(yù)訂系統(tǒng)進(jìn)行操作的情況進(jìn)行測(cè)試。
你設(shè)計(jì)場(chǎng)景是為了模擬真實(shí)的情況。為了達(dá)到這個(gè)目的,你需要能夠?qū)δ愕南到y(tǒng)產(chǎn)生負(fù)載,并且對(duì)負(fù)載進(jìn)行時(shí)間上的編排(因?yàn)橛脩舨粫?huì)同時(shí)登陸和注銷)。你也需要模擬不同用戶的不同行為。比如有些用戶用火狐瀏覽器去訪問這個(gè)系統(tǒng),而其他的用戶則用IE。用戶也會(huì)通過不同的網(wǎng)絡(luò)連接到該系統(tǒng),比如modem,DSL,或cable。你在場(chǎng)景中創(chuàng)建并保存這些設(shè)置。
Controller為你提供能夠讓你真實(shí)的模擬你的工作環(huán)境而創(chuàng)建與運(yùn)行測(cè)試所需要的所有工具。
我怎么樣開始使用Controller?
要?jiǎng)?chuàng)建一個(gè)場(chǎng)景,你首先要打開LoadRunner Controller。
HP LoadRunner Controller打開并顯示New Scenario對(duì)話框。
有兩種Scenario Type:
Manual Scenario:讓你能夠控制虛擬用戶的數(shù)量以及他們分別運(yùn)行腳本的次數(shù),并且能夠讓你測(cè)試你的系統(tǒng)同時(shí)能夠響應(yīng)多少用戶的操作。
你可以根據(jù)你的業(yè)務(wù)需求分析用百分比模式(Percentage Mode)來對(duì)腳本間虛擬用戶的總數(shù)進(jìn)行分配。如果你正常安裝LoadRunner的話Percentage Mode這個(gè)默認(rèn)是被勾選的。如果它被勾選了,你要把它取消勾選。
Goal-Oriented Scenario:為了驗(yàn)證你的系統(tǒng)是否可以達(dá)到一個(gè)特殊的目標(biāo)。例如,你可以基于一個(gè)事務(wù)的響應(yīng)時(shí)間或一秒鐘執(zhí)行的事務(wù)數(shù)來驗(yàn)證,那么LoadRunner會(huì)為你基于這些目標(biāo)自動(dòng)的創(chuàng)建一個(gè)場(chǎng)景。
在本次教程中,你只會(huì)使用一個(gè)腳本,讓所有的用戶都模擬相同的操作。想要多方面多角度的模仿真實(shí)世界中的用戶操作,你可以創(chuàng)建不同的虛擬用戶群,每一個(gè)群都用不同的腳本和不同的用戶設(shè)置。
你之前在VuGen中錄制的腳本包含了你想要測(cè)試的業(yè)務(wù)流程,包括登陸,搜索飛機(jī)票,買飛機(jī)票,檢查飛機(jī)票,以及退出網(wǎng)站。你將要把類似的腳本添加到場(chǎng)景中,并配置場(chǎng)景,以實(shí)現(xiàn)8個(gè)不同的用戶同時(shí)在這個(gè)飛機(jī)票預(yù)訂系統(tǒng)上進(jìn)行并發(fā)操作。在本次的測(cè)試中,你還需要額外添加兩名虛擬用戶。
為了實(shí)現(xiàn)這個(gè)目的,你需要提供一個(gè)和你之前創(chuàng)建的那個(gè)腳本類似的腳本。在這里我們建議你使用給出的樣本腳本。
初識(shí)Controller
Controller的Design欄是你設(shè)計(jì)你的負(fù)載測(cè)試的主要接口。Design欄又分為三欄:
我怎樣修改腳本中的細(xì)節(jié)?
按照以下的方法來修改腳本中的細(xì)節(jié):
我怎樣對(duì)系統(tǒng)產(chǎn)生一個(gè)負(fù)載?
在你添加你的虛擬用戶腳本到你的場(chǎng)景后,你將要配置負(fù)載發(fā)生器(load generator),也就是你對(duì)目標(biāo)系統(tǒng)產(chǎn)生負(fù)載的計(jì)算機(jī)。
定義:一個(gè)負(fù)載發(fā)生器意味著一臺(tái)能夠運(yùn)行多個(gè)虛擬用戶并對(duì)系統(tǒng)產(chǎn)生負(fù)載的計(jì)算機(jī)。你可以用許多負(fù)載發(fā)生器,每個(gè)發(fā)生器主持著多個(gè)虛擬用戶。
在這一部分,你將學(xué)習(xí)關(guān)于向場(chǎng)景中添加負(fù)載發(fā)生器,測(cè)試負(fù)載發(fā)生器的連接。
添加負(fù)載發(fā)生器:
在Controller工具欄中點(diǎn)擊Load Generator按鈕。負(fù)載發(fā)生器對(duì)話框打開了:
Load Generator對(duì)話框允許你查看與配置你場(chǎng)景中定義的負(fù)載發(fā)生器,上圖中顯示了一個(gè)叫l(wèi)ocalhost的負(fù)載發(fā)生器的詳細(xì)信息。localhost這個(gè)負(fù)載發(fā)生器的狀態(tài)為"Down"。這表明Controller沒有連接到loadhost這個(gè)負(fù)載發(fā)生器。
在本教程中,你將用你的計(jì)算機(jī)作為復(fù)雜發(fā)生器。
備注:在一個(gè)典型的操作型系統(tǒng)中,你可能會(huì)有多個(gè)負(fù)載發(fā)生器,每一個(gè)負(fù)載發(fā)生器都擁有多個(gè)虛擬用戶。
測(cè)試負(fù)載發(fā)生器的連接:
當(dāng)你運(yùn)行一個(gè)場(chǎng)景時(shí),Controller會(huì)自動(dòng)連接負(fù)載發(fā)生器所在的機(jī)器(load generator machine)。然而,你可以在嘗試運(yùn)行腳本前測(cè)試這些連接。
Controller嘗試連接負(fù)載發(fā)生器所在機(jī)器。當(dāng)連接已經(jīng)建立,負(fù)載發(fā)生器的狀態(tài)就會(huì)從"Down"變成"Ready";
我怎樣去模仿真實(shí)的負(fù)載行為呢?
當(dāng)你已經(jīng)添加了負(fù)載發(fā)生器,你就可以準(zhǔn)備配置負(fù)載行為(load behavior)了。
典型的用戶基本不可能精確的在同一時(shí)間log on以及l(fā)og off系統(tǒng)。LoadRunner允許用戶逐步的log on以及l(fā)og off系統(tǒng)。它也允許你決定場(chǎng)景的持續(xù)時(shí)間,以及場(chǎng)景結(jié)束的方式。你下面將要進(jìn)行配置的場(chǎng)景將會(huì)相對(duì)簡(jiǎn)單。然而,當(dāng)你要設(shè)計(jì)一個(gè)更加貼近真實(shí)的場(chǎng)景時(shí),你可以定義更多逼真的虛擬用戶行為。
你在Controller的Scenario Schedule欄中為manual scenario配置負(fù)載行為(load behavior)。Scenario Schedule欄被分成三個(gè)部分:Schedule Definition區(qū)域,Actions格表,以及Interactive Schedule圖表。
你現(xiàn)在將要更改默認(rèn)的負(fù)載設(shè)置并配置一個(gè)Scenario Schedule(場(chǎng)景時(shí)間安排計(jì)劃):
在Schedule Scenario欄中,確定你選擇了Schedule By:Scenario,Run Mode:Real-world schedule。
你可以在Global Schedule格表中或通過操作Interactive Graph圖表來對(duì)Scenario Schedules設(shè)置Start Vusers,Duration,以及Stop Vusers actions。當(dāng)你在圖表中進(jìn)行定義時(shí),對(duì)應(yīng)在格表中的屬性也會(huì)有相應(yīng)的變化與調(diào)整。
現(xiàn)在你要進(jìn)行設(shè)置,來讓Global Schedule的格表像下面一樣顯示:
初始化意味著通過運(yùn)行腳本中的"vuser_init "action來為一個(gè)負(fù)載測(cè)試準(zhǔn)備虛擬用戶(Vusers)和負(fù)載發(fā)生器(load generators)。依于你系統(tǒng)的配置,在運(yùn)行前初始化Vusers會(huì)帶來更加真實(shí)的結(jié)果。
也就是說每隔幾分鐘增加幾個(gè)Vuser對(duì)系統(tǒng)產(chǎn)生負(fù)載是在這里設(shè)置的。
你需要確定一個(gè)持續(xù)時(shí)間以確保虛擬用戶能夠在指定的時(shí)間段內(nèi)持續(xù)執(zhí)行Schedule action,持續(xù)產(chǎn)生負(fù)載。如果你設(shè)定一個(gè)時(shí)間段(Duration),腳本會(huì)在該時(shí)間段內(nèi)盡可能多的重復(fù)運(yùn)行來滿足需求而忽略掉你在腳本runtime settings中設(shè)置的重復(fù)次數(shù)。
????????備注:說明會(huì)顯示在結(jié)束點(diǎn)的上面,點(diǎn)擊Interactive Schedule Graph工具欄中的隱藏說明按鈕來控制它的顯示。
當(dāng)應(yīng)用運(yùn)行到一個(gè)臨界值的時(shí)候,逐步關(guān)閉虛擬用戶有助,檢查內(nèi)存泄露以及系統(tǒng)恢復(fù)。
?
配置好的Global Schedule如下:
我應(yīng)該怎樣模擬不同種類的用戶呢?
現(xiàn)在你已經(jīng)配置了一個(gè)負(fù)載計(jì)劃表,你需要進(jìn)一步指定用戶在測(cè)試的時(shí)候是如何"行為"的。
當(dāng)你去模擬一個(gè)真實(shí)用戶的時(shí)候,你需要考慮用戶的實(shí)際"行為"。這里的"行為"指的是:一個(gè)用戶兩個(gè)操作步驟之間所需要的停頓時(shí)間,對(duì)于一個(gè)步驟用戶所重復(fù)的次數(shù),等等。
在這一部分,你會(huì)學(xué)到更多關(guān)于LoadRunner的runtime settings,并且你會(huì)使用到Think Time和Logging。
Runtime settings允許你模擬不同種類的用戶活動(dòng)與行為。它們包括:
Run Logic,一個(gè)虛擬用戶重復(fù)一組操作的次數(shù)。
Pacing,重復(fù)操作前需要等待的時(shí)間。
Log,在測(cè)試過程中你想要收集的信息等級(jí)。你第一次運(yùn)行場(chǎng)景時(shí)是推薦你生成log信息的,以防你第一次運(yùn)行時(shí)會(huì)失敗,log會(huì)提供你有關(guān)的調(diào)試信息。
Think Time,用戶步與步操作之間的停頓時(shí)間。由于新老用戶對(duì)系統(tǒng)的熟悉度不同,步與步之間的停頓時(shí)間也不同,老用戶肯定比新用戶嫻熟的多。虛擬用戶通過think time可以更加真實(shí)的模仿真實(shí)用戶步與步之間的停頓。
Speed Simulation,用戶通過不同的網(wǎng)絡(luò)連接,包括modem,DSL以及cable。
Browser Emulation,用戶通過不同的瀏覽器來查看應(yīng)用的性能。
Content Check,能夠自動(dòng)的檢查用戶定義的錯(cuò)誤。
假設(shè)你的應(yīng)用在出錯(cuò)時(shí)會(huì)發(fā)送一個(gè)自定義的頁面,這個(gè)自定義頁面包含ASP Error這個(gè)字樣,你需要查找服務(wù)器所返回的所有頁面來檢查這些字樣是否包含在內(nèi)。
你可以讓LoadRunner通過runtime settings中的Content Check在測(cè)試過程中自動(dòng)的完成這個(gè)檢查的過程,LoadRunner會(huì)自動(dòng)的檢查你設(shè)定的字樣,如果發(fā)現(xiàn)則會(huì)產(chǎn)生一個(gè)錯(cuò)誤信息。在場(chǎng)景運(yùn)行時(shí),你可以確認(rèn)這些內(nèi)容檢查方面的錯(cuò)誤。
在負(fù)載的情況下我要怎樣監(jiān)控系統(tǒng)?
現(xiàn)在你已經(jīng)定義了你的虛擬用戶在測(cè)試中的行為,已經(jīng)為建立監(jiān)控器做好準(zhǔn)備。
當(dāng)你對(duì)一個(gè)應(yīng)用產(chǎn)生負(fù)載時(shí),你想要實(shí)時(shí)的查看這個(gè)應(yīng)用的性能以及潛在的瓶頸所存在的地方。你將在負(fù)載測(cè)試的過程中使用LoadRunner的monitor來監(jiān)控每一層次結(jié)構(gòu)的性能,包括服務(wù)器,系統(tǒng)的組件。LoadRunner提供了許多主要的后臺(tái)系統(tǒng)組件(包括Web,Application,Database,以及ERP/CRM服務(wù)器)的監(jiān)控器。
例如,你可以根據(jù)正在運(yùn)行的Web Server的類別選擇一個(gè)Web Server Resources監(jiān)控器。你可以為相關(guān)的監(jiān)控器買一個(gè)證書,比如IIS,并用這個(gè)監(jiān)控器來找出反映在IIS resources中的問題。
在這一章節(jié),你將學(xué)會(huì)怎樣添加以及配置Windows Resources監(jiān)控器(monitor)。你可以用監(jiān)控器來確定負(fù)載對(duì)你CPU(處理器),disk(硬盤)以及memory resources(內(nèi)存資源)的影響。
Windows Resources圖標(biāo)是顯示在圖表視圖區(qū)域四個(gè)默認(rèn)圖表中的一個(gè)。你將在下一節(jié)課中學(xué)會(huì)如何打開其他的圖表。
默認(rèn)的Windows Resources measurements會(huì)在Resource Measurements on <server machine>列表中列舉出來。
在Windows Resources對(duì)話框中點(diǎn)擊"OK"關(guān)閉對(duì)話框,monitor就被激活了。
第六課:運(yùn)行負(fù)載測(cè)試
當(dāng)你運(yùn)行負(fù)載測(cè)試時(shí),LoadRunner會(huì)對(duì)系統(tǒng)產(chǎn)生負(fù)載。你可以隨后用LoadRunner的監(jiān)控器和圖標(biāo)來觀察負(fù)載的情況下系統(tǒng)的性能。
初始Controller Run視圖
Controller的Run欄是場(chǎng)景的管理和監(jiān)控中心。它包含五個(gè)欄:
我怎樣運(yùn)行一個(gè)負(fù)載測(cè)試場(chǎng)景?
在這一部分,你將打開場(chǎng)景:
點(diǎn)擊Controller底部的Run欄。
注意到Scenario Groups欄中的Down列下有8個(gè)虛擬用戶,這些虛擬用戶是你創(chuàng)建場(chǎng)景(Scenario)時(shí)所創(chuàng)建的。
由于場(chǎng)景還沒有運(yùn)行,所有其他的計(jì)數(shù)器都保持在0,圖表視圖區(qū)域的所有圖表都是空的,當(dāng)你在下一步運(yùn)行場(chǎng)景時(shí),圖表和計(jì)數(shù)器將會(huì)開始顯示信息。
點(diǎn)擊Start Scenario按鈕或選擇Scenario>Start來開始運(yùn)行場(chǎng)景。
如果你是按教程第一次運(yùn)行的話,Controller會(huì)開始場(chǎng)景并將結(jié)果文件自動(dòng)保存到負(fù)載發(fā)生器的temp文件夾下。
如果你是在重復(fù)做測(cè)試,你會(huì)被建議去覆蓋已有的結(jié)果文件。
點(diǎn)擊No,因?yàn)榈谝淮呜?fù)載測(cè)試的結(jié)果要用來和之后的測(cè)試結(jié)果進(jìn)行比對(duì)。之后設(shè)置結(jié)果保存目錄的對(duì)話框被打開:
確定一個(gè)新的保存結(jié)果的文件夾路徑,為每一次的測(cè)試結(jié)果起一個(gè)有意義的獨(dú)特的名字,因?yàn)榉治鰣D表時(shí)你可能會(huì)需要把多次場(chǎng)景的運(yùn)行結(jié)果疊加。
在負(fù)載情況下該如何管理應(yīng)用程序呢?
你會(huì)使用Controller的在線圖表來觀察監(jiān)控器(monitors)所收集的性能數(shù)據(jù)。你通過這些信息來讓你的系統(tǒng)遠(yuǎn)離潛在的危機(jī)。
Run欄下的Graph Display欄中顯示了如下的默認(rèn)圖表:
在Available Graphs欄中,Web Resources Graphs下,選擇Throughput表并把它拖拽到Graph Display欄中。Throughput表的measurements顯示在Graph Display欄和Graph Legend欄中。
Throughput(吞吐量)表顯示虛擬用戶從服務(wù)器接收 的數(shù)據(jù)在任意指定的某一秒中的總量(以bytes衡量)。你可以將此圖與Transaction Response Time(事務(wù)響應(yīng)時(shí)間)圖表進(jìn)行比較以檢查Throughput(吞吐量)是如何影響Transaction(事務(wù))的性能的。
當(dāng)吞吐量的規(guī)模隨著時(shí)間的進(jìn)行與虛擬用戶數(shù)的增加而變大時(shí),這表明帶寬是足夠用的。當(dāng)圖表隨著虛擬用戶數(shù)量增加而趨于相對(duì)平緩時(shí),我們有理由去猜測(cè)與推斷帶寬限制了數(shù)據(jù)傳輸量。
要怎樣才能實(shí)時(shí)的觀察一個(gè)虛擬用戶的運(yùn)行?
當(dāng)我們模擬用戶的時(shí)候,你可以實(shí)時(shí)的查看虛擬用戶的操作以確定他們執(zhí)行的操作是正確的。Controller通過Runtime Viewer讓你能夠?qū)崟r(shí)的查看虛擬用戶的操作。
形象的觀察一個(gè)虛擬用戶的操作:
Status列顯示了每個(gè)虛擬用戶的狀態(tài)。在上面的例子中,你可以看到四個(gè)虛擬用戶在運(yùn)行,四個(gè)已經(jīng)處于down掉狀態(tài)。Scheduler中的Start Vusers操作讓Controller一次釋放兩個(gè)虛擬用戶。隨著場(chǎng)景的進(jìn)行,虛擬用戶將會(huì)2個(gè)2個(gè)的以30秒為周期被添加到組中。
我在哪里可以看到一個(gè)關(guān)于虛擬用戶操作(Vuser actions)的總結(jié)?
想要單獨(dú)看一個(gè)虛擬用戶在運(yùn)行測(cè)試的過程中的進(jìn)展,你可以顯示一個(gè)包含虛擬用戶操作文字總結(jié)的log文件。
查看虛擬用戶操作的文字性總結(jié):
log中包含了與用戶操作相對(duì)應(yīng)的信息。比如,在上面的窗口中,Virtual User Script started表明虛擬用戶運(yùn)行的開始時(shí)間。滑到底部你會(huì)觀察到隨著虛擬用戶操作的進(jìn)行,相應(yīng)的新信息也會(huì)被添加進(jìn)來。
怎樣在測(cè)試中增加負(fù)載?
為了給系統(tǒng)增加負(fù)載,你可以在測(cè)試的過程中手動(dòng)的添加更多的虛擬用戶。
兩個(gè)額外的虛擬用戶被添加到travel_agent組中并且在localhost負(fù)載發(fā)生器上運(yùn)行。場(chǎng)景狀態(tài)欄將顯示現(xiàn)在有10個(gè)虛擬用戶正在運(yùn)行。
你可能會(huì)收到LoadRunner Controller無法激活額外的虛擬用戶的消息。這是因?yàn)槟憧赡茉谟媚愕谋緳C(jī)來當(dāng)作負(fù)載發(fā)生器而且它只有很有限的內(nèi)存資源。通常來說,用一個(gè)專業(yè)的機(jī)器作為負(fù)載發(fā)生器就可以避免這種情況的發(fā)生。
應(yīng)用在負(fù)載的情況下是怎樣執(zhí)行的?
在你的Scenario Status欄【Run欄中】中,你可以仔細(xì)的看到有哪些虛擬用戶引起了應(yīng)用的問題,事務(wù)失敗數(shù)以及錯(cuò)誤數(shù)偏高表明了你的應(yīng)用在負(fù)載下可能執(zhí)行的并不好。
Scenario Status欄的頭部顯示了場(chǎng)景的整體狀態(tài):
你的應(yīng)用遭遇錯(cuò)誤了嗎?
在重負(fù)的情況下,應(yīng)用開始出現(xiàn)失敗的情況,你可能會(huì)遇到錯(cuò)誤和事務(wù)的失敗。你的Controller會(huì)在Output窗口中顯示錯(cuò)誤信息。
Output對(duì)話框被打開并顯示了消息信息文字,包括產(chǎn)生的所有消息數(shù),虛擬用戶和負(fù)載發(fā)生器產(chǎn)生的錯(cuò)誤,以及發(fā)生錯(cuò)誤的腳本。
你可以通過點(diǎn)擊相應(yīng)列的藍(lán)色鏈接查看關(guān)于每條消息、虛擬用戶、腳本以及關(guān)聯(lián)的負(fù)載發(fā)生器的錯(cuò)誤信息。
例如:想要知道腳本中哪里出了錯(cuò),查看點(diǎn)擊進(jìn)入Total Message列。Output窗口將顯示你選擇的錯(cuò)誤代碼的所有相關(guān)信息,包括時(shí)間,重復(fù)次數(shù),以及腳本中出錯(cuò)的位置行。
點(diǎn)擊Line Number列下的鏈接,VuGen將被打開,顯示了腳本中出錯(cuò)的行。你可以通過這一信息來幫你確認(rèn)哪些響應(yīng)時(shí)間較慢的事務(wù)導(dǎo)致了應(yīng)用在負(fù)載下的失敗。
我怎樣得知場(chǎng)景是否已經(jīng)運(yùn)行結(jié)束?
在場(chǎng)景運(yùn)行的總結(jié)處,Scenario Status欄的頭部顯示了Down這一狀態(tài)。這說明場(chǎng)景中所有的虛擬用戶都已經(jīng)運(yùn)行結(jié)束。
你可以打開Vsuers對(duì)話框來分別查看每個(gè)虛擬用戶的狀態(tài)。虛擬用戶對(duì)話框顯示了每個(gè)虛擬用戶執(zhí)行的重復(fù)次數(shù),成功的重復(fù)次數(shù)以及經(jīng)歷的時(shí)間(Elapsed Time)。
你的系統(tǒng)是否在負(fù)載下運(yùn)行良好?
想要知道你的系統(tǒng)是否在負(fù)載下依舊運(yùn)行良好,你要去查看事務(wù)的響應(yīng)時(shí)間并決定響應(yīng)時(shí)間是否在可接受的范圍內(nèi)。如果事務(wù)的響應(yīng)時(shí)間在場(chǎng)景中增加,你需要去查找瓶頸出在哪里。你會(huì)在最后一課中學(xué)習(xí)更多關(guān)于這方面的知識(shí)。
一旦一個(gè)問題被發(fā)現(xiàn),就可能需要包括開發(fā),DBAs(數(shù)據(jù)庫管理員),網(wǎng)絡(luò)以及其他方面的系統(tǒng)專家來修復(fù)這個(gè)問題。在做出適當(dāng)調(diào)整后,我們需要重新進(jìn)行負(fù)載測(cè)試來驗(yàn)證該次做出的調(diào)整是否滿足了所需的要求。你重復(fù)這一循環(huán)來使得系統(tǒng)的性能不斷得到優(yōu)化。
為了便于你再次運(yùn)行具有相同配置的場(chǎng)景,選擇File>Save或點(diǎn)擊Controller工具欄中的Save按鈕進(jìn)行保存。
第七課:分析你的場(chǎng)景
在之前的課程中你學(xué)會(huì)了如何設(shè)計(jì),控制,運(yùn)行一個(gè)場(chǎng)景。你運(yùn)行負(fù)載測(cè)試,就一定希望能夠分析運(yùn)行的結(jié)果,以找出需要排查的問題來提高你的系統(tǒng)性能。在你的分析的過程中所生成的圖表和報(bào)告代表了你場(chǎng)景性能的重要信息。通過這些圖表和報(bào)告,你可以找到你應(yīng)用程序中存在的瓶頸,以確定需要做怎樣的修整才能提高它的性能。
Analysis Session是怎么工作的?
Analysis session(分析會(huì)話)的目的是為了發(fā)現(xiàn)你系統(tǒng)性能上存在的缺陷并找到其根源,例如:
- 測(cè)試的預(yù)期達(dá)到了嗎?在負(fù)載的情況下客戶終端的事務(wù)時(shí)間是多少?SLA滿足目標(biāo)嗎?事務(wù)的平均事務(wù)時(shí)間是多少?
- 系統(tǒng)的哪些部分會(huì)導(dǎo)致降低系統(tǒng)的性能?網(wǎng)絡(luò)和服務(wù)器的響應(yīng)時(shí)間是多少?
- 你可以通過聯(lián)系事務(wù)響應(yīng)時(shí)間和后臺(tái)監(jiān)控模型來找到一個(gè)可能的原因嗎?
在后續(xù)的章節(jié)中你將會(huì)學(xué)習(xí)如何打開LoadRunner Analysis,并建立與查看能夠幫你找到性能問題與根源之所在的圖表和報(bào)告。
我怎樣開始我的分析會(huì)話?
雙擊桌面上的Analysis圖標(biāo),LoadRunner Analysis被打開;
為了達(dá)到本節(jié)課的目的,能夠舉例分析說明盡可能多樣的結(jié)果,我們將會(huì)運(yùn)行一個(gè)和你在之前的章節(jié)中運(yùn)行的場(chǎng)景相似的場(chǎng)景。但是這一次,你的場(chǎng)景中將包含70個(gè)虛擬用戶,而不再是10個(gè)。你現(xiàn)在將要打開針對(duì)于你的測(cè)試結(jié)果所創(chuàng)建的分析會(huì)話。
初始Analysis窗口
Analysis包括以下主要欄:
備注:還有一些可以從工具欄中訪問的欄,這些欄可以進(jìn)行拖拽并在屏幕上任意地方進(jìn)行拖放。
我達(dá)到了我的目標(biāo)嗎?(Service Level Agreement)
在這一部分,我們將介紹一下Service Level Agreement,即我們所說的SLA。
SLAs是你為你的負(fù)載測(cè)試場(chǎng)景所定義的特殊目標(biāo)。Analysis將這些目標(biāo)和LoadRunner運(yùn)行時(shí)收集與存儲(chǔ)的性能相關(guān)的數(shù)據(jù)相比較,然后為目標(biāo)判斷SLA的狀態(tài)(通過或失敗)。
例如,你可以為你腳本中事務(wù)的平均事務(wù)時(shí)間定義一個(gè)具體的目標(biāo),或臨界值。在測(cè)試運(yùn)行結(jié)束后,LoadRunner將你的目標(biāo)和實(shí)際錄制的平均事務(wù)時(shí)間相對(duì)比。Analysis將顯示你定義的每個(gè)SLA的狀態(tài),通過或失敗。例如,如果實(shí)際的平均事務(wù)時(shí)間沒有超過你定義的臨界值,SLA的狀態(tài)就將是通過的。
作為你目標(biāo)定義的一部分,你可以讓SLA將負(fù)載的標(biāo)準(zhǔn)也考慮在內(nèi),換句話說也就是可接受的臨界值將會(huì)隨著負(fù)載的等級(jí)不同而變化,例如,Running Vusers,Throughput等等。當(dāng)負(fù)載增加,你可以允許一個(gè)更高的臨界值。
根據(jù)你所定義的目標(biāo),LoadRunner通過以下幾種方法中的一種確定了SLA的狀態(tài):
按照時(shí)間軸上的時(shí)間來定義SLA的狀態(tài):Analysis在運(yùn)行時(shí)按固定的時(shí)間間隔顯示SLA的狀態(tài)(比如:每隔5s)。
按整個(gè)運(yùn)行過程來定義SLA的狀態(tài):Analysis為整個(gè)場(chǎng)景的運(yùn)行顯示一個(gè)單獨(dú)的SLA狀態(tài)。
SLAs可以在場(chǎng)景在Controller中運(yùn)行前就定義好,也可以之后在Analysis中來定義。
在后續(xù)的部分中,你將要用HP Web Tours這個(gè)樣例來定義一個(gè)SLA。假設(shè)HP Web Tours的管理員任何時(shí)候都想要知道book_flight和search_flight的平均事務(wù)時(shí)間是否超過了固定的值。為了達(dá)到這個(gè)目的,你可以選擇事務(wù)并設(shè)置臨界值(threshold values)。這些臨界值就是平均事務(wù)時(shí)間在可接受范圍內(nèi)的最大值。
你也將設(shè)置三個(gè)臨界值來將具體的負(fù)載標(biāo)準(zhǔn)考慮在內(nèi),在這個(gè)例子中我們指的就是Running Vusers(運(yùn)行著的虛擬用戶)。換句話說,隨著運(yùn)行的虛擬用戶數(shù)的增加,臨界值也隨之升高。
這是因?yàn)殡m然HP Web Tours的管理員希望平均事務(wù)時(shí)間越低越好,但是我們不得不承認(rèn)這一年中的有些時(shí)候HP Web Tours站點(diǎn)確實(shí)會(huì)承擔(dān)相比于平時(shí)更大的負(fù)載。例如,在旅游高峰季的時(shí)候,會(huì)有更多的旅游客戶去登陸網(wǎng)站來預(yù)訂飛機(jī)票,檢查航班等等。在這種可以理解的高負(fù)載情況下,一個(gè)稍微長(zhǎng)一點(diǎn)的平均事務(wù)響應(yīng)時(shí)間將是可以接受的。
你將設(shè)定SLA來考慮三個(gè)負(fù)載場(chǎng)景,輕負(fù)載,正常負(fù)載和高負(fù)載。每一個(gè)場(chǎng)景都有它的臨界值。
我怎樣定義一個(gè)SLA?
你將在場(chǎng)景運(yùn)行后在Analysis中定義一個(gè)SLA。
備注:推薦在場(chǎng)景運(yùn)行前,在Controller中定義一個(gè)SLA。但是出于本教程的目的,你還沒有對(duì)之前的章節(jié)中運(yùn)行的場(chǎng)景進(jìn)行分析,你將會(huì)在Analysis中定義SLA。想在Controller中定義一個(gè)SLA,在Design欄的Service Level Agreement模塊中點(diǎn)擊"New"。
定義一個(gè)SLA:
注意:當(dāng)你第一次打開SLA向?qū)?#xff0c;Start頁會(huì)顯示在你面前。如果你不希望下次運(yùn)行向?qū)У臅r(shí)候再看到這個(gè)頁面,勾選"Skip this page next time"。
在Select Transactions頁面,在Available Transactions列表中選擇一個(gè)想要監(jiān)控的事務(wù)。
在Set Load Criteria頁面,你要讓SLA考慮到不同的負(fù)載場(chǎng)景。
在上圖中,你設(shè)置了SLA,對(duì)三個(gè)潛在的負(fù)載場(chǎng)景定義了一個(gè)可以接受的平均事務(wù)時(shí)間:
-Light Load(輕負(fù)載):0到19個(gè)虛擬用戶;
-Average Load(正常負(fù)載):20到49個(gè)虛擬用戶;
-Heavy Load(重負(fù)載):多于50個(gè)虛擬用戶;
在Set Threshold Values頁面,你為check_itinerary事務(wù)定義了一個(gè)可以接受的平均事務(wù)時(shí)間。
像下圖中所示來對(duì)臨界值進(jìn)行設(shè)定:
在此你僅僅指出了下列平均事務(wù)時(shí)間是可以接受的:
-Light Load(輕負(fù)載):小于等于5s;
-Average Load(正常負(fù)載):小于等于10s;
-Heavy Load(重負(fù)載):小于等于15s。
先后點(diǎn)擊"Next"和"Finish",窗口關(guān)閉。
Analysis將會(huì)把你的SLA設(shè)置應(yīng)用到Summary Report(總結(jié)報(bào)告)中,之后的report將會(huì)被更新,包含所有相關(guān)的SLA信息。
我要怎樣查看性能的總結(jié)?
Summary Report欄顯示了關(guān)于場(chǎng)景運(yùn)行的總體信息和統(tǒng)計(jì),以及所有相關(guān)的SLA信息。例如,根據(jù)我們定義的SLAs性能最壞的事務(wù)都有哪些,在特定的時(shí)間間隔下特定的事務(wù)如何執(zhí)行,以及所有的SLA狀態(tài)。你要從Session Explorer中打開Summary Report。
在Statistics Summary模塊,你可以看到最多有70個(gè)虛擬用戶在本次測(cè)試中運(yùn)行。其余的統(tǒng)計(jì)諸如total/average throughput,total/average hits等信息也會(huì)被顯示出來。
這五個(gè)最壞事務(wù)的表單會(huì)告訴你:根據(jù)你定義的SLA,哪5個(gè)事務(wù)的性能最壞。
你可以看到在check_itinerary事務(wù)執(zhí)行的時(shí)間段內(nèi),有66.4%的時(shí)間超過了SLA中所定義的臨界值。在整個(gè)運(yùn)行過程中超過SLA臨界值程度的平均百分比為200.684%。
Scenario Behavior Over Time模塊將會(huì)顯示不同時(shí)間內(nèi)事務(wù)的性能,綠色的方塊顯示的是事務(wù)性能在SLA所設(shè)定的臨界值內(nèi)的時(shí)間段,紅色的方塊顯示的是失敗的事務(wù),灰色的方塊顯示的是沒有相關(guān)的SLA被定義。
你可以看到對(duì)于你定義了SLA的事務(wù),check_itinerary在多數(shù)時(shí)間段內(nèi)性能超過了臨界值。
Transaction Summary模塊列出了每一個(gè)事務(wù)的性能總結(jié)。
我們還可以看到check_itinerary事務(wù)失敗了28次。
回顧每個(gè)事務(wù)的時(shí)間,90 Percent這一列顯示了特定事務(wù)90%次運(yùn)行所用的時(shí)間。你可以看到90%的check_itinerary事務(wù)在測(cè)試中執(zhí)行耗時(shí)65.754秒,是它平均時(shí)間(32.826秒)的兩倍,這意味著該事務(wù)在大多數(shù)情況下響應(yīng)時(shí)間較慢。
注意SLA Status這一列顯示了和"在SLA中定義的事務(wù)"相關(guān)的總體狀態(tài):check_itinerary的SLA Status為Failed。
我要看的到的性能!
你可以在Session Explorer欄中訪問可觀看的性能圖。接下來你要查看并分析Average Transaction Response Time圖。
圖上的點(diǎn)代表了場(chǎng)景運(yùn)行中某一時(shí)間點(diǎn)事務(wù)的平均響應(yīng)時(shí)間。讓你的鼠標(biāo)停留在圖中的某點(diǎn)上,一個(gè)黃色的方框?qū)⒊霈F(xiàn)并顯示該點(diǎn)的坐標(biāo)信息。
注意到check_itinerary事務(wù)的平均事務(wù)時(shí)間波動(dòng)很大,并且在場(chǎng)景運(yùn)行到2分56秒時(shí)達(dá)到了一個(gè)75.067秒的峰值。
在一個(gè)性能良好的服務(wù)器上,事務(wù)將會(huì)有一個(gè)比較平穩(wěn)的平均時(shí)間折線,在圖的最下方,你可以看到logon,logoff,book_flight,以及search_flight事務(wù)都有著相對(duì)更穩(wěn)定的平均事務(wù)時(shí)間。
我的服務(wù)器是否性能良好?
在課程之前的部分你看到了你的服務(wù)器性能的不穩(wěn)定性。現(xiàn)在你將要分析70個(gè)Running Vusers(正著運(yùn)行的虛擬用戶)對(duì)你的系統(tǒng)所產(chǎn)生的影響。
在Graphs下的Session Explorer中點(diǎn)擊Running Vusers。Running Vusers圖將顯示在圖顯區(qū)域。
你可以看到虛擬用戶逐漸的開始運(yùn)行,之后經(jīng)歷了一個(gè)大約三分鐘的長(zhǎng)度,這段時(shí)間內(nèi)70虛擬用戶同時(shí)運(yùn)行,再后來虛擬用戶逐漸停止運(yùn)行。
當(dāng)你在一個(gè)圖中進(jìn)行過濾的時(shí)候,圖中的數(shù)據(jù)也會(huì)被收縮,收縮到只顯示你關(guān)心的那部分。其他的部分都將被隱藏掉。
Running Vusers圖現(xiàn)在只顯示1:30到3:45這段時(shí)間在場(chǎng)景中運(yùn)行著的虛擬用戶。所有其他的虛擬用戶將被過濾掉。
注意:要清理filter,在圖上點(diǎn)擊右鍵,選擇Clear Filter/Group By,或者也可以點(diǎn)擊Analysis工具欄中的Clear Filter/Group By按鈕。
你可以將這兩個(gè)表拼接在一起以觀察一張圖中數(shù)據(jù)對(duì)另一張圖中的數(shù)據(jù)所產(chǎn)生的影響,這種做法叫做關(guān)聯(lián)兩張圖。
例如,你可以將Running Vusers圖和Average Transaction Response Time圖進(jìn)行關(guān)聯(lián)來查看大量的虛擬用戶對(duì)平均事務(wù)時(shí)間產(chǎn)生的影響。
現(xiàn)在這兩張圖就合在一起顯示了——Running Vusers - Average Transaction Response Time圖。
在這張圖中你可以看到隨著虛擬用戶數(shù)的增多,check_itinerary事務(wù)的平均時(shí)間逐漸增加。換句話說,平均響應(yīng)時(shí)間隨著負(fù)載增加而增加。
在66個(gè)虛擬用戶的時(shí)候,平均響應(yīng)時(shí)間出現(xiàn)了一個(gè)急劇的(sudden,sharp)增長(zhǎng)。我們說這個(gè)測(cè)試broke the server(沖破了服務(wù)器),在多于66個(gè)虛擬用戶同時(shí)運(yùn)行時(shí),平均響應(yīng)時(shí)間開始減少。
保存一個(gè)模板(template)
至今你已經(jīng)過濾了一張圖并關(guān)聯(lián)了兩張圖。下一次你分析場(chǎng)景的時(shí)候,你可能會(huì)想要看到相同的圖,有相同的過濾與合并條件。你可以將你的merge and filter(合并與過濾)的設(shè)置保存到一個(gè)模板中,并將它們用于其他的分析會(huì)話中。
保存你的模板:
下一次你打開一個(gè)新的分析會(huì)話并且想要用一個(gè)已存的模板時(shí):
我怎樣精確定位問題所出自的根源?
至今為止,你已經(jīng)看到了隨著負(fù)載的增加,對(duì)check_itinerary事務(wù)的平均響應(yīng)時(shí)間會(huì)產(chǎn)生一個(gè)負(fù)面的影響。
你可以更深入的研究check_itinerary事務(wù)以便發(fā)現(xiàn)哪些系統(tǒng)資源負(fù)面地影響了它的性能。
這個(gè)自動(dòng)關(guān)聯(lián)工具可以將所有包含可能會(huì)影響到check_itinerary事務(wù)響應(yīng)時(shí)間的數(shù)據(jù)的圖合并到一起并精確的定位問題發(fā)生時(shí)還有什么事情正在發(fā)生。
看check_itinerary這一事務(wù),特別在過去的1到4分鐘這一時(shí)間段內(nèi)。平均響應(yīng)時(shí)間直線上升并在3分鐘左右到達(dá)峰值。
這個(gè)Auto Correlated Graph(自動(dòng)關(guān)聯(lián)圖)將會(huì)顯示在圖顯區(qū)域。Check_itinerary這一事務(wù)被高亮顯示。
這個(gè)自動(dòng)關(guān)聯(lián)的圖有個(gè)默認(rèn)的名字:Auto Correlated Graph [1].
在Legend欄下,從Graph列為Windows Resources的項(xiàng)中找到Measurement為Pool Nonpaged Bytes和Private Bytes這倆Measurements。
在Measurement和Correlation Match列中,你可以看到這些內(nèi)存相關(guān)的measurements(測(cè)量尺度),和check_itinerary這一事務(wù)的Correlation Match超過了70%。這意味著這些元素的性能和check_itinerary這一事務(wù)的性能在指定的時(shí)間段內(nèi)緊緊相關(guān)。
我們可以準(zhǔn)確的斷定當(dāng)check_itinerary這一事務(wù)的響應(yīng)時(shí)間達(dá)到峰值的時(shí)候,系統(tǒng)的內(nèi)存資源將會(huì)出現(xiàn)短缺。
我還可以收集到和場(chǎng)景運(yùn)行相關(guān)的其他信息嗎?
除了在分析會(huì)話開始的graph樹上能看到的圖外,你可以顯示各種圖來收集其他關(guān)于場(chǎng)景運(yùn)行的信息。
Open A New Graph對(duì)話框被打開并列舉了包含數(shù)據(jù)的并能夠顯示的圖的種類:
- Vusers——顯示虛擬用戶及其狀態(tài)的信息;
- Errors——顯示錯(cuò)誤統(tǒng)計(jì);
- Transactions——顯示事務(wù)及其響應(yīng)時(shí)間的數(shù)據(jù);
- Web Resources ——顯示點(diǎn)擊量,吞吐量,以及連接數(shù)據(jù);
- Web Page Diagnostics——顯示你腳本中監(jiān)控的各個(gè)網(wǎng)頁的數(shù)據(jù);
- System Resources——顯示系統(tǒng)資源使用的數(shù)據(jù);
現(xiàn)在打開一些其他的圖來對(duì)你的場(chǎng)景運(yùn)行情況有一個(gè)更好的了解。
我怎樣發(fā)布我的發(fā)現(xiàn)?
你可以從你的分析會(huì)話中通過HTML或微軟的Word報(bào)告來發(fā)布你的發(fā)現(xiàn)。報(bào)告是用設(shè)計(jì)者模板創(chuàng)建的,并且包含了解釋以及對(duì)圖和數(shù)據(jù)的說明。
HTML Reports
HTML報(bào)告可以在任何瀏覽器被打開和查看。
創(chuàng)建一個(gè)HTML報(bào)告:
點(diǎn)擊"Save"后Analysis會(huì)自動(dòng)創(chuàng)建報(bào)告并將它顯示在你的瀏覽器中。
你會(huì)注意到你的HTML報(bào)告的布局和你的分析會(huì)話非常相似。你可以點(diǎn)擊左側(cè)欄中的鏈接來查看不同的圖。每張圖的描述信息將會(huì)在頁面底部給出。
微軟Word報(bào)告
你可以將你的分析會(huì)話表現(xiàn)在一個(gè)微軟的word報(bào)告中。Word報(bào)告比HTML報(bào)告更好理解,因?yàn)槟憧梢赃x擇讓它包含場(chǎng)景的總體信息,測(cè)量尺度描述(measurement description)等等。你也可以格式化你的報(bào)告,讓它包含你公司的名字和標(biāo)志(logo),以及作者的詳細(xì)信息。
就像任意一個(gè)Word文件一樣,這個(gè)報(bào)告是可以編輯的,所以你可以在你生成的報(bào)告中添加更多的評(píng)論與發(fā)現(xiàn)。
創(chuàng)建一個(gè)微軟Word報(bào)告:
New Report對(duì)話框打開了。
默認(rèn)情況下,建立的報(bào)告將會(huì)包括一個(gè)標(biāo)題頁面,一個(gè)包含內(nèi)容的表結(jié)構(gòu),圖的詳細(xì)信息以及描述,以及測(cè)量尺度描述(measurement description)。你可以選擇性的將腳本中的信息加到報(bào)告里,讓你可以查看業(yè)務(wù)流程步驟中的縮略圖。
你可以通過選擇"Include company logo"找到相應(yīng)的logo文件位置并加入報(bào)告中。Logo文件必須是個(gè)".bmp"格式的文件。
出于本教材的目的,你要添加一個(gè)"Executive Summary"(概要)到Content Items列表中;
"Executive Summary"被加到左側(cè)的Content Items欄中。
選擇"Executive Summary",在右側(cè)編輯框中輸入下列文字:
- Objectives: The objectives of the test scenario were to....
- Conclusions: The conclusions I reached are as follows:
- 在Content Items欄中選擇Workload Characteristics。在Selected Columns列表中點(diǎn)擊"Average Hits per Second"。
- 點(diǎn)擊向下箭頭按鈕直到它移動(dòng)到Total Transactions Number下面。在報(bào)告中,Average Hits per Second這一內(nèi)容項(xiàng)將會(huì)在Total Transactions Number這一內(nèi)容項(xiàng)后面緊接著顯示。
之后LoadRunner將會(huì)自動(dòng)收集數(shù)據(jù)并生成一個(gè)Microsoft Word文件,并用Microsoft Word打開。
除了你在分析會(huì)話時(shí)生成的圖外,報(bào)告還包含了一個(gè)客觀的結(jié)論,以及其他你在創(chuàng)建報(bào)告時(shí)選擇的部分和圖表。
總結(jié)
在這節(jié)課中,你學(xué)會(huì)了最基本的——定義SLA(Service Level Agreement),分析一個(gè)場(chǎng)景的運(yùn)行,以及將你的測(cè)試結(jié)果發(fā)布到報(bào)告中。
你已經(jīng)知道性能上的問題將會(huì)在你研究各種顯示服務(wù)器瓶頸的圖表后被發(fā)現(xiàn),原因可能是由于負(fù)載過重。你已經(jīng)看到了,你可以通過配置圖表來顯示相關(guān)聯(lián)的數(shù)據(jù),指出這些瓶頸的根源之所在。
總結(jié)
以上是生活随笔為你收集整理的HP LoadRunner 12.02 Tutorial T7177-88037教程独家中文版的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: day-16 jquery的DOM文档操
- 下一篇: Laravel Query Builde