版權聲明:本文為原創文章,轉載請先聯系並標明出處
做過性能測試工作或者參加過性能測試相關培訓的小伙伴應該對參數化都不會陌生,參數化作為測試腳本中最基本的使用技巧,需要每個從事性能測試的小伙伴都能熟練掌握。
在測試工具中,每一個模擬用戶都是一個線程,而在我們的仿真模型里,每一個用戶都應該是一個真實的業務實體,每個用戶代表的業務含義、他可以去處理的業務以及在處理業務的過程中可以操作的數據都應該是不同的,這樣才可以更真實的表達現實世界中系統使用
的負載模型。為了達到這個目的,將測試工具的每一個線程和仿真模型中的每一個用戶及操作對應起來,就需要使用到參數化的腳本處理。
說的有些太嚴肅了,簡單舉個例子,比如我們要測試用戶注冊的功能,注冊的用戶名是不允許重復的。我們錄制完的腳本都是hard code,直接進行並發測試的話,無疑所有模擬用戶的線程在注冊的時候輸入的都是相同的用戶名和密碼,這樣肯定是會有很多錯誤請求無法達到服務端,也就不能產生我們預期的負載壓力。這時候,針對用戶名就需要我們使用參數化的技巧來實現,每個注冊的用戶每次注冊都使用不同的用戶名來填寫注冊信息。
常用的測試工具都提供了參數化的功能,像LoadRunner可以為每個腳本在本地生成一個參數數據列表的文本,Jmeter也可以直接引用某一個參數數據的文本,從中讀取數據來實現參數化。但是這些實現方式都是把參數的作用域限制在某一個腳本中,如果多個腳本需要相同的參數,比如我們的多個腳本都有登錄的功能,登錄用戶的參數數據列表是一樣的,那么現在這種實現方式就無法實現復用,需要在每個腳本都重復進行參數化設置。
HyperPacer提供的參數化解決方案中,提供了數據池的功能,所有的參數數據列表都在數據池中進行維護,腳本需要哪個參數列表,就直接選擇哪個即可。這樣就從根本上解決參數數據復用和維護的問題。
下面我們來舉例說明在HyperPacer中如何實現參數化。
我們以一個業務系統的登錄為例進行參數化說明。性能測試腳本錄制好后,對用戶及其密碼進行參數化,每次登錄系統,使用不同的用戶登錄。參數化包括三個步驟:數據池導入參數、參數化配置、腳本參數化。
實現步驟:
一、數據池導入參數
1、打開HyperPacer測試工具,進入【數據池】-【新建連接】-【文本導入】功能:

PS:數據池維護支持文件導入方式、直接新建表方式以及自定義生成參數三種方式,本例中使用文件導入方式,文件導入即把已有的數據文件導到數據池中,這種方式也是比較常用的一種,當參數的值沒有規律且不太大時通常使用這種方法。HyperPacer目前只支持txt和csv格式的文件導入,讀取策略按逐行讀取,創建數據文件時每一個參數占一列。
2、【文件導入】連接配置中,打開要導入的參數文件,並配置各信息項:

(1) 點擊“打開”,選擇要導入的文件;
(2) 默認情況下會自動將數據文件的第一行讀為列標題,如果數據文件中第一行沒有設置列標題,則可以在“變量名稱”處輸入列的名稱,注意多列使用分隔符隔開,默認情況下為逗號;
(3) “文件編碼”即導入數據文件的編碼格式;導入數據文件是按列取數,如需多列可編輯分隔符,默認情況下為逗號;
(4) 導入數據文件后,點擊“下一步”,雙擊文件名可以查看導入文件明細
(5)勾選文件,點擊“完成”即可完成導入。

3、導入成功后,可以雙擊查看導入的參數;

補充說明:txt文件格式如下(注意:每列以設定的分隔符分隔,默認情況下分隔符為逗號):

二、參數化配置
1、參數文件導入數據池后,需要在【參數化管理器】中進行設置。選定需要做參數關聯的測試工程,點擊【新建】-【配置元件】-【參數化管理器】,新建一個參數化管理器;


2、新建成功后,對參數化管理器進行配置,先啟用參數組;在“未啟用參數組”區域選擇要引用的參數組,通過“>”按鈕添加到“已啟用的參數組”區域進行啟用。如下圖:

3、啟用成功后,選中“已啟用參數組”中的參數組,可以在“參數配置編輯區”和“數據預覽配置”區域進行相關配置:

參數配置詳解可參見HyperPacer幫助手冊,此處不再贅述。需要強調的一點是 “參數展示區”展示該參數組中所有可以引用的參數,格式為${參數組名.參數名},這是下一個步驟使用的參數名稱,直接復制即可。
三、腳本參數化
腳本參數化實際就是用參數來替換腳本中的一些常量,本例中即將錄制時使用的用戶名、密碼替換為參數組中的參數。
具體的引用方式為:將錄制的請求中用戶名、密碼替換為對應的變量名稱,如將登錄請求中的用戶名“zhangsan”字段替換為${username.username}、將登錄請求中的密碼“zhangsan”替換為${username.password}即可實現對登錄名、密碼的參數化。
上面的三大步驟為實現參數化的必須步驟,缺一不可,小伙伴們在使用的時候千萬不要偷懶哦。我相信參數配置這塊你們還暈乎着,別介意,我當年初學時在這塊也是暈乎的,下面我們對參數配置再做一下詳細的解釋。
在上文的示例中,參數化配置為順序迭代、按迭代更新數據、數據重新循環,意思就是說性能測試中HyperPacer在取用參數的時候,是按順序進行取數、每一次迭代都更新數據,所有數據都取用過一次后,重新從頭取用,那么這種配置規則下,數據到底是怎么取用的
呢,我們通過一個例子來說明一下:
假設要做一個登錄業務的性能測試,且為並發測試場景,並發用戶為2個,執行2輪,參數列表有8條數據,按照順序依次為1到8,數據循環模式為重新循環,我們來看一下各設置組合下的取數情況(理想情況下):

除上述組合場景外,其它組合場景使用的機會很小,此處就不一一列出混淆視聽啦。
這樣整理下來,實際上是四種場景:
第一種場景(按用戶取值):只關心並發的用戶分別使用不同的值就可以了,其它不關心,如用戶名;
第二種場景(按迭代取值):除了關心並發用戶取不同值以外,還要每一輪迭代都要用不同的值;
第三種場景(按發生取值):每次發生的時候都取不同的值;
第四種場景(唯一且按發生):整個執行過程中每次取值都要求全局唯一的場景;
在前三種場景里,如果分配規則為順序則表示按照順序取值,不夠的話按照循環規則循環取數,而分配規則為唯一的話,則表示可以循環取數,但本測試輪次里取值需要保證唯一,不夠的話則發生異常終止運行。
參考文章: LoadRunner參數化詳解 原文出處
