一、引數化概述
1、引數化概念
引數化就是動態的獲取並設定資料,當執行批量操作時,如批量插入或批量刪除,之前每執行完一次就需要修改一次,效率太低,引數化可以代替人工獲取並設定資料,安全且高效!
2、Jmeter引數化元件
- CSV Data Set Config----CSV資料設定元件
- 使用者引數
- 使用者定義的變數
- 函式
二、引數化實現之CSV Data Set Config
1、概述
CSV Data Set Config----CSV資料設定元件,是引數化的實現元件之一,通過這個元件可以動態獲取並設定資料,實現批量操作,如:批量新增操作(執行一次,將多條資料插入到資料庫)。
2、例項1:引數化登入賬號
我們錄製的指令碼,內容都是固定的,比如手機號、驗證碼都是我們再錄製過程中輸入的,如果我們希望模擬不同使用者登陸,那麼我們並不需要錄製很多個指令碼,而只要將指令碼中的使用者名稱、密碼變成變數,而執行緒執行時,不同執行緒取得不同的變數值即可。
下面我們就舉例說明如何引數化登陸賬號。
(1)測試登入介面:如下圖,新建登陸的HTTP請求並執行,確保登入介面執行正常。
(2)建立一個文字文件,標準的CSV格式檔案,如下圖包括3條資料,每一行資料對應一條登入資訊,不同欄位之間使用英文逗號分隔。
(3)執行緒組右鍵---新增---配置元件---CSV Data Set Config----CSV,建立一個CSV元件,並宣告資料來源、編碼集以及解析格式,如下圖所示:
(4)設定執行緒組的執行緒數為3(因為檔案中有三條登入資料),並修改HTTP請求中的引數值,呼叫CSV資料檔案設定中定義的變數,呼叫格式${變數名},如下圖所示:
(5)執行測試計劃,檢視結果樹的執行結果,如下圖所示:
3、例項2:批量新增
實現思想:
實現步驟:
(1)建立CSV 資料檔案設定,如下圖所示:
(2)建立HTTP請求,並在請求中呼叫CSV中定義的變數
(3)編輯文字文件,儲存要新增的三條資料
(4)設定執行緒組迴圈次數為3,並執行測試計劃,檢視察看結果樹顯示。
三、引數化之使用者引數
1、使用者引數與CSV引數化的區別
使用者引數和CSV都是將資料設定進第三方,然後迴圈讀取資料,區別在於:CSV是將資料設定進外部的文字文件,而使用者引數是將資料設定進Jmeter內建元件。
2、實現流程
(1)搭建框架:建立測試計劃、執行緒組、HTTP請求(請求的JSON資料先不設定)。注意:執行次數是3次(不是設定迴圈次數,而是設定執行緒數)
(2)建立Jmeter內建元件儲存要插入的資料:測試計劃右鍵----新增----前置處理器----使用者引數,在使用者引數元件介面新增4個變數、3個使用者,如下圖所示:
注意:因為此處新增的是使用者,每個使用者對應一個執行緒 ,新增幾個使用者就應該設定幾個執行緒,所以這裡設定的是執行緒組而不是迴圈次數。
(3)將使用者引數元件中的變數名稱設定進HTTP請求的Json資料格式中,呼叫格式:${變數名},如下圖所示:
(4)執行測試計劃,檢視察看結果樹。
四、引數化之使用者定義的變數
1、需求
當系統執行增刪改查操作時,資源路徑不一定相同,但存在部分相同,如:都是/api/departments/開頭,為了提高編寫路徑的效率,可以將公共路徑定義成變數,然後再在路徑中使用${變數名}呼叫變數。注:一般定義、儲存全域性使用的變數。
2、實現過程
(1)將公共的路徑資料提取出來使用一個元件儲存,如:/api/departments/。測試計劃右鍵----新增----配置元件----使用者定義的變數,建立使用者定義的變數元件,新增自定義變數,如下圖所示:
(2)分別建立HTTP請求,在路徑中公共部分呼叫定義的路徑變數,非公共部分路徑與原來一致,如下圖所示:
(3)執行測試計劃,檢視結果樹。
五、引數化之函式
1、需求
函式是程式中最基本的封裝單元,封裝了一些常用的功能,比如計數器。在實際應用中當我們需要迴圈10次查詢資訊時,結果數的請求名稱都是一樣的,我們可以使用計數函式新增標號以示區分。
2、實現流程
(1)開啟Jmeter內建的函式元件,一共有三種方式:
- 選項+函式助手對話方塊
- ctrl+shift+F1
- 工具欄倒數第二個圖示
(2)選擇要使用的函式,給函式傳參,並用Jmeter生成呼叫格式,如下圖:
注:__counter函式的引數:true,每一個使用者單獨一個計數器;false,所有使用者共用一個計數器.
(3)在需要呼叫函式的位置使用Jmeter生成的呼叫格式:${_函式名(引數)}
(4)執行測試計劃,檢視結果樹,如下圖所示:
六、總結
1、引數化----CSV Data Set Config
概念:動態獲取並設定資料,運算元據高效安全(程式代替人工)
實現思想+具體流程:
2、引數化----使用者引數
實現思想:將資料單獨儲存,然後再將資料讀取到http請求的JSON 資料中
實現流程:
- 設定執行次數(使用者數)
- 新增元件使用者引數儲存多條記錄
- 讀取資料格式: ${變數名 )
3、引數化----使用者定義的變數
作用:儲存全域性性資料
新增格式:新增使用者定義的變數元件-----鍵和值
呼叫格式:${變數名}
4、引數化----函式
概念:程式中的功能單元,封裝了部分實現
實現:
- 開啟函式功能模組
- 選擇要呼叫的函式+設定引數+生成呼叫格式
- 在需要使用的位置呼叫即可
5、四種引數化方案比較
- CSV和使用者引數使用思想一致,流程上後者更簡單,但是實際應用中,使用CSV居多,因為資料量大時,CSV更方便
- 使用者定義的變數一般用來儲存全域性變數,但是使用場景較少
- 函式實現更為靈活且內建了好多實現。
總結:最常用的是引數化方法是:CSV+函式