前邊三十多篇文章主要介紹的是Jmeter的一些操做和基礎知識,算是一些初級入門的知識點,從這一篇開始咱們就來學習Jmeter比較高級的操做和深刻的知識點了。今天這一篇主要是講參數化,其實前邊或多或少的介紹過相似的知識點,知識沒有系統的講解,因爲這個在實際工做中用到比較多並且常常用到,因此宏哥今天將其單獨做爲一個主題來系統的講解。html
概念:根據需求動態獲取數據並進行賦值的過程。api
參數化:通俗的講就是在進行測試的時候,測試數據是一項重要的準備工做,每次迭代的數據當不同的時候,須要進行參數化,從參數化的文件中來讀取測試數據。例如:測試用戶登陸時須要輸入用戶名和密碼,假如系統不容許相同的用戶名和密碼同時登陸,或者想更好的模擬多個用戶來登陸系統。這個時候就須要對用戶名和密碼進行參數化,使每一個虛擬用戶都使用不一樣的用戶名和密碼進行訪問。服務器
這裏如下邊的這個註冊接口爲例:接口地址:https://api.apiopen.top/api.htmldom
開發者註冊函數
請求方式:POST工具
請求地址:https://api.apiopen.top/developerRegister性能
Query參數名 | 類型 | 必需 | 描述 | 示例 e.g. |
---|---|---|---|---|
name | string | 是 | 用戶名 | peakchao |
passwd | string | 是 | 密碼 | 123456 |
string | 是 | 郵箱,用戶反饋相關會郵件通知。 | 309324904@qq.com |
返回示例:學習
{ "code": 200, "message": "成功!", "result": { "apikey": "b9b3a96f7554e3bead2eccf16506c13e" } }
一、用戶定義的變量測試
1)線程組右鍵添加-->配置元件-->用戶定義的變量,出現以下設置頁面後編碼
輸入名稱、值;注意:名稱能夠自定義設置,以下圖所示:
2)而後將設置後的變量名稱,在註冊、登陸請求中進行參數化引用${ip}、${email}
注意:引用的參數名跟用戶定義變量設置的名稱必須保持一致,宏哥這裏例舉了一個註冊實例,以下圖所示:
3)點擊運行,查看結果樹,顯示成功,以下圖所示:
二、函數助手獲取參數值
1)選擇菜單欄 選項-->函數助手對話框,彈出函數助手框,功能下面有多個函數可供選擇,咱們主要看下__RandomString,其餘能夠自行了解下喲
2)要進行多個帳號註冊(好比10個用戶),註冊信息要求郵箱 email 和用戶名 name 不能重複;因此能夠這麼來思考,QQ郵箱後邊的@qq.com段固定,那就對QQ郵箱前幾位進行隨機,頁面設置以下圖所示:
3)拷貝生成的函數字符串,粘貼進行參數引用,以下圖所示:
4)設置線程組線程數爲10,模擬10個虛擬用戶的註冊,以下圖所示:
5)點擊運行,查看結果樹,顯示成功,(宏哥這裏只舉例說明郵箱,用戶名你能夠模仿設置後《宏哥這裏在「北京宏哥」後邊加了一個隨機函數random,這樣北京宏哥後帶有一個數字就不會重複了》,才能註冊成功,不然會報用戶名重複的錯誤)以下圖所示:
三、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,執行後,輸出以下結果:成功,以下圖所示:
1.在文件中輸入變量的值時,尤爲是.txt和.bat文件中的變量值之間要用英文的逗號隔開。
2.變量值中有中文時,要在後邊勾選utf-8。
若是報錯,請求不成功,注意檢查是否是這兩點沒有注意到。
好了,時間不早了,今天就分享到這裏吧!!!