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