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


我們在使用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. 粘貼到需要使用的位置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM