『動善時』JMeter基礎 — 19、JMeter配置元件【隨機變數】

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

1、隨機變數介紹

隨機變數應用場景:在一些資料要求不重複,或者對資料取值需要正態分佈的時候,我們可以採用隨機變數元件來滿足需求。

隨機變數使用者自定義變數的區別:

  • 隨機變數(random variable):線上程每個次迴圈執行時,取值都會重新生成。
  • 使用者自定義變數(User defined variables):在同個執行緒中,使用者自定義變數只會被引用一次,後面不管迴圈執行多少次,變數值都相同。

2、隨機變數介面詳解

新增隨機變數元件的操作:選中“執行緒組”右鍵 —> 新增 —> 配置元件 —> 隨機變數

隨機變數介面如下:

image

隨機變數元件的詳細說明:

  • 名稱:隨機變數元件的自定義名稱,見名知意最好。
  • 註釋:即新增一些備註資訊,對該隨機變數元件的簡短說明,以便後期回顧時檢視。
  • 變數名稱Variable Name):用於在其它元件中引用該值,形式:${variable_name}
  • 輸出格式Output Format):比如設定為000,會格式化為001,002。假設Output Format設定為user_000,那麼格式化後,第一個引數值為user_001,第二個引數值為user_002,以此類推。預設格式為Long.toString(),但是預設格式下,還是可以當作數字使用。
  • 最小值Minimum Value):生成的最小隨機數。
  • 最大值Maximum Value):生成的最大隨機數。
  • 隨機種子Seed for Random function):隨機函式的種子,供隨機數生成器使用的seed構造器。如果為空,則使用預設的Random構造器。
  • 每執行緒(使用者)?Per Thread(User)?):如果設定為True,那麼每個執行緒獨享各自的隨機數生成器。如果設定為False,那麼所有執行緒共享同一個隨機數生成器。

提示:無特殊需求的情況下,建議Seed for Random function不填,Per Thread(User)?設定為False,也就是這兩項全部預設。

說明:隨機種子是什麼?

隨機種子是用於產生隨機輸出的值。

由於隨機數函式實際上只是一個函式,輸出的“隨機”值總是基於種子。換句話說,如果您使用相同的種子值為隨機輸出生成器播種,您將得到相同的“隨機”結果。這就是為什麼大多數隨機數發生器,使用系統時間來播種它們自己,因為這是高度可變的。

現在回到你的問題。如果你指定一個種子,你會得到固定的隨機輸出。這使您可以輕鬆地使用完全相同的隨機值重複測試,只需傳入相同的種子即可。

3、隨機變數的使用

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

新增元件操作步驟

  1. 建立測試計劃。
  2. 建立執行緒組:選中“測試計劃”右鍵 —> 新增 —> 執行緒(使用者) —> 執行緒組
  3. 線上程組中新增配置元件"隨機變數"元件:選中“執行緒組”右鍵 —> 新增 —> 配置元件 —> 隨機變數
  4. 線上程組裡面新增取樣器“HTTP請求”元件:選中“執行緒組”右鍵 —> 新增 —> 取樣器 —> HTTP請求
  5. 線上程組裡面新增監聽器“察看結果樹”元件:檢視結果,選中“執行緒組”右鍵 —> 新增 —> 監聽器 —> 察看結果樹

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

image

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

提示:如果有多個執行緒組,需要使用同一個隨機變數元件,就把隨機變數元件提到和執行緒組同一級。

(2)執行緒組介面內容

我們定義迴圈次數為3,也就是進行3次該請求。(可以修改執行緒數)

image

(3)隨機變數介面內容

隨機變數介面中,我們定義最小值為1,最大值為999,輸出格式為000,。

隨機變數的引用名稱為randomVariables,之後我們使用${randomVariables}的方式,就能夠引用該值了。

如下圖所示:

image

(4)HTTP請求介面內容

我們在HTTP請求介面中可以引用隨機變數的值,可以寫在任何可輸入的位置。

如下圖所示:

image

(5)檢視結果

我們可以看到下圖中,每個請求中的隨機變數都是不同的值,證明隨機變數元件成功的生成了我們所需要的數值。

image

以上就是JMeter中隨機變數元件的使用方法。

相關文章