『動善時』JMeter基礎 — 27、通過JMeter函式助手實現引數化

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

我們在使用JMeter進行測試的時候,測試資料是一項重要的準備工作,當每次迭代的資料不一樣的時候,就需要進行引數化,也就是從引數化資料檔案中來讀取測試資料。

JMeter中的引數化方式有多種,我們之前講過了使用CSV 資料檔案設定元件,從.cvs.txt檔案中讀取資料。

今天我們來說一下,使用函式助手實現JMeter的引數化,其實方法很類似,只是呼叫資料的方式略有不同。

需求:我們以一個登陸介面為例。

傳送登入請求的時候,我們需要傳遞兩個引數:phonepassword

針對這個登入介面設計5條用例,如下:

  1. 正常登入。
  2. 手機號未註冊,即:手機號填寫錯誤。
  3. 手機號不合法,即:手機號填寫錯誤位數不對或為空。
  4. 手機號或密碼錯誤,即:密碼錯誤。
  5. 密碼不合法,即:密碼為空。

1、測試計劃中的元件

新增元件操作步驟

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

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

image

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

2、資料檔案內容

建立一個.csv檔案,名為login_data.csv,然後根據需求編輯資料檔案內容。使用函式助手實現引數化的時候,我們不在資料檔案的第一行新增列表明,這樣方便我們取值。

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

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

image

3、函式助手配置

(1)函式助手的開啟方式

在JMeter中開啟函式助手介面的方式有兩種:

第一種:選項 ——> 函式助手對話方塊

第二種:在工具欄中常用功能的快捷按鈕,如下圖:

image

(2)函式助手介面介紹

image

介面說明:

  • 選擇一個功能:這裡是選擇你要使用的函式。
  • 函式引數:每個函式需要的函式引數都是不一樣的。
    我們以__CSVRead函式為例:
    1)CSV file to get values from | *alias:填寫資料檔案路徑。
    2)CSV檔案列號| next| *:標識在CSV檔案中讀取第幾列中的資料,從0開始,第一列0、第二列1、第三列2,依次類推。
  • 點選生成按鈕,生成獲取引數值的函式表示式,可以在下方中看到生成的結果,生成的結果即為從資料檔案中拿到的引數值。
  • Reset Variables:重置變數。
  • The result of the function is:當我們檔案路徑和引數值的列號填寫後、點選“生成”按鈕,就會將讀取到的值顯示在這裡。
  • Current JMeter Variables:當前的JMeter變數相關資訊。

說明:Current JMeter Variables中的內容說明。

(1)預定義變數

大多數變數都是通過函式呼叫和測試元件(如使用者自定義變數)來設定的,在這種情況下使用者擁有對變數名的完整控制權。

但是有些變數是JMeter內建的,例如:JMeterThread.last_sample_ok:最近的取樣是否可以(true/false)。

(2)預定義變數屬性

JMeter屬性集是在JMeter啟動時通過系統屬性初始化的,還有其他補充的JMeter屬性來自於jmeter.propertiesuser.properties或者命令列中。

JMeter還另外定義了一些內建屬性,從方便的角度考慮,屬性START的值會被複制到同名變數中去。

下面是具體列表:

  • START.MS:以毫秒為單位的JMeter啟動時間;
  • START.YMD:JMeter啟動日期格式yyyyMMdd
  • START.HMS:JMeter啟動時間格式HHmmss
  • TESTSTART.MS:以毫秒為單位的測試啟動時間;

請注意:START變數/屬性表徵的是JMeter啟動時間,而非測試的啟動時間,它們主要用於檔名之中。

(3)編輯後的函式助手介面

因為我們使用函式助手實現JMeter中的引數化,所以我們要使用__CSVRead函式。

然後我們需要把資料檔案的絕對路徑填入第一個輸入框中,在第二個輸入框選擇取第幾列的資料。

最後我們點選“生成”按鈕,就會生成一個函式表示式。

如下圖所示:

image

提示幾點

  1. The result of the function is的輸入框中要看到引數檔案中的值,算是成功。
  2. 把生成函式字串,複製到請求元件中需要引數化的地方。
  3. 檔案資料中的每一列資料,都要生成一個函式字串。(其實就是最後的列數不一樣)

4、HTTP請求元件內容

編輯HTTP請求元件中的內容,然後把需要使用引數化變數的地方,引用函式助手中生成的函式字串表示式。

如下圖所示:

image

5、執行緒組元件內容

如果需要使用CSV檔案中所有的資料,需要設定執行緒數。

因為沒有了CSV資料檔案設定元件的參與,所以這裡只能使用執行緒數進行設定,才能實現變數的迴圈應用。

如果使用迴圈次數進行設定,效果就是使用同一使用者,執行幾次登陸操作。

image

6、指令碼執行結果

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

image

我們可以看到,一個傳送了5次請求,每次請求使用的引數值都是不同的,並且返回結果的預期也與我們設想的一樣。

這樣就演示了,使用函式助手實現JMeter中的引數化。

7、總結JMeter函式助手使用步驟

  1. 點選JMeter頁面的函式助手。
  2. 選擇需要使用的函式。
  3. 設定函式相關引數。
  4. 點選生成可被引用的函式字串。
  5. 複製函式字串。
  6. 貼上到需要使用的位置。

相關文章