LoadRunner 12.02教程獨家中文版 web
Tylan獨家嘔血翻譯正則表達式
轉載請註明出自「天外歸雲」的博客園 數據庫
以下所示:瀏覽器
Vugen:Virtual User Generator,虛擬用戶發生器的簡稱,用來錄製用戶的業務流程,建立自動化性能測試腳本,亦稱之爲Vuser腳本。服務器
Controller:控制器,用於組織、驅動、管理並監控負載測試。網絡
Analysis:分析器,幫助你查看,剖析並比較負載測的結果報告。session
Load Generator:負載發生器,用來攢動與運行虛擬用戶以對目標系統產生負載的計算機。併發
場景:在場景中將根據性能需求來定義測試過程當中所發生的事件。dom
虛擬用戶:虛擬用戶會在系統中模仿真實用戶的行爲。一個場景能夠包含數以千計的虛擬用戶。編輯器
虛擬用戶腳本:錄製了你在程序中所操做的業務流程。
協議:協議就是客戶端和服務器之間的交流方式。
事務:事務用以衡量你的系統性能。一個事務表明了一個或多個終端用戶的業務流程。一個事務讓你衡量業務流程所花費的時間成爲可能。
腳本足跡:由負載發生器所需的大量不一樣資源所定義,以執行Vuser腳本爲目的。典型的資源包括內存,CPU能源,硬盤空間。
爲了理解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腳本。這裏,你須要用Vugen來完成這一需求。
在一個性能測試環境中,LoadRunner用虛擬用戶代替了真實用戶,虛擬用戶也叫Vusers,虛擬用戶經過可預見的,重複性的模擬真實用戶操做來對系統產生負載。
Vugen幫你建立虛擬用戶腳本,它以錄製與回放的原則去工做。當你在你的應用中完成一遍業務流程的同時,Vugen會記錄你的操做並將其按步驟翻譯成虛擬用戶腳本。虛擬用戶腳本是你負載測試的基礎構成。
去開發一個虛擬用戶腳本,你首先要打開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,它定義了虛擬用戶的行爲。
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中設置。
在錄製好腳本並設置好runtime settings後,你就作好了運行腳本所須要的準備。Vugen在你運行腳本的過程當中會給予你一些的指示器。
介紹完界面上的東西,下面咱們來運行錄製好的腳本:
在回放結束後會彈出個東東建議你檢查相關的,點擊NO。
當Vuser腳本中止運行,你能夠看到回放的一個總結,回放的總結會顯示在Replay Summary 標籤下。
回放總結標籤下列出了關於腳本運行的基本信息,好比回放時間間隔,回放的開始與截止時間。下面的兩個link分別是腳本運行的詳細結果和回放時所收集的log。
回放的log裏記錄了回訪時所發生的事件,在Vugen的output欄裏顯示。
在教材的這一部分,你將打開log,在log中找到指定的事件和提示。
查看回放log:
注意:Output欄中綠色的是成功信息,紅色的是失敗信息。Output欄中也會指出出現的的error在腳本中對應的行號。
雙擊Output欄中的行,將會定位到相應的腳本行。
在你回放了你所錄製的腳本後,你須要查看回放結果去判斷腳本是否回放成功。若是有哪有東西失敗了,你想知道何時爲何失敗了。
這一部分你將學會檢查和分析腳本運行結果。Vugen在Test Results窗口中總結了回放結果。
你打開Test Results窗口後會發現它有兩個欄,左側的樹欄和右側的結果總結欄。
能夠經過下面兩種方法來查看回放結果:
下一部分,你將鑽入回放結果中仔細研究,從而判斷腳本在回放過程當中是否到達了預期的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服務器須要獨一無二的會話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。
場景目標:
在本節課中,你的目標是建立一個場景來模擬十個不一樣的用戶併發的進行登錄,查詢飛機票,預訂飛機票,檢查旅程與註銷的行爲。
負載測試意味着要在典型的工做場景下測試你的系統。好比,你須要對許多旅遊客戶同時在網上對同一個票務預訂系統進行操做的狀況進行測試。
你設計場景是爲了模擬真實的狀況。爲了達到這個目的,你須要可以對你的系統產生負載,而且對負載進行時間上的編排(由於用戶不會同時登錄和註銷)。你也須要模擬不一樣用戶的不一樣行爲。好比有些用戶用火狐瀏覽器去訪問這個系統,而其餘的用戶則用IE。用戶也會經過不一樣的網絡鏈接到該系統,好比modem,DSL,或cable。你在場景中建立並保存這些設置。
Controller爲你提供可以讓你真實的模擬你的工做環境而建立與運行測試所須要的全部工具。
要建立一個場景,你首先要打開LoadRunner Controller。
HP LoadRunner Controller打開並顯示New Scenario對話框。
有兩種Scenario Type:
Manual Scenario:讓你可以控制虛擬用戶的數量以及他們分別運行腳本的次數,而且可以讓你測試你的系統同時可以響應多少用戶的操做。
你能夠根據你的業務需求分析用百分比模式(Percentage Mode)來對腳本間虛擬用戶的總數進行分配。若是你正常安裝LoadRunner的話Percentage Mode這個默認是被勾選的。若是它被勾選了,你要把它取消勾選。
Goal-Oriented Scenario:爲了驗證你的系統是否能夠達到一個特殊的目標。例如,你能夠基於一個事務的響應時間或一秒鐘執行的事務數來驗證,那麼LoadRunner會爲你基於這些目標自動的建立一個場景。
在本次教程中,你只會使用一個腳本,讓全部的用戶都模擬相同的操做。想要多方面多角度的模仿真實世界中的用戶操做,你能夠建立不一樣的虛擬用戶羣,每個羣都用不一樣的腳本和不一樣的用戶設置。
你以前在VuGen中錄製的腳本包含了你想要測試的業務流程,包括登錄,搜索飛機票,買飛機票,檢查飛機票,以及退出網站。你將要把相似的腳本添加到場景中,並配置場景,以實現8個不一樣的用戶同時在這個飛機票預訂系統上進行併發操做。在本次的測試中,你還須要額外添加兩名虛擬用戶。
爲了實現這個目的,你須要提供一個和你以前建立的那個腳本相似的腳本。在這裏咱們建議你使用給出的樣本腳本。
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欄。
注意到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秒爲週期被添加到組中。
想要單獨看一個虛擬用戶在運行測試的過程當中的進展,你能夠顯示一個包含虛擬用戶操做文字總結的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(分析會話)的目的是爲了發現你係統性能上存在的缺陷並找到其根源,例如:
在後續的章節中你將會學習如何打開LoadRunner Analysis,並創建與查看可以幫你找到性能問題與根源之所在的圖表和報告。
雙擊桌面上的Analysis圖標,LoadRunner Analysis被打開;
爲了達到本節課的目的,可以舉例分析說明儘量多樣的結果,咱們將會運行一個和你在以前的章節中運行的場景類似的場景。可是這一次,你的場景中將包含70個虛擬用戶,而再也不是10個。你如今將要打開針對於你的測試結果所建立的分析會話。
Analysis包括如下主要欄:
備註:還有一些能夠從工具欄中訪問的欄,這些欄能夠進行拖拽並在屏幕上任意地方進行拖放。
在這一部分,咱們將介紹一下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來考慮三個負載場景,輕負載,正常負載和高負載。每個場景都有它的臨界值。
你將在場景運行後在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個虛擬用戶同時運行時,平均響應時間開始減小。
至今你已通過濾了一張圖並關聯了兩張圖。下一次你分析場景的時候,你可能會想要看到相同的圖,有相同的過濾與合併條件。你能夠將你的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對話框被打開並列舉了包含數據的並可以顯示的圖的種類:
如今打開一些其餘的圖來對你的場景運行狀況有一個更好的瞭解。
你能夠從你的分析會話中經過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:
以後LoadRunner將會自動收集數據並生成一個Microsoft Word文件,並用Microsoft Word打開。
除了你在分析會話時生成的圖外,報告還包含了一個客觀的結論,以及其餘你在建立報告時選擇的部分和圖表。
在這節課中,你學會了最基本的——定義SLA(Service Level Agreement),分析一個場景的運行,以及將你的測試結果發佈到報告中。
你已經知道性能上的問題將會在你研究各類顯示服務器瓶頸的圖表後被發現,緣由多是因爲負載太重。你已經看到了,你能夠經過配置圖表來顯示相關聯的數據,指出這些瓶頸的根源之所在。