Jmeter(三十四) – 從入門到精通進階篇 – 參數化(詳解教程)
1.簡介
前邊三十多篇文章主要介紹的是Jmeter的一些操作和基礎知識,算是一些初級入門的知識點,從這一篇開始我們就來學習Jmeter比較高級的操作和深入的知識點了。今天這一篇主要是講參數化,其實前邊或多或少的介紹過類似的知識點,知識沒有系統的講解,由於這個在實際工作中用到比較多而且經常用到,所以宏哥今天將其單獨作為一個主題來系統的講解。
2.什麼是參數化
概念:根據需求動態獲取數據並進行賦值的過程。
參數化:通俗的講就是在進行測試的時候,測試數據是一項重要的準備工作,每次迭代的數據當不一樣的時候,需要進行參數化,從參數化的文件中來讀取測試數據。例如:測試用戶登錄時需要輸入用戶名和密碼,假如系統不允許相同的用戶名和密碼同時登錄,或者想更好的模擬多個用戶來登錄系統。這個時候就需要對用戶名和密碼進行參數化,使每個虛擬用戶都使用不同的用戶名和密碼進行訪問。
3.jmeter的幾種參數化方式
這裡以下邊的這個註冊接口為例:接口地址://api.apiopen.top/api.html
開發者註冊
請求方式:POST
請求地址://api.apiopen.top/developerRegister
Query參數名 | 類型 | 必需 | 描述 | 示例 e.g. |
---|---|---|---|---|
name | string | 是 | 用戶名 | peakchao |
passwd | string | 是 | 密碼 | 123456 |
string | 是 | 郵箱,用戶反饋相關會郵件通知。 | [email protected] |
返回示例:
{ "code": 200, "message": "成功!", "result": { "apikey": "b9b3a96f7554e3bead2eccf16506c13e" } }
3.1在jmeter中,通過${變量名}來獲取參數值。
1、用戶定義的變量
1)線程組右鍵添加–>配置元件–>用戶定義的變量,出現如下設置頁面後
輸入名稱、值;注意:名稱可以自定義設置,如下圖所示:

2)然後將設置後的變量名稱,在註冊、登錄請求中進行參數化引用${ip}、${email}
注意:引用的參數名跟用戶定義變量設置的名稱必須保持一致,宏哥這裡例舉了一個註冊實例,如下圖所示:

3)點擊運行,查看結果樹,顯示成功,如下圖所示:
2、函數助手獲取參數值
1)選擇菜單欄 選項–>函數助手對話框,彈出函數助手框,功能下面有多個函數可供選擇,我們主要看下__RandomString,其他可以自行了解下喲
2)要進行多個賬號註冊(比如10個用戶),註冊信息要求郵箱 email 和用戶名 name 不能重複;所以可以這麼來思考,QQ郵箱後邊的@qq.com段固定,那就對QQ郵箱前幾位進行隨機,頁面設置如下圖所示:
3)拷貝生成的函數字符串,粘貼進行參數引用,如下圖所示:
4)設置線程組線程數為10,模擬10個虛擬用戶的註冊,如下圖所示:
5)點擊運行,查看結果樹,顯示成功,(宏哥這裡只舉例說明郵箱,用戶名你可以模仿設置後《宏哥這裡在「北京宏哥」後邊加了一個隨機函數random,這樣北京宏哥後帶有一個數字就不會重複了》,才能註冊成功,否則會報用戶名重複的錯誤)如下圖所示:
3、CSV Data Set Config獲取參數值
1)若需要註冊的QQ郵箱不能隨機,必須是用戶真實提供的QQ郵箱進行註冊的話,就採用以下這種方式,提前收集用戶真實QQ號及昵稱,存放在本地txt或者CSV文件(CSV文件默認逗號隔開),如下圖所示:
2)線程組右鍵添加–>配置元件–>CSV Data Set Config,如下圖所示:
關鍵參數說明:
Filename:需要傳入文件的完整路徑。我的文件位於C盤目錄下,文件名為users.txt。
File encoding:參數文件的編碼格式。可以不填。
Variable Names:對應參數文件中每列的變量名,也是你要引用到請求中的參數變量名。這裡第一列是用戶名、第二列是密碼、第三列是郵箱。變量名可以自定義。
igonre first line(only used if Variable Names is not empty):當 CSV 文件中首行設置了變量名時,該項設為 true,此時每次請求讀取文件時會自動忽略首行,直接讀取第二行的數據。若首行未設置,則選擇False
Delimiter:文件中的分隔符,默認英文的逗號分隔。所以注意txt文檔中每行多個參數用英文逗號分隔。
Recycle on EOF: 設置為True後,允許重頭循環取值;為False,當讀取文件到結尾時,停止讀取文件
Stop Thread EOF: 當Recycle on EOF為false並且Stop Thread EOF 為true,則讀完csv文件中的記錄後,停止運行,線程數及執行次數無效。
Sharing Mode:共享模式。All threads:所有線程,所有線程循環取值,線程1取第一行,線程2取下一行;Current thread group:當前線程組,各個線程組分別循環取值;Current thread:當前線程,該測試計劃內的所有線程都取第一行。
備註說明:這裡我用通俗的語言大概講一下Recycle on EOF與Stop thread on EOF結果的關聯
Recycle on EOF :到了文件尾處,是否循環讀取參數,選項:true和false
Stop thread on EOF:到了文件尾處,是否停止線程,選項:true和false
當Recycle on EOF 選擇true時,Stop thread on EOF選擇true和false無任何意義,通俗的講,在前面控制了不停的循環讀取,後面再來讓stop或run沒有任何意義
當Recycle on EOF 選擇flase時,Stop thread on EOF選擇true,線程4個,參數3個,那麼只會請求3次
當Recycle on EOF 選擇flase時,Stop thread on EOF選擇flase,線程4個,參數3個,那麼會請求4次,但第4次沒有參數可取,不讓循環,所以第4次請求錯誤
3)使用CSV Data Set Config中定義好
a、直接參數化引用,如下圖所示:
b、通過函數助手進行參數化引用,如下圖所示:
4)設置線程組中線程數為3,執行後,輸出如下結果:成功,如下圖所示:
4.小結
1.在文件中輸入變量的值時,尤其是.txt和.bat文件中的變量值之間要用英文的逗號隔開。
2.變量值中有中文時,要在後邊勾選utf-8。
如果報錯,請求不成功,注意檢查是不是這兩點沒有注意到。
好了,時間不早了,今天就分享到這裡吧!!!