loadrunner入門篇 - Controller控制器


    Controller組件是LR的控制中心,主要包括場景設計和場景執行兩部分。在VuGen中編輯完腳本並將腳本加載到Controller組件中,即開始對腳本運行時的場景進行設計,當場景設計完成后,即可執行該場景。

場景類型介紹                                                     

    Controller控制器提供了手動設計和面向目標兩種測試場景。一般情況下使用手動測試場景設計方法,因為能夠更靈活地按照需求來設計場景模型,使場景能更好地接近用戶的真實使用。面向目標場景則是測試性能是否能達到預期的目標,在能力規划和能力驗證的測試過程中經常使用到。  

    啟動方式有兩種:第一種是在開始菜單中啟用;第二種是在VuGen發生器的Tools菜單中啟動,如圖1所示。


                                               

圖1

1、手動測試場景

    啟動Controller控制器后,會彈出‘新建場景’對話框,如圖2所示。

圖2

    這里選中的是手動測試場景,該場景包含兩種模式:用戶組模式與百分比模式,不同之處在於計算虛擬用戶的方式不同。

    手動用戶組模式如圖3所示。

圖3(手動用戶組模式)

    百分比模式如圖4所示。(scenario->convert senario to the percentage mode,即可切換到百分比模式)

圖4(手動百分比模式)

 

2、面向目標測試場景

    首先定義要達到的目標,接着LR會自動基於該目標創建場景,在場景運行過程中,LR會不斷地將結果與目標相比較,以決定下一步如何執行。

    該場景提供了Virtual Users、Hit per Secnod、Transactions per Second、Transaction Response Time和Pages per Minute一種目標。

    如圖5所示是面向目標測試場景界面。

圖5

場景設計                                                           

    這里主要介紹Schedule、View Script和Generator參數的設置。而兩種場景模式的區別主要體現在Schedule參數的設置上,另外兩個參數的設置都是一致的。

1、手動場景Schedule配置

    主要是用來設置用戶的行為方式,這里包括按場景計划和按用戶組計划(切換為用戶組模式才會有group選項)兩種(如圖6所示)。

圖6(scenario schedule配置界面)

    1)場景名稱(schedule name)

    2)按場景計划(schedule by scenario)

     initialize :設置腳本運行前如何初始化每個虛擬用戶。包含3種方式:

   a.同時初始化所有虛擬用戶;b.每隔一段時間初始化一定數量的虛擬用戶;c.在腳本運行之前初始化所有虛擬用戶。(通常情況下選擇方式三)。

     start vusers :設置虛擬用戶加載的過程(是指總的虛擬用戶數)。包含2種加載方式:

    a.同時加載所有的虛擬用戶;b.每隔一定的時間加載一定數目的虛擬用戶。(在實際測試過程中不會選擇方式一進行加載虛擬用戶)

     duration :設置場景執行的時間,包含2種方式:

    a.一直運行,直到所有的虛擬用戶運行完成后,結束整個場景的運行;b.設置場景持續運行時間,一般情況下在進行壓力測試時,只需測試15~30min即可,但如果需要測試系統的可靠性和穩定性時,則需要持續運行24h或3*24h。

     stop vusers :設置場景執行完成后虛擬用戶如何釋放的策略。(只有duration設置為按指定時間運行時才需要設置該項)

    a.當場景運行結束后,同時釋放所有的虛擬用戶;b.每隔一段時間就停止一定量的虛擬用戶。(一般情況下,虛擬用戶如何添加就如何停止)

    3)按用戶組計划(schedule by group)

    比按場景計划多出了start gruop選項,在該場景中,是以組為單位進行計划的,每個組都要設置自己的start vusers、duration和stop vusers。比較靈活,能夠創建實際應用中腳本與腳本之間的約束關系。如一組用戶執行后產生的數據記錄為另一組用戶的輸入,這種情況就需要使用該方式來配置場景。使用該場景時,LR默認將每個腳本定義為一個組。

    這里只對start group選項卡進行分析,包含3種方式:

    a.場景執行時立即開始運行該腳本;b.場景執行一段時間后才開始運行該腳本;c.在某個特定的用戶組運行結束后才開始運行該腳本,即就是在某個腳本運行結束后才開始運行。

    一般情況下使用場景組方式來運行場景時,會選中每個腳本分別進行設置。如果同時設置則與普通的場景設置沒有什么區別。

    4)場景開始時間(scenario start time)

    如圖7所示,有3種方式(針對run頁面的start scenario):

    a.場景立即開始,沒有延誤時間;b.推遲指定的時間后才開始運行;在指定的時間開始運行,如晚上8點運行。

圖7

    5)百分比模式

    是先設定好虛擬用戶總數,然后按百分比的形式對所有的虛擬用戶進行分配。該場景適合綜合業務模型明確的性能測試。(比如銀行的查存取業務)

2、面向目標場景Schedule配置

    在面向目標場景中,首先定義測試需要達到的目標,然后LR會自動根據這一目標創建場景。

    在場景設置界面,單擊edit scenario goal,進入編輯該目標場景對話框,如圖8所示,以hit per second目標類型為例,講述其各項設置。

圖8

    1)scenario settings選項卡

  run time:表示當執行達到目標后,該場景還會持續運行一段時間(設置的時間值)才結束運行。

     if target cannot be reached:表示如果目標無法達到,controller將如何處理場景。有2種選擇:a.停止運行場景並保存結果;b.繼續運行場景直到達到目標。

    2)load behavior選項卡

    設置加載行為,有3種方式:a.讓controller自動加載用戶;b.設定一個時間,在該時間后達到目標;c.每隔一段時間增加一定的目標量。

    3)目標類型

    a.virtual users

    主要是用來測試服務器對並發用戶的處理能力,假如將虛擬用戶設置為100個,那么LR會逐漸遞增虛擬用戶,直到加載到100個為止,如不能達到,將采取if target cannot be reached中設置的策略來繼續運行當前的場景。(如圖9所示)

圖9

    b.hits per second

    設置的目標是點擊數/秒,如圖10所示,同時要設置最大和最小虛擬用戶數。因為點擊率的值大小與虛擬用戶數成正比,假設測試出來的點擊率的值達不到目標值,那么就必須增加虛擬用戶數,否則點擊率的值就不可能增加,所以在設置點擊率的值為目標時,就必須限定虛擬用戶數的范圍,也即最大和最小虛擬用戶數的值。

    運行原理:當場景執行時,controller會先用最小虛擬用戶數去執行,結束后判斷點擊率的值是否達到目標值,如果達到了則停止當前運行的場景;否則繼續增加虛擬用戶,再判斷結果是否達到預期目標值。一直重復,直到達到目標 。如果使用最大虛擬用戶數還是無法達到目標值時,那么場景將會停止運行,並保存相應的結果。

 圖10

    c.transaction per second

    設置的目標為每秒處理的事務數,如圖11所示,注意在腳本中一定要定義事務,否則事務名稱欄為空白。

圖11

    如果從業務的角度看,每秒鍾處理的事務數即為系統每秒鍾處理的業務筆數,所以該項指標更多的是用於衡量系統每秒鍾處理的業務數。同樣的也要設置最大和最小虛擬用戶數,因為要改變每秒鍾處理的事務數就必須通過虛擬用戶數來改變,但要注意的是,當虛擬用戶數成倍增長時,處理的事務數並不會成倍增長,因為隨着虛擬用戶數增多,事務的平均響應時間也增加了,這樣在相同的時間內,每個虛擬用戶處理的事務數就相當少了,所以處理的事務數不可能成倍增長。

    運行原理:跟hits per second的原理相同

    d.transaction response time

    設置的目標為多用戶並發時事務的響應時間,如圖12所示

圖12

    運行原理:跟hits per second的原理相同,假設當前虛擬用戶數為10個,那么說明系統最多只能處理10個用戶同時請求。如果使用最大的虛擬用戶數還是無法達到目標值時,那么場景將會停止運行,並保存相應的結果,同時也說明系統可以支持更多的虛擬用戶同時運行。

    e.pages per minute

    設置的目標為每分鍾處理的頁面數,如圖13所示。

圖13

    每秒鍾處理的頁面數與每秒鍾處理的事務數,其本質是一樣的,因為一個事務可能由多個頁面組成,當一個事務只由一個頁面組成時,那么每秒種處理的頁面數一每秒鍾處理的事務數完全一致。

    在以下情況下,hits per second、transactions per second、pages per minute類型的場景結果中會被置為failed狀態:

   a.控制器使用指定的最大用戶數,並且執行兩次都沒有達到目標;b.負載機不夠;c.所有的用戶都運行失敗;d.控制器增加了幾批虛擬用戶后,hits per second、transactions per second、pages per minute的值沒有增加。

3、配置View Script

    在場景設計界面,腳本加載后,如需對加載的腳本進行修改,可以選中需要配置的腳本並單擊右鍵,選擇View Script對腳本進行修改。

    要注意修改后,一定要重新加載該腳本才能確保場景執行中的腳本是修改后的腳本

4、配置Load Generator

    Load Generator 又稱負載發生器,當控制器發出執行命令時,Load Generator 負責和其他的負載機建立起聯系並強制負載機執行。一個controller可以通過Load Generator 來控制多台負載機。如圖14所示

圖14

    可以add負載機,完成后connect,測試負載機與控制機連接的情況,如果status為ready,表示連接成功;如果為failed,表示連接失敗,這時就要檢查網絡是否存在問題。

    在使用負載機模擬多用戶測試系統時,需要注意以下幾個問題:

    1)計算需要負載機的台數。

    在使用負載機時首先需要解決的第一個問題是測試時需要多少台負載機才能滿足測試的需要(如測試時需要測試500個虛擬用戶),在確定該問題之前需要先確定每個用戶需要消耗的系統資源,當把每個虛擬用戶按進行的方式來運行時,那么當場景運行時,每添加一個虛擬用戶都會增加一個進程,而每個進程都是需要消耗內存和CPU資源的。通常情況下每個虛擬用戶消耗多少資源受操作系統、錄制時選擇的協議及LR的版本3個方面的影響,可百度下官方公布的虛擬用戶消耗內存資源參考值。

    比如每個虛擬用戶消耗的內存資源大概為6800KB左右,如果以500個虛擬用戶為例大概需要消耗3320MB(6800KB*500/1024=3320MB)的內存,如果每台測試機的內存為1GB(3320MB/1024=3.2421875),那么至少需要4台這樣的測試機。

    2)控制器如何控制負載機運行。

    控制器通過代理程序去控制負載機運行(代理程序的名稱為loadrunner agent process),所以首先需要在控制器和客戶端啟動代理程序(開始菜單->HP LR->Tools->loadrunner agent runtimes..)。

    啟動后彈出loadrunner agent設置對話框,如圖15所示

圖15

    a.允許所有的虛擬用戶不用登錄即可運行,但需要設置登錄主機的名稱、用戶名和密碼。

    b.手動登錄服務器。一般使用手動去登錄即可。

    啟動代理程序后(注意控制器和負載機都需要啟動代理程序),當場景在初始化時,控制器會向負載機發送一個二進制文件,該二進制文件中就包括所有待運行的腳本信息,當初始化后,負載機就會產生虛擬用戶來模擬測試。

場景執行                                                             

1、場景控制

    在Run選項卡中,主要包括場景運行控制信息和數據圖兩部分,如圖16所示。(注:截圖是手工測試場景模式,如果是目標測試場景模式的話,down是為空的,是根據設置的目標來加載的

圖16(run選項卡界面圖)

    關於scenario groups講解:左邊顯示每個用戶組的運行狀態,右邊為場景的控制操作。

    start scenario:開始場景,此時controller開始初始化虛擬用戶,並將這些虛擬用戶服務分配到負載發生器,開始運行腳本。

    stop:停止場景,對於如何控制場景停止運行有3種方式(tools->options),如圖17所示:

       a.等當前迭代運行結束后,再停止運行場景;b.等當前的action結束后,再停止運行場景;c.不等待,立即停止運行場景

圖17(場景停止設置方式)

    reset:將方案中所有的vuser組重置為方案運行前的‘關閉(Down)’狀態,准備下一次場景的執行。

    vusers:虛擬用戶組,如圖18所示,可以看到每個vuser的詳細狀態(ID、運行狀態、腳本、負載發生器和所用時間),在這里可以選擇單個vusers進行操作(那些右鍵的其他操作可以自己去點一下)

圖18

    run/stop vusers:(目標測試場景的該按鈕是置灰的)設置繼續執行還是停止某個用戶組,如圖19所示,在運行期間可以在這里手動控制新添加的vuser(注意:該對話框因運行場景的模式不同而有所不同

圖19(手動模式run/stop vusers設置)

    圖20,是在百分比模式下運行場景,能夠根據定義的百分比,分配新的vusers數,以及運行這些添加 的vuser的負載發生器。

圖20(百分比模式run/stop vusers設置)

2、場景執行期間查看場景

  1、vuser運行狀態。

    

  2、事務詳細信息

    如圖21所示,及各參數項的含義

                

                                           圖21

    如圖22所示,可以看到事務的詳細信息。TPS:每秒的事務數;Passed/Failed/Stopped:表示運行已通過/已失敗/已停止的事務數。

圖22(事務詳細信息)

  3、查看‘輸出’窗口

    view->show output,可調出輸出窗口,如圖23所示,vuser和負載發生器會向controller發送錯誤、通知、警告、調試和批處理消息,這些信息可以在輸出窗口中查看到。(重置時消息仍會保留)

圖23

     details可查看詳細消息文本,如果需要查看更加詳細的信息,可以單擊相應列的藍色鏈接,如圖24所示。

圖24

    分析輸出信息時,需要確定以下幾個方面的問題:

      1)出錯是由於性能測試引起的還是由於腳本編寫的錯誤引起;

      2)找到出錯的日志信息。

       要找到出錯的具體日志信息,必須通過輸出的信息找到這幾方面的信息,錯誤信息是來自哪台負載機,錯誤信息是來自哪個虛擬用戶。確定這兩方面的信息后就可以找到場景運行時的日志信息了,否則在運行大量虛擬用戶時,如果一個一個地查看每個虛擬用戶的日志信息,則效率很低。

 備注:文字講解來自《深入性能測試--LoadRunner性能測試、流程、監控、調優全程實戰剖析》(黃文高、何月順編著)一書,我是新手,參照此教程做了下實踐,順便將學到的東西寫下來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM