參數化是自動化測試腳本的一種常用技巧。簡單來說,參數化的一般用法就是将腳本中的某些輸入使用參數來代替,在腳本運作時指定參數的取值範圍和規則;
這樣,腳本在運作時就可以根據需要選取不同的參數值作為輸入。這種方式通常被稱為資料驅動測試(Data Driven Test),參數的取值範圍被稱為資料池(Data Pool)。
jmeter的test plan中,支援如下4種參數化方式:
函數助手:_CSVRead
CSV Data Set Config:CSV資料控件
User Defined Variables:使用者定義的變量
User Variables:使用者參數
首先建立一個測試腳本,可以通過工具(badboy)錄制或者自己手動編寫
登入請求的界面如下:

這裡我們對登入的使用者名密碼進行參數化,将使用者名密碼寫入txt文檔,儲存為.dat格式,編碼類型選擇UTF-8;
因為配置元件——CSV Data Set Config對參數化的格式要求比較嚴格,使用者名密碼一一對應,之間用半角英文逗号隔開
然後将儲存的.dat檔案放入計算機的某個盤裡,這裡我放入路徑為:F:\jmeter\csvtest.dat
下面具體介紹參數化常用的的兩種方法:
一、函數助手:_CSVRead
點選jmeter的界面,功能欄選項→ 函數助手對話框→ _CSVRead
CSV file to get values from | *alias:CSV檔案取值路徑,即這裡需要寫入之前的需要參數化的參數的檔案路徑
CSV檔案列号| next|*alias:檔案起始列号:CSV檔案列号是從0開始的,第一列為0,第二列為1,以此類推。。。
函數字元串:即生成的參數化後的參數,可以直接在登陸請求中的參數中引用,第一列為使用者名,函數字段号為0,第二列為密碼,函數字段号為1,以此類推進行修改使用即可
替換參數化後的參數,然後修改線程數,執行腳本,通過監聽器裡結果樹的請求内容,可以看到請求的參數都是參數化後的資料
二、配置元件——CSV Data Set Config
點選線程組添加配置元件→ CSV Data Set Config:
說明:
Filename:F:\jmeter\csvtest.dat檔案名,儲存參數化資料的檔案目錄,可選擇相對或者絕對路徑(建議填寫相對路徑,避免腳本遷移時需要修改路徑);
File encoding:UTF-8,F:\jmeter\csvtest.dat檔案的編碼格式,在儲存時儲存編碼格式為UTF-8即可;
Variable Names(comma-delimited):對對應參數檔案每列的變量名,類似excel檔案的檔案頭,起到标示作用,同時也是後續引用的辨別符,建議采用有意義的英文标示;
(如:有幾列參數,在這裡面就寫幾個參數名稱,每個名稱中間用分隔符分割,這裡的 user,pwd,可以被利用變量名來引用:user,user,{pwd};
Delimitet:參數檔案分隔符,用來在“Variable Names”中分隔參數,與參數檔案中的分隔符保持一緻即可;
Allow quote data:是否允許引用資料,預設false,選項選為“true”的時候對全角字元的處理出現亂碼 ;
Recycle on EOF?:是否循環讀取參數檔案内容;因為CSV Data Set Config一次讀入一行,分割後存入若幹變量中交給一個線程,如果線程數超過文本的記錄行數,那麼可以選擇從頭再次讀入;
△ Ture:為true時,當已讀取完參數檔案内的測試用例資料,還需繼續擷取用例資料時,此時會循環讀取參數檔案資料(即:讀取檔案到結尾時,再重頭讀取檔案);
△False:為false時,若已至檔案末尾,則不再繼續讀取測試資料;通常在“線程組線程數* 線程組循環次數>參數檔案行數”時,選用false(即:讀取檔案到結尾時,停止讀取檔案);
Stop thread on EOF?:當Recycle on EOF為False時(讀取檔案到結尾),停止程序,當Recycle on EOF為True時,此項無意義;
△若為ture,則在讀取到參數檔案行末尾時,終止參數檔案讀取線程;
△若為false,此時線程繼續讀取,但會請求錯誤,是以時讀取的資料為EOF;
Sharing mode:共享模式,即參數檔案的作用域,有以下幾種方式:
△All threads:目前測試計劃中的所有線程中的所有的線程都有效,預設;
△Current thread group:目前線程組中的線程有效;
△Current thread:目前線程有效;
完成之後,将剛才生成的參數寫入參數對應的值裡面:
以上兩種常見的參數化的方法,推薦使用CSV控件方法(因為函數助手參數化功能相比其較弱)
三、配置元件——User Defined Variables
點選線程組添加配置元件→ User Defined Variables(使用者定義的變量):
如上圖所示,在該參數組中已經定義了兩個參數,通過界面下方的添加、删除按鈕可以向參數清單增加和删除參數,Up和Down可以上下移動參數的位置;
PS:User Defined Variables中定義的參數值在test plan執行過程中不能發生取值的改變,是以一般僅将test plan中不需要随疊代發生改變的參數(隻取一次的參數)
設定在此處;例如:被測應用的host和port值。
四、前置處理器——User Variables
點選線程組添加前置處理器——User Variables(使用者參數):
如上圖所示,在該參數組中已經設定了兩個參數,username和password分别有2組不同的取值,通過頁面下方的四個按鈕,可以增加删除參數的可能取值。
PS:User Variables中設定的參數可以在test plan執行過程中發生變化。
以上就是jmeter參數化的四種方式,其中:
1、函數助手_CSVRead的參數化功能相比CSV Data Set Config較弱;
2、CSV Data Set Config适用于參數取值範圍較大的時候使用,該方法具有更大的靈活性;
3、User Defined Variables一般用于test plan中不需要随請求疊代的參數設定;
4、User Variables适用于參數取值範圍很小的時候使用;
PS:相比于loadrunner來說,jmeter參數化有以下不同:
1.jmeter參數檔案第一行沒有列名稱
2.參數檔案的編碼,盡量儲存為UTF-8(編碼問題在使用CSV Data Set Config參數化時要求的比較嚴格)
3.Jmeter的參數化沒有LoadRunner做的出色,它是依賴于線程設定的(隻有CSV Data Set Config參數化方法才有)
轉載于:https://www.cnblogs.com/sunyale/p/11206880.html