1. 程式人生 > >使用Loadrunner11錄製FTP協議指令碼

使用Loadrunner11錄製FTP協議指令碼

安裝Loadrunner11。

以測試上傳XML檔案到FTP伺服器的併發測試為例。具體步驟如下:

 

(1)virtual user generator中新建指令碼。

File->New,選中New Single Protocol Script中的FTP協議,點選Create:

 

1)application type應用程式型別

Ø  InternetApplications是指我們要錄製的物件是一個網路應用(B/S)

Ø  Win32Applications是用來支援Win32的標準客戶端的(C/S)

2)Program to record要錄製的程式

我們需要錄製的程式名,在錄製B/S應用指令碼時,Loadrunner預設支援的Web客戶端是IE,也可以使用自己安裝的其他瀏覽器程式(如360和google),不過使用其他的瀏覽器,很可能導致錄製完之後指令碼為空,所以,最好使用預設的IE瀏覽器。如果使用IE瀏覽器進行指令碼錄製時出現指令碼內容為空的現象,可嘗試換一個版本的IE瀏覽器,或者重啟電腦重新錄製,或者使用埠對映進行更加嚴格準確的指令碼錄製。

而此處我們錄製的FTP協議指令碼屬於C/S應用,故Programto record要選擇FTP客戶端(如8uftp.exe)。

3)Program arguments:程式引數,在某些應用程式後需要新增一些引數才能執行,這裡提供的是填寫引數的位置。

注:在錄製B/S應用指令碼時,該欄位是URL Address URL地址:我們錄製開始所需要訪問的URL地址,也就是我們第一個請求所需要訪問的頁面。

Workingdirectory工作目錄:用來指定錄製後腳本所儲存的目錄

5)Record into Action錄製到操作:我們錄製的內容放在哪個Action中。

注:Action是loadRunner提供的一種類似於函式的指令碼塊,我們通過將不同的指令碼塊放在不同的Action中實現程式碼的高內聚低耦合

Ø  Vuser_init存放LoadRunner中使用者的初始化操作,只能有一個;

Ø  Action是非常自由的,可以當做普通的函式,可以有多個(單擊“New”便可新建Action);

Ø  Vuser_end存放LoadRunner中使用者的結束操作,只能有一個。

6)Record the application startup

指我們一旦啟動了應用後就將開始錄製我們應用收發的協議

7)Option設定錄製選項設定

單擊Option、點選Tools->Recording Options或者在工具欄點選圖示,開啟“Recording Options”對話方塊,便可開始設定錄製選項。

對於FTP協議指令碼的錄製,如果不對埠對映進行限制,很容易造成錄製的指令碼為空。因此,在進行指令碼錄製之前,我們要進行FTP協議的埠對映。將Network-level server address mappings for設定為FTP,單擊“New Entry”,在彈出的“Server Wntry”對話方塊中將Target Server設定為“172.31.27.2”(FTP伺服器的IP地址),Service ID設定為FTP,埠Port設定為Any(因為FTP協議涉及多個埠)。

 

完成錄製選項的設定之後,點選“Start Rcording”對話方塊中的“OK”按鈕,開始錄製指令碼。開啟8UFtp之後,登入172.31.27.2這個FTP伺服器,執行上傳檔案的操作,然後退出,完成指令碼的錄製。

 

(3)腳本回放

       完成指令碼錄製之後,未驗證指令碼的正確性,需要對指令碼進行回放。在進行腳本回放之前,可以通過Run-Time Settings和General Options設定對回放的執行邏輯和其他的一些常規項進行設定。

       1)設定完成後,單擊選單欄中的 Run 按鈕也可直接按【F5】鍵回放指令碼。

 

2)腳本回放的過程中我們可以通過執行日誌來檢視指令碼執行結果。

 

3)指令碼執行完成後,還可以通過:viewàTest Result操作來查看回放結果。(注:FTP腳本回放無法查看回放結果)

(4)指令碼增強

       指令碼增強是指根據業務流程和測試目標對錄製生成的指令碼進行優化,具體可以通過刪除與業務流程無關的指令碼、插入事務、引數化等操作來進行。

1)刪除與業務流程無關的指令碼

       本次FTP指令碼錄製的具體業務流程為:登入FTP伺服器->上傳XML檔案到FTP伺服器—>退出FTP伺服器。據此,我們可以刪除指令碼中與業務無關的指令碼。如下圖所示是業務無關指令碼刪除前後的對比。可以發現,刪除與業務無關的指令碼之後,指令碼邏輯變得更加簡潔清晰。

 

刪除業務無關指令碼之前

 

刪除業務無關指令碼之後

 

2)關聯

所謂的關聯(correlation)就是把指令碼中某些寫死的(hard-coded)資料,轉變成是擷取自伺服器所送的、動態的、每次都不一樣的資料。具體的操作,詳見《效能測試進階指南—LoadRunner11實戰》中第161頁。本次指令碼中不涉及關聯,故不需要進行關聯的設定。

3)插入事務

事務是一系列操作的集合,插入事務使指令碼邏輯更直觀,方便今後的效能分析。本次指令碼中的事務可以劃分為以下三個:“登入到FTP伺服器”事務、“上傳XML檔案到FTP伺服器”事務、“退出FTP伺服器”事務。

4)引數化

 

 

 

在引數化時,還可以根據實際需要設定引數更新選擇的方式。如下表所示:

LoadRunner引數更新方法和資料分配

Select next row

Update Value on

實際執行結果

sequential

each iteration

在某次迴圈中所有使用者取值相同。

所有使用者第一次迴圈取第一行值,第二次迴圈取第二行值

 

each occurrence

在某次迴圈中或者指令碼中使用引數的地方,所有使用者取值相同。
指令碼中出現要使用引數的話,引數值就更新一次,迴圈一次值再更新一次。

 

once

在所有的迴圈中所有使用者取值相同。
所有的使用者所有的迴圈中,只用一個值(即引數中的第一行值)

random

each iteration

不同的使用者,在不同的迴圈次數中,隨機取值

 

each occurrence

不同的使用者,指令碼中出現要使用引數的話,隨機取值一次,迴圈一次再隨機取值一次

 

once

不同的使用者,不管迴圈多少次,只隨機取值一次。

unique

each iteration

若選擇手工自配引數,那LR按照每使用者幾個引數先分配引數,然後進行迴圈。
若選擇自動分配引數:
Controller中edit schedule中run until comletion:按照迴圈次數先分配第一個VU(例如設定的迴圈次數為3,那分配給第一個VU 3個引數值),然後接下來的3個引數值分配給第二個VU,依次類推…...
Controller中edit schedule中run for:若選擇自動分配,LR將按照使用者數均分引數,剩餘的引數不使用。

 

each occurrence

只能手工分配使用者,給每個使用者分配好X個引數後,在指令碼中有引數的地方,就使用已經分配好的X個引數。

 

once

按照使用者數分配給每個使用者分配一個引數而已。以後的迴圈這個使用者就使用這一個引數

5)調整指令碼執行邏輯

如果你錄製指令碼的過程中便已經將相應的初始化操作和結束操作分別放在了vuser_init、Action、vuser_end中,則不需要進行這一步。因為我們錄製指令碼時把所有的操作都放在了Action中,所以要對vuser_init、Action、vuser_end中的內容進行調整。在進行FTP伺服器併發測試時,每個使用者只需要登入一次,退出一次,上傳檔案可以執行多次,所以我們可以報登入FTP伺服器的指令碼放在vuser_init中,上傳XML檔案到FTP伺服器的指令碼放在Action中,退出FTP伺服器的指令碼放在vuser_end中。因為在Run Logic預設設定中,vuser_init和vuser_end只會在開始和結束時被執行一次,而Action可以反覆被執行。