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數據源步驟,可看:http://jingyan.baidu.com/article/b2c186c8fee106c46ef6ffb8.html

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

1)參數化文件盡可能少,因為參數化是放在內存中的,占用了內存的資源

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

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

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

5)參數類型的選擇

6)參數的數據由事務決定

關聯與參數化的區別                      

一、數據處理的方式不同

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

二、處理的數據是否確定

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

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


免責聲明!

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



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