華文網

loadrunner提高篇-block(塊)技術和參數化

Block(塊)技術

block(塊)技術是應用於在一個腳本中實現不同事務、不同次數迴圈或不同百分比迴圈的情況。比如在一個腳本中,登錄執行3次,查詢執行1次。

使用方法如下:

1、錄製一個腳本,包含2個業務:登錄和查詢

2、vuser->run time settings->general->run logic,選擇run,插入一個block塊,然後選擇block,按一下insert action按鈕,選中要添加的action,如圖1所示:

圖1(為block添加action)

3、重複上面的操作,再新建一個block,然後刪除block外的action,如圖2所示:

圖2(刪除block外面的action)

4、設置block properties,如圖3所示:

圖3(block properties設置)

5、block(塊)技術就是這樣了,注意:事務反覆運算的總次數=該block反覆運算次數*number of iterations,如上圖即是login反覆運算次數=3*1=3次。

參數化技術 一、參數化的原因及條件

腳本參數化就是針對腳本中的某些常量,使用參數來取代。

參數化的過程體現了資料驅動的思想,即是將測試腳本和測試資料進行分離的思想,腳本體現測試流程,資料體現測試案例。

原因:可以減小腳本的數量;使業務更接近真實的客戶業務,每個虛擬使用者使用不同參數值來模擬,這樣可以更好地接近客戶的實際情況。

哪些需要進行參數化?

1)日期時間:例如錄製一個訂票業務流程,訂票日期一定是當前日期之後,

比如訂的機票日期是17年4月1號,那麼在該日期之後再來重播該腳本時,會發現腳本無法正常使用,所以這類情況需要參數化。

2)唯一性約束:是指在資料庫中對於主鍵必須是唯一的,如果一起使用相同資料提交業務,那麼業務將無法完成,比如註冊業務就不能使用相同的資料進行註冊,因為資料庫中會把註冊使用者的ID作為主鍵。

3)資料約束:是指在測試過程中要求提交的業務資料必須是每次都不同,

如果提交事務中的資料一致,那麼事務將會失敗。例如銀行事務,一些銀行事務是以報文的方式發送的,在發送報頭時,後面一般會接一個6位元的動態碼,那麼這個動態碼就必須每次都不一樣,如果寫成一樣,那麼銀行交易事務將會失敗,所以對於這類資料必須進行參數化。

4)緩存資料約束:在談緩存資料約束前,必須先瞭解資料庫查詢的過程,

資料庫在查詢時首先使用查詢準則在資料庫中查詢,查詢結束後,系統需要將查詢到的結果顯示在頁面中,那麼顯示時需要先將查詢到的結果從硬碟中讀取,讀取後將資料從硬碟讀到記憶體,再從記憶體讀到緩存,最後將緩存中的資料發送到處理器中進行處理。但是有一種特殊情況,如果每次使用的查詢準則一致時,資料庫中查詢到的結果就是一致的,那麼需要處理的資料已經存儲在緩存中,這樣系統就不需要從硬碟將資料講到緩存,而直接將緩存中的資料傳輸到處理器中進行處理,這樣就節約了從硬碟讀到緩存中的時間,而整個查詢過程中時間消耗最多的恰好是從硬碟讀到緩存的時間,所以這樣測試出來的時間不是真實的時間,這時就出現緩存資料約束,所以這種情況也需要進行參數化。

二、創建參數

1、錄製註冊業務的腳本->選中要參數化的常量並右擊,選擇replace with a parameter->輸入參數化名稱,如圖4所示:

圖4(參數化命名)

2、參數化結束後,腳本保存的根目錄下會自動生成一個參數化的檔,如圖5所示:

圖5(參數化文件)

3、可對這2個檔進行合併,節省資源,合併後可以將pw和user2個檔刪除,為了將參數和腳本分離,一般會新建一個參數資料夾,將所有參數檔都放到裡面,如圖6所示:

圖6(合併參數檔與分離腳本、參數)

注:如果改變了參數檔路徑後直接運行的話,會報錯(error-13889),這時要進行參數類型屬性設置,可看下面的內容。

三、參數類型屬性

創建參數後,需要對參數類型屬性進行設置,主要有以下幾種參數類型:

1、date/time(日期/時間)參數類型,如圖7所示:

圖7(日期時間參數類型)

2、group name(組名)參數類型

用vuser組的名稱替換參數。創建方案時,要指定vuser組的名稱,否則運行腳本時,組名始終為“無”。

3、iteration number(反覆運算編號)參數類型

用當前的反覆運算編號替換參數,反覆運算編號的格式可以自己設置。

4、load generator name(負載發生器名)參數類型

用vuser腳本的負載發生器名替換參數,負載發生器是運行vuser的電腦。

5、random number(亂數)參數類型

用一個隨機生成的整數替換參數,可以通過指定最小值和最大值,設置亂數的範圍。

6、unique number(唯一數)參數類型

用一個唯一編號替換參數。start表示vuser從第幾個參數開始使用;block size指明分配給每個vuser的編號塊的大小;number資料類型表示產生的唯一的類型。

7、vuser id參數類型

使用該虛擬用戶的ID來代替參數值,該ID由controller來控制,在vugen中運行腳本時,vugen將會是-1.

8、file(檔)參數類型

可以在參數屬性中編輯參數檔,也可以直接選擇已編輯好的參數檔,還可以從現成的資料庫中提取(這是最常用的一種參數化方式),下面的內容會詳細介紹。

四、資料檔案

參數的資料來源可以來自於真實的歷史資料也可以是自行構建的資料,參數中的資料如何調用也是需要設置的。

1、browse屬性:如果修改過參數檔路徑,則需要在這裡重新選擇,否則無法讀到參數檔中的參數(會報錯error-13889),如圖8所示:

注:如果設置的是絕對路徑的話,那麼腳本移植到另的機器上運行時會報錯,因為腳本的路徑發生了變化,所以最好的方法就是採用相對路徑,將腳本的根目錄使用“.”來代替。

(比如絕對路徑:E:\loadrunner\0331參數化\0331註冊腳本\parameter\parameter;則相對路徑:.\parameter\parameter)

圖8(選擇參數化檔)

2、edit with notepad設置:打開記事本,可在記事本中對參數值進行修改、添加或刪除。

3、select column設置:指明參數選擇的列,可按列號(包含所需要資料的列的索引),也可按列名。

4、column delimiter設置:選擇列分隔符號,一般是選擇逗號。

5、file data line設置:在腳本執行時選擇第幾行資料開始使用。如果選擇從列標題後的第一行參數開始執行,就輸入1。

6、select next row設置:該屬性都是針對虛擬使用者來說的,即這裡的策略是針對controller設置的,在調試腳本的過程中是看不出來的,其決定虛擬用戶選擇參數的過程。

when out of values:表示當參數不夠時如何處理

1)abort vuser:忽略剩下所有的虛擬用戶不再運行

2)continue in a cyclic manner:將參數繼續迴圈一次,虛擬使用者按順序參數進行反覆運算

3)continue with last value:一直使用最後一個資料進行後面的反覆運算

allocate vuser values in the controller:指在控制器運行時,如何分配這些參數

1)由LR自動分配每個虛擬使用者使用的參數情況

2)為每個虛擬用戶所設置的虛擬用戶數。假如設置為20,那麼第一個虛擬用戶使用的參數為1-20,第二個則為21-40。(注:不要將該值設置為參數的總數)

*same link as ..:與某個已定義好的參數取同一行值,該方法要求至少其中的一個參數必須是sequential、random、unique

比如將參數PW'select next row'設置為’same line as user‘,當user選擇test2時,那麼參數pw只能選擇跟它同一行的值

7、update value on設置:設置腳本反覆運算過程中取值的策略,其結果可以在代碼調試的日誌中體現。

1)each iteration:腳本每反覆運算一次都訪問資料表中的下一個值,即在同一次反覆運算中,不管同一個參數出現多少次都只使用這一個參數

2)each occurrence:在每次反覆運算過程中,參數的值都更新,即使在同一次反覆運算過程,如果某個參數使用了多次,其選擇的值也會更新而不會使用相同的參數值。

3)once:在同一個vuser中一直取同一個參數,表中其他的資料不參與反覆運算的過程

五、導入資料

如果在事務中希望參數是來自實際的資料,那麼LR允許利用參數化從已經存在的資料中導入資料。提供microsoft query、指定資料庫連接字串和SQL語句 兩種方式,如圖9所示:

圖9(導入資料方式)

1、microsoft query創建查詢

2、指定資料庫連接字串和SQL語句

注:上面兩種方式的詳細步驟以後再補上,因為不知道為什麼沒有顯示LR資料來源。

以上是參數化的整個過程,但參數化過程中有以下幾個問題需要注意:

1)參數化檔盡可能少,因為參數化是放在記憶體中的,佔用了記憶體的資源

2)參數化文件與腳本分離

3)參數檔的路徑應該設置為相對路徑

4)為了使參數更具有真實性,參數應該從歷史資料庫中獲得

5)參數類型的選擇

6)參數的資料由事務決定

關聯與參數化的區別 一、資料處理的方式不同

參數化的資料是由用戶端向伺服器提交的,而關聯是需要獲取伺服器返回用戶端的資料。在參數化時,參數化的資料會通過web_submit_data提交到伺服器,其參數化的策略來自於相關設置選項,關聯的資料是從伺服器端返回給用戶端的,是提交請求的一組驗證資訊,所以處理關聯資料一定要在從伺服器返回的資訊中獲取。

二、處理的資料是否確定

參數化的資料是測試工程師知道需要使用什麼資料進行參數化,以滿足事務的需要;而對於需要關聯資料的內容是不清楚的,所以只能通過左右邊界值來確定。參數化的資料是靜態的,即提交的資料可以靜態地表示 ,但關聯的資料是動態,即它們之間的原理截然不同。

這樣系統就不需要從硬碟將資料講到緩存,而直接將緩存中的資料傳輸到處理器中進行處理,這樣就節約了從硬碟讀到緩存中的時間,而整個查詢過程中時間消耗最多的恰好是從硬碟讀到緩存的時間,所以這樣測試出來的時間不是真實的時間,這時就出現緩存資料約束,所以這種情況也需要進行參數化。

二、創建參數

1、錄製註冊業務的腳本->選中要參數化的常量並右擊,選擇replace with a parameter->輸入參數化名稱,如圖4所示:

圖4(參數化命名)

2、參數化結束後,腳本保存的根目錄下會自動生成一個參數化的檔,如圖5所示:

圖5(參數化文件)

3、可對這2個檔進行合併,節省資源,合併後可以將pw和user2個檔刪除,為了將參數和腳本分離,一般會新建一個參數資料夾,將所有參數檔都放到裡面,如圖6所示:

圖6(合併參數檔與分離腳本、參數)

注:如果改變了參數檔路徑後直接運行的話,會報錯(error-13889),這時要進行參數類型屬性設置,可看下面的內容。

三、參數類型屬性

創建參數後,需要對參數類型屬性進行設置,主要有以下幾種參數類型:

1、date/time(日期/時間)參數類型,如圖7所示:

圖7(日期時間參數類型)

2、group name(組名)參數類型

用vuser組的名稱替換參數。創建方案時,要指定vuser組的名稱,否則運行腳本時,組名始終為“無”。

3、iteration number(反覆運算編號)參數類型

用當前的反覆運算編號替換參數,反覆運算編號的格式可以自己設置。

4、load generator name(負載發生器名)參數類型

用vuser腳本的負載發生器名替換參數,負載發生器是運行vuser的電腦。

5、random number(亂數)參數類型

用一個隨機生成的整數替換參數,可以通過指定最小值和最大值,設置亂數的範圍。

6、unique number(唯一數)參數類型

用一個唯一編號替換參數。start表示vuser從第幾個參數開始使用;block size指明分配給每個vuser的編號塊的大小;number資料類型表示產生的唯一的類型。

7、vuser id參數類型

使用該虛擬用戶的ID來代替參數值,該ID由controller來控制,在vugen中運行腳本時,vugen將會是-1.

8、file(檔)參數類型

可以在參數屬性中編輯參數檔,也可以直接選擇已編輯好的參數檔,還可以從現成的資料庫中提取(這是最常用的一種參數化方式),下面的內容會詳細介紹。

四、資料檔案

參數的資料來源可以來自於真實的歷史資料也可以是自行構建的資料,參數中的資料如何調用也是需要設置的。

1、browse屬性:如果修改過參數檔路徑,則需要在這裡重新選擇,否則無法讀到參數檔中的參數(會報錯error-13889),如圖8所示:

注:如果設置的是絕對路徑的話,那麼腳本移植到另的機器上運行時會報錯,因為腳本的路徑發生了變化,所以最好的方法就是採用相對路徑,將腳本的根目錄使用“.”來代替。

(比如絕對路徑:E:\loadrunner\0331參數化\0331註冊腳本\parameter\parameter;則相對路徑:.\parameter\parameter)

圖8(選擇參數化檔)

2、edit with notepad設置:打開記事本,可在記事本中對參數值進行修改、添加或刪除。

3、select column設置:指明參數選擇的列,可按列號(包含所需要資料的列的索引),也可按列名。

4、column delimiter設置:選擇列分隔符號,一般是選擇逗號。

5、file data line設置:在腳本執行時選擇第幾行資料開始使用。如果選擇從列標題後的第一行參數開始執行,就輸入1。

6、select next row設置:該屬性都是針對虛擬使用者來說的,即這裡的策略是針對controller設置的,在調試腳本的過程中是看不出來的,其決定虛擬用戶選擇參數的過程。

when out of values:表示當參數不夠時如何處理

1)abort vuser:忽略剩下所有的虛擬用戶不再運行

2)continue in a cyclic manner:將參數繼續迴圈一次,虛擬使用者按順序參數進行反覆運算

3)continue with last value:一直使用最後一個資料進行後面的反覆運算

allocate vuser values in the controller:指在控制器運行時,如何分配這些參數

1)由LR自動分配每個虛擬使用者使用的參數情況

2)為每個虛擬用戶所設置的虛擬用戶數。假如設置為20,那麼第一個虛擬用戶使用的參數為1-20,第二個則為21-40。(注:不要將該值設置為參數的總數)

*same link as ..:與某個已定義好的參數取同一行值,該方法要求至少其中的一個參數必須是sequential、random、unique

比如將參數PW'select next row'設置為’same line as user‘,當user選擇test2時,那麼參數pw只能選擇跟它同一行的值

7、update value on設置:設置腳本反覆運算過程中取值的策略,其結果可以在代碼調試的日誌中體現。

1)each iteration:腳本每反覆運算一次都訪問資料表中的下一個值,即在同一次反覆運算中,不管同一個參數出現多少次都只使用這一個參數

2)each occurrence:在每次反覆運算過程中,參數的值都更新,即使在同一次反覆運算過程,如果某個參數使用了多次,其選擇的值也會更新而不會使用相同的參數值。

3)once:在同一個vuser中一直取同一個參數,表中其他的資料不參與反覆運算的過程

五、導入資料

如果在事務中希望參數是來自實際的資料,那麼LR允許利用參數化從已經存在的資料中導入資料。提供microsoft query、指定資料庫連接字串和SQL語句 兩種方式,如圖9所示:

圖9(導入資料方式)

1、microsoft query創建查詢

2、指定資料庫連接字串和SQL語句

注:上面兩種方式的詳細步驟以後再補上,因為不知道為什麼沒有顯示LR資料來源。

以上是參數化的整個過程,但參數化過程中有以下幾個問題需要注意:

1)參數化檔盡可能少,因為參數化是放在記憶體中的,佔用了記憶體的資源

2)參數化文件與腳本分離

3)參數檔的路徑應該設置為相對路徑

4)為了使參數更具有真實性,參數應該從歷史資料庫中獲得

5)參數類型的選擇

6)參數的資料由事務決定

關聯與參數化的區別 一、資料處理的方式不同

參數化的資料是由用戶端向伺服器提交的,而關聯是需要獲取伺服器返回用戶端的資料。在參數化時,參數化的資料會通過web_submit_data提交到伺服器,其參數化的策略來自於相關設置選項,關聯的資料是從伺服器端返回給用戶端的,是提交請求的一組驗證資訊,所以處理關聯資料一定要在從伺服器返回的資訊中獲取。

二、處理的資料是否確定

參數化的資料是測試工程師知道需要使用什麼資料進行參數化,以滿足事務的需要;而對於需要關聯資料的內容是不清楚的,所以只能通過左右邊界值來確定。參數化的資料是靜態的,即提交的資料可以靜態地表示 ,但關聯的資料是動態,即它們之間的原理截然不同。