『動善時』JMeter基礎 — 23、JMeter中使用“使用者自定義變數”實現引數化

繁華似錦Fighting發表於2021-05-26

1、使用者自定義變數介紹

我們可以看到前面一篇文章的例子中,資料檔案login_data.csv的後三個引數都是一樣的,我們可以把這些變數提取出來,放在一個公共的位置,方便我們隨時提取。(凡是可以輸入的位置,都可以使用引數化變數)

在JMeter中,有兩個地方可以設定這種公共的變數:

  • 一種是在“測試計劃”介面中設定“使用者自定義變數”。
  • 一種是在配置元件中的“使用者自定義變數”元件中新增變數。

之前我們介紹過,JMeter中常用的引數化方式有四種,

  1. CSV資料檔案設定(CSV Data Set Config):這種方式是通常所指的引數化。資料儲存在檔案中,該種引數化方式取值範圍大,靈活性強,適用於大量測試資料時的使用。
  2. 使用者引數(User Parameter):適用於引數取值範圍很小,需要少量測試資料時使用。
  3. 使用者自定義變數(User Defined Variables):更多用於設定全域性變數,常用於資料庫地址,測試環境、開發環境地址等常量配置。
  4. 函式助手:可使用函式生成隨機數字和隨機字串實現引數化。

本文我們以在“測試計劃”介面中設定“使用者自定義變數”為例,演示批量實現使用者的登陸操作。

2、使用“使用者自定義變數”實現引數化

(1)測試計劃內包含的元件

新增元件操作步驟

  1. 建立測試計劃,並且在測試計劃中新增“使用者自定義變數”資料。
  2. 建立執行緒組:選中“測試計劃”右鍵 —> 新增 —> 執行緒(使用者) —> 執行緒組
  3. 在測試計劃(也可以是執行緒組)裡面新增配置元件CSV Data Set Config元件:選中“執行緒組”右鍵 —> 新增 —> 配置元件 —> CSV 資料檔案設定
  4. 線上程組裡面,新增取樣器“HTTP請求”元件:選中“執行緒組”右鍵 —> 新增 —> 取樣器 —> HTTP請求
  5. 線上程組裡面,新增監聽器“察看結果樹”元件:檢視結果,選中“執行緒組”右鍵 —> 新增 —> 監聽器 —> 察看結果樹

最終測試計劃中的元件如下:

image

點選執行按鈕,會提示你先儲存該指令碼,指令碼儲存完成後會直接自動執行該指令碼。

(2)資料檔案內容

先用Excel表格編輯所需的請求引數,內容如下:

image

我們需要把該檔案儲存為.csv格式。

最後使用Notepad++開啟該檔案,然後點選“編碼” —> 轉為UTF-8編碼,防止中文亂碼。

最終所得到的.csv格式檔案的內容如下:

image

(3)測試計劃介面內容

在“測試計劃”介面中,把公共的變數設定“使用者自定義變數”中,如下圖所示:

image

和在“HTTP請求”元件中新增資料的操作一樣,這樣在該測試計劃中的所有元件都可以使用這些變數。

(4)執行緒組元件內容

如果需要使用CSV檔案中所有的資料,需要設定執行緒組元件的執行緒數或迴圈次數。

因為在CSV資料檔案設定元件中,有Recycle on EOFStop thread on EOF選項的關係,所以設定執行緒數和迴圈次數都可以實現,使用資料檔案中的每一組資料進行測試。

image

(5)CSV資料檔案設定元件內容

image

我一般常用操作,簡單說明:

  • 檔名:就直接瀏覽選擇檔案即可,也就是使用資料檔案的絕對路徑。
  • 檔案編碼選擇UTF-8
  • 變數名稱:就是把資料檔案的每個變數名都填寫上,中間用逗號分割。
  • 忽略首行:選擇True,如果CSV檔案中首行寫的是變數名稱,選擇忽略首行。
  • 分隔符:如果CSV檔案中的資料,使用的是逗號隔開,就默是預設值。如果是製表符,就用\t表示。
  • 是否允許帶引號?:如果變數值中有引號就選擇True,沒有則預設False即可。
  • 其他一般預設選擇。如果需求看上面說明中寫的很詳細,按工作中實際情況選擇。

(6)HTTP請求元件內容

在JMeter中使用引數化變數的格式:${變數名}

編輯登入介面內容,資訊如下圖所示:

image

我們可以看到${變數名}中的變數名,是以CSV資料檔案設定元件中變里名稱中定義變數名為準。如果不在變里名稱欄中定義任何內容,就以資料檔案中的標題列名為變數名。

(7)指令碼執行結果

該測試指令碼執行結果如下圖所示:

image

說明:後三個引數submitback_actact,是從測試計劃中設定的“使用者自定義變數”所獲取的。

以上就完成了在JMeter中通過“使用者自定義變數”實現引數化的示例。

相關文章