我們在使用JMeter進行測試的時候,測試資料是一項重要的準備工作,當每次迭代的資料不一樣的時候,就需要進行引數化,也就是從引數化資料檔案中來讀取測試資料。
JMeter中的引數化方式有多種,我們之前講過了使用CSV 資料檔案設定元件,從.cvs
和.txt
檔案中讀取資料。
今天我們來說一下,使用函式助手實現JMeter的引數化,其實方法很類似,只是呼叫資料的方式略有不同。
需求:我們以一個登陸介面為例。
傳送登入請求的時候,我們需要傳遞兩個引數:phone
和password
。
針對這個登入介面設計5條用例,如下:
- 正常登入。
- 手機號未註冊,即:手機號填寫錯誤。
- 手機號不合法,即:手機號填寫錯誤位數不對或為空。
- 手機號或密碼錯誤,即:密碼錯誤。
- 密碼不合法,即:密碼為空。
1、測試計劃中的元件
新增元件操作步驟:
- 建立測試計劃。
- 建立執行緒組:
選中“測試計劃”右鍵 —> 新增 —> 執行緒(使用者) —> 執行緒組
。 - 線上程組裡面,新增取樣器“HTTP請求”元件:
選中“執行緒組”右鍵 —> 新增 —> 取樣器 —> HTTP請求
。 - 線上程組裡面,新增監聽器“察看結果樹”元件:檢視結果,
選中“執行緒組”右鍵 —> 新增 —> 監聽器 —> 察看結果樹
。
最終測試計劃中包含的元件如下:
點選執行按鈕,會提示你先儲存該指令碼,指令碼儲存完成後會直接自動執行該指令碼。
2、資料檔案內容
建立一個.csv
檔案,名為login_data.csv
,然後根據需求編輯資料檔案內容。使用函式助手實現引數化的時候,我們不在資料檔案的第一行新增列表明,這樣方便我們取值。
然後使用Notepad++
開啟該檔案,點選“編碼” —> 轉為UTF-8編碼,防止中文亂碼。
最終所得到的.csv
格式檔案的內容如下:
3、函式助手配置
(1)函式助手的開啟方式
在JMeter中開啟函式助手介面的方式有兩種:
第一種:選項 ——> 函式助手對話方塊
。
第二種:在工具欄中常用功能的快捷按鈕,如下圖:
(2)函式助手介面介紹
介面說明:
- 選擇一個功能:這裡是選擇你要使用的函式。
- 函式引數:每個函式需要的函式引數都是不一樣的。
我們以__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.properties
、user.properties
或者命令列中。JMeter還另外定義了一些內建屬性,從方便的角度考慮,屬性START的值會被複制到同名變數中去。
下面是具體列表:
START.MS
:以毫秒為單位的JMeter啟動時間;START.YMD
:JMeter啟動日期格式yyyyMMdd
;START.HMS
:JMeter啟動時間格式HHmmss
;TESTSTART.MS
:以毫秒為單位的測試啟動時間;請注意:START變數/屬性表徵的是JMeter啟動時間,而非測試的啟動時間,它們主要用於檔名之中。
(3)編輯後的函式助手介面
因為我們使用函式助手實現JMeter中的引數化,所以我們要使用__CSVRead
函式。
然後我們需要把資料檔案的絕對路徑填入第一個輸入框中,在第二個輸入框選擇取第幾列的資料。
最後我們點選“生成”按鈕,就會生成一個函式表示式。
如下圖所示:
提示幾點:
- 在
The result of the function is
的輸入框中要看到引數檔案中的值,算是成功。 - 把生成函式字串,複製到請求元件中需要引數化的地方。
- 檔案資料中的每一列資料,都要生成一個函式字串。(其實就是最後的列數不一樣)
4、HTTP請求元件內容
編輯HTTP請求元件中的內容,然後把需要使用引數化變數的地方,引用函式助手中生成的函式字串表示式。
如下圖所示:
5、執行緒組元件內容
如果需要使用CSV檔案中所有的資料,需要設定執行緒數。
因為沒有了CSV資料檔案設定元件的參與,所以這裡只能使用執行緒數進行設定,才能實現變數的迴圈應用。
如果使用迴圈次數進行設定,效果就是使用同一使用者,執行幾次登陸操作。
6、指令碼執行結果
該測試指令碼執行結果如下圖所示:
我們可以看到,一個傳送了5次請求,每次請求使用的引數值都是不同的,並且返回結果的預期也與我們設想的一樣。
這樣就演示了,使用函式助手實現JMeter中的引數化。
7、總結JMeter函式助手使用步驟
- 點選JMeter頁面的函式助手。
- 選擇需要使用的函式。
- 設定函式相關引數。
- 點選生成可被引用的函式字串。
- 複製函式字串。
- 貼上到需要使用的位置。