Jmeter(三十四) - 從入門到精通進階篇 - 參數化(詳解教程)

1.簡介

  前邊三十多篇文章主要介紹的是Jmeter的一些操做和基礎知識,算是一些初級入門的知識點,從這一篇開始咱們就來學習Jmeter比較高級的操做和深刻的知識點了。今天這一篇主要是講參數化,其實前邊或多或少的介紹過相似的知識點,知識沒有系統的講解,因爲這個在實際工做中用到比較多並且常常用到,因此宏哥今天將其單獨做爲一個主題來系統的講解。html

尤爲是在用到jmeter工具時,不管作接口測試仍是性能測試,參數化都是一個必須掌握且很是有用的知識點。參數化的使用場景,例如:
  1)多個請求都是同一個ip地址,若服務器地址更換了,則腳本須要更改每一個請求的ip
  2)註冊帳號,不容許帳號重複;想批量註冊用戶時
  3)模擬多個用戶登陸,須要用到不一樣用戶信息登陸時
  4)上一個請求的輸出結果用於下一個請求的參數傳入,例如登陸獲取到的token信息,用於提交帳單請求的參數調用

2.什麼是參數化

  概念:根據需求動態獲取數據並進行賦值的過程。api

  參數化:通俗的講就是在進行測試的時候,測試數據是一項重要的準備工做,每次迭代的數據當不同的時候,須要進行參數化,從參數化的文件中來讀取測試數據。例如:測試用戶登陸時須要輸入用戶名和密碼,假如系統不容許相同的用戶名和密碼同時登陸,或者想更好的模擬多個用戶來登陸系統。這個時候就須要對用戶名和密碼進行參數化,使每一個虛擬用戶都使用不一樣的用戶名和密碼進行訪問。服務器

3.jmeter的幾種參數化方式

這裏如下邊的這個註冊接口爲例:接口地址:https://api.apiopen.top/api.htmldom

開發者註冊函數

請求方式:POST工具

請求地址:https://api.apiopen.top/developerRegister性能

Query參數名 類型 必需 描述 示例 e.g.
name string 用戶名 peakchao
passwd string 密碼 123456
email string 郵箱,用戶反饋相關會郵件通知。 309324904@qq.com

返回示例:學習

{
    "code": 200,
    "message": "成功!",
    "result": {
        "apikey": "b9b3a96f7554e3bead2eccf16506c13e"
    }
}

3.1在jmeter中,經過${變量名}來獲取參數值。

一、用戶定義的變量測試

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,執行後,輸出以下結果:成功,以下圖所示:

4.小結

1.在文件中輸入變量的值時,尤爲是.txt和.bat文件中的變量值之間要用英文的逗號隔開。
2.變量值中有中文時,要在後邊勾選utf-8。
若是報錯,請求不成功,注意檢查是否是這兩點沒有注意到。

  好了,時間不早了,今天就分享到這裏吧!!!

相關文章
相關標籤/搜索