🔥Jmeter(八) - 從入門到精通 - JMeter 配置元件(詳解教程)

北京-宏哥發表於2025-02-26

1.簡介

JMeter 配置元件可以用來初始化預設值和變數,讀取檔案資料,設定公共請求引數,賦予變數值等,以便後續取樣器使用。將在其作用域的初始化階段處理。配置元件(Config Element)提供對靜態資料配置的支援,可以為取樣器設定預設值和變數。

首先我們來看一下 JMeter 的配置元件,路徑:新增 - 配置元件;我們可以清楚地看到 JMeter5 中共有 19 個配置元件,如下圖所示:

如果上圖您看得不是很清楚的話,宏哥總結了一個思維導圖,關於 JMeter5 的配置元件型別,如下圖所示:

透過以上的瞭解,我們對配置元件有了一個大致的瞭解和認識。下面宏哥就給小夥伴或則童鞋們分享講解一些通常在工作中會用到的配置元件。

2.常用配置元件詳解

  這一小節,宏哥就由上而下地詳細地講解一下常用的配置元件。

2.1CSV Data Set Config

1、我們先來看看這個 CSV Data Set Config 長得是啥樣子,如下圖所示:

2、引數詳解及說明,如下表所示:

參 數 描 述 是否必填
Name 指令碼中顯示的這個元件的描述性名稱
Filename 待讀取檔案的名稱。可以寫入絕對路徑,也可以寫入相對路徑(相對於 bin 目錄),如果直接寫檔名,則該檔案要放在 bin 目錄中。對於分散式測試,主機和遠端機中相應目錄下應該有相同的 CSV 檔案
File Encoding 檔案讀取時的編碼格式,不填則使用作業系統的編碼格式
Ignore first line 是否忽略首行,如果 csv 檔案中沒有表頭,則選擇 false
Variable Names 變數名列表,多個變數名之間必須用分隔符分隔。如果該項為空,則檔案首行會被讀取並解析為列名列表
Delimiter 引數分隔符,將一行資料分隔成多個變數,預設為逗號,也可以使用 “\t”。如果一行資料分隔後的值比 Vairable Names 中定義的變數少,這些變數將保留以前的值(如果有值的話)
Allow quoted data? 是否允許變數使用雙引號,允許的話,變數將可以括在雙引號內,並且這些變數名可以包含分隔符
Recycle on EOF? 是否迴圈讀取 csv 檔案內容,達到檔案結尾後,是否從檔案開始迴圈重新讀取;預設為 true
Stop thread on EOF? 是否迴圈讀取 csv 檔案內容,達到檔案結尾後,執行緒是否該終止;預設為 true
Recycle on EOF? 當 Recycle on EOF 為 False 時,停止執行緒,當 Recycle on EOF 為 True 時,此項無意義,預設為 false
Sharing mode 1、 All threads(預設) :一個執行緒組內,各個執行緒(使用者)唯一順序取值;2、 current thread :一個執行緒組內,各個執行緒(使用者)各自順序取值;3、執行緒組各自獨立,但每個執行緒組內各個執行緒(使用者)唯一順序取值;

3、Recycle on EOF 和 Stop thread on EOF 的關係:

當 Recycle on EOF 選擇 true 時,Stop thread on EOF 選擇 true 和 false 無任何意義,因為既然前面已經設定了檔案是不停的迴圈讀取,後面的控制 stop 就相當於失效;
當 Recycle on EOF 選擇 false 時,Stop thread on EOF 選擇 true,則當執行緒數超過檔案裡的引數的個數時,實際請求數為引數的個數;
當 Recycle on EOF 選擇 false 時,Stop thread on EOF 選擇 flase,當執行緒數超過檔案裡引數的個數時,實際請求次數為執行緒數,但當執行緒數超過引數次數時,由於沒有引數,所以結果仍然是失敗的。
4、Sharing mode:如果希望每個執行緒擁有自己獨立的值集合,那麼就需要建立一系列資料檔案,為每個執行緒準備一個資料檔案,如 test1.csv、test2.csv 等,使用檔名 test${__threadNum}.csv,並將 “sharing mode"設定為"Current thread"

All threads:檔案在所有執行緒間共享。

Identifier:所有執行緒共享相同的標識,共享相同的檔案。如有4個執行緒組,測試人員可以使用一個通用ID,以便在兩個或多個執行緒組之間共享檔案。

Current thread:每個檔案會針對每個執行緒單獨開啟。

Current thread group:每個檔案會針對每個執行緒組開啟一次。

2.2HTTP Header Manager

支援使用者新增或者重寫 HTTP 請求頭。JMeter 支援多個資訊頭管理器。多個資訊頭條目合併成一個資訊頭列表,跟隨 http 請求一併提交到服務端。

注意:敲黑板,敲腦殼!!!

(1)當有多個資訊頭管理器,且不同的管理器內有名稱相同的資訊頭條目存在時,順序靠前的管理器的資訊頭條目會覆蓋後面的;

(2)當只有一個資訊頭管理器,但管理器內有名稱相同的資訊頭條目時,會同時生效;

1、我們先來看看這個 HTTP Header Manager 長得是啥樣子,如下圖所示:

2、引數詳解及說明,如下表所示:

引數 描述 是否必填
Name 請求頭的名稱,比如 Content-Type
Value 請求頭的值,比如 application/json

3、常用請求頭,這些一般可以抓包和在瀏覽器中查到,如下表所示:

主要有兩個功能:

一個功能是:像 web 瀏覽器一樣儲存和傳送 Cookie。如果有一個 HTTP 請求和相應裡包含 Cookie,Cookie 管理器會自動儲存 Cookie,那麼接下來針對特定 web 站點的所有請求中使用該 Cookie。可在結果樹中檢視。

接收到的 Cookie 可以被儲存為變數,須定義屬性"CookieManager.save.cookie=true"。另外,在被儲存前 Cookie 名稱會加上字首 “COOKIE_",要恢復早前處理方式,則定義屬性” CookieManager.name.prefix="(一個或多個空格)。

如果啟動了該功能,那麼名稱為 TEST 的 Cookie,可以透過 ${COOKIE_TEST}加以引用。手動為 Cookie 管理器新增一個 Cookie(為所有 JMeter 執行緒所共享)。

1、我們先來看看這個 HTTP Cookie Manager 長得是啥樣子,如下圖所示:

2、引數詳細說明,如下表所示:

引數 描述 是否必填
Name 樹中顯示此元件描述的名稱
Comments 註釋
Clear cookie each Iteration 每次執行緒組執行前,都會清楚 cookie,但是如果是手動新增的 cookie,不會被清除
Cookie Policy 選擇 Cookie 的管理策略,建議選擇相容性,相容性強
User Define cookie 使用者自定義 cookie

2.4HTTP Cache Manager

  被用來為其作用域內的 HTTP 請求提供快取功能,如果 “Use Cache-Control/Expires header When ..."選中,那麼會根據當前時間來選擇,如果請求是” GET",而時間指向未來,那麼取樣器就會立即返回,而無須從遠端伺服器請求 URL,這樣是為了模擬瀏覽器的操作,請注意 Cache-Control 頭必須是 “pulic” 的,並且只有"max-age"終結選項會被處理,如果請求文件自從其被快取以來沒有發生任何改變,那麼響應包體就會為空。

1、我們先來看看這個 HTTP Cache Manager 長得是啥樣子,如下圖所示:

2、引數詳細說明,如下表所示:

引數 描述 是否必填
Name 樹中顯示此元件的描述性名稱
Comments 註釋
Clear Cache each iteration 如果選擇此選項,則線上程開始時清除快取。
Use Cache 如果選擇此選項,則線上程開始時使用快取。
Max Number 如果選擇此選項,則線上程開始時最大快取。

2.5HTTP Request Defaults

在實際測試計劃中,我們經常會碰到 Http Sampler 請求有較多的引數與配置會重複,每一個 Http Sampler 都單獨設定的話比較浪費時間和精力,為了節省工作量,JMeter 提供了 HTTP Request Defaults 元件,用來把這些重複的部分封裝起來,一次設定多次使用。可以設定一些預設值,假設有 10 個請求,訪問域名和埠都是一樣的,那 HTTP 請求中就不再需要單獨配置了,比較方便(增加指令碼的移植性)。

這個元件可以設定 HTTP 請求控制器使用的預設值。例如,圖中【伺服器名稱或 IP】專案內填入了【example.com】,後面的 HTTP 請求如果 IP 也是 example.com 的話,那麼只要將【伺服器名稱或 IP】留空,那麼這個欄位將自動繼承 HTTP 請求預設值中的值。其他諸如【協議】、【埠號】、【路徑】等同此。

1、我們先來看看這個 HTTP Request Defaults 長得是啥樣子,如下圖所示:

2、引數詳細說明,如下表所示:

引數 描述 是否必填
Name 用作標識一個取樣器,建議使用一個見名知義的名稱
Comments 註釋
Protocol 協議,向目標伺服器傳送 HTTP 請求時的協議,可以是 http 或者是 Https
IP HTTP 請求傳送的目標伺服器名稱或者 IP 地址
Port Number 目標伺服器埠
Path 目標 URL 路徑(不包括伺服器地址和埠)
Content encdoing 內容的編碼方式
Parameter 引數
body data 引數

2.6Counter

計數器,顧名思義就是在測試執行過程中會記錄迭代次數。可以線上程組任何位置建立,允許使用者配置起點、最大值和增量。配置後,計數器將從起點迴圈到最大值,然後重新開始,直到執行緒結束。允許使用者建立一個計數器,可線上程組中任何地方被引用。

1、我們先來看看這個 Counter 長得是啥樣子,如下圖所示:

2、引數詳細說明,如下表所示:

引數 描述 是否必填
Name 控制器名稱,可以隨意設定
Comments 註釋,可以隨意設定
Starting value 啟動,記錄數量起始值
Increment 遞增,記錄迭代次數步長,1 後是 2,步長就是 1
Maximum value 記錄的最大值
Number format 計算器格式,可以是數字,例如 000000(6 位長度,000,000(6 位長度,3 位間隔開);字元加數字,例如 CUST_000000(字元加 6 位數字 )
Exported Variable Name 引用變數名稱,記數器記錄的值可以存入的此引用名(變數),可供其他元件呼叫
Track counter independently for each user 與每位使用者獨立的跟蹤計數器,每個執行緒都有自己的計數器,相互不干擾
Reset counter on each Thread Group Iteration 每次迭代復原計數器

2.7DNS Cache Manager

1、我們先來看看這個 DNS Cache Manager 長得是啥樣子,如下圖所示:

2、引數詳細說明,如下表所示:

引數 描述 是否必填
Name 樹中顯示此元件的描述性名稱
Comments 註釋
Clear cache each iter 清除每個迭代的快取,如果選擇此選項,則每次啟動新迭代時,都會清除每個執行緒的 DNS 快取。
Use System DNS resolver 使用系統 DNS 解析器;將使用系統 DNS 解析器。為了正確工作,請編輯 $ JAVA_HOME / jre / lib / security / java.security 並新增 networkaddress.cache.ttl = 0
Use custom DNS resolver 使用自定義 DNS 解析器;將使用自定義 DNS 解析器(來自 dnsjava 庫)。

2.8FTP Request Defaults

被用於設定 FTP 請求的預設值

1、我們先來看看這個 FTP Request Defaults 長得是啥樣子,如下圖所示:

2.9HTTP Authorization Manager

HTTP 認證是一種安全機制,在客戶端、瀏覽器或者程式向伺服器發起請求時,需要提供使用者名稱和密碼且驗證透過(拿到憑證)才能繼續發起互動。

1、我們先來看看這個 HTTP Authorization Manager 長得是啥樣子,如下圖所示:

2.10JDBC Connection Configuration

1、我們先來看看這個 JDBC Connection COnfiguration 長得是啥樣子,如下圖所示:

2、關於 JDBC Connection COnfiguration 引數詳細說明,可以參考宏哥的另一篇文章是非常詳細的:傳送門

2.11Java Request Defaults

1、我們先來看看這個 Java Request Defaults 長得是啥樣子,如下圖所示:

2.12Keystore Configuration

1、我們先來看看這個 Keystore Configuration 長得是啥樣子,如下圖所示:

2、引數詳細說明,如下表所示:

引數 描述 是否必填
Name 樹中顯示此元件的描述性名稱。可以預設
Comments 註釋
Preload 預載,是否預載入秘鑰庫,設定為 true 通常是最佳選擇
Variable name holding certificate alias 變數名稱,將包含用於客戶端證書身份驗證的別名。例如,將從 CSV 資料集中填充變數值。在螢幕截圖中,“ certificat_ssl” 也將是 CSV 資料集中的變數。
Alias Start index 從 0 開始在 Keystore 中使用的第一個鍵的索引。
Alias End index 基於 0 的金鑰庫中要使用的最後一個金鑰的索引。使用 “變數名稱持有證書別名” 時,請確保其足夠大,以便在啟動時載入所有金鑰。

2.13LDAP Extended Request Defaults

1、我們先來看看這個 LDAP Extended Request Defaults 長得是啥樣子,如下圖所示:

2.14LDAP Request Defaults

1、我們先來看看這個 LDAP Request Defaults 長得是啥樣子,如下圖所示:

2.15Login Config Element

1、我們先來看看這個 Login Config Element 長得是啥樣子,如下圖所示:

2.16Random Variable

1、我們先來看看這個 Random Variable 長得是啥樣子,如下圖所示:

2、引數詳細說明,如下表所示:

引數 描述 是否必填
Name 樹中顯示的此元件的描述性名稱。
Comments 註釋
Variable Name 變數名,儲存隨機字串的變數的名稱。
Output Format 格式化字串,要使用的 java.text.DecimalFormat 格式字串。例如,“ 000” 將生成至少 3 位數字,或者 “ USER_000” 將生成 USER_nnn 形式的輸出。如果未指定,則預設為使用 Long.toString()生成數字。
Minimum Value 最小值;生成的隨機數的最小值(長整數)。
Maximum Value 最大值;生成的隨機數的最大值(長整數)。
Seed for Random function 隨機種子,隨機數生成器的種子。預設值為當前時間,以毫秒為單位。如果在 “將每個執行緒” 設定為 true 的情況下使用相同的種子值,則與 “隨機” 類一樣,您將為 earch 執行緒獲得相同的值
Per Thread(User)? 每個執行緒,如果為 False,則線上程組中的所有執行緒之間共享生成器。如果為 True,則每個執行緒都有自己的隨機生成器。

2.17Simple Config Element

1、我們先來看看這個 Simple Config Element 長得是啥樣子,如下圖所示:

2、引數詳細說明,如下表所示:

引數 描述 是否必填
Name 樹中顯示此元件的描述名稱
Comments 註釋
Name 引數名稱
Value 引數值

2.18TCP Sampler Config

TCP 取樣器配置為 TCP 取樣器提供預設資料

1、我們先來看看這個 TCP Sampler Config 長得是啥樣子,如下圖所示:

2、引數詳細說明,如下表所示:

引數 描述 是否必填
Name 樹中顯示此元件的描述性名稱
Comments 註釋
TCPClient classname TCPClient 類的名稱,預設屬性 tcp.handler,使 TCPClientImpl 失敗
Sever Name or IP TCP 伺服器的名稱或者 IP
Port Number 使用的埠
Re-use connection 重用連線,如果選擇,則連線保持開啟狀態,否則,在讀取資料後將其關閉
Close connection 關閉連線,如果選擇此項,則在執行取樣器後將連線關閉
Set NoDelay 設定節點佈局,應該設定 nodelay
SO_LINGER 建立套接字時,以指定的延遲時間(以秒為單位)啟用/停用 SO_LINGER。如果將 “SO_LINGER"值設定為 0,則則可以防止大量套接字處於 TIME_WAT 的狀態
End of line byte value 判斷行結束的 byte 值,如果你指定的值大於 127 或者小於-128,則會跳過 EOL 檢測。比如伺服器端返回的字串都是以回車符結尾,那麼我們可以將該選項設定成 10。
Text to send 文字傳送,要傳送的文字
Connect 連線超時(毫秒。0 停用)
Response 響應超時(毫秒。0 停用)

2.19User Defined Variables

如果您有多個執行緒組,請確保對不同的值使用不同的名稱,因為 UDV 線上程組之間共享。同樣,這些變數在處理完元素之後才可用,因此您不能引用在同一元素中定義的變數。您可以引用在早期 UDV 或測試計劃中定義的變數。

1、我們先來看看這個 User Defined Variable 長得是啥樣子,如下圖所示:

2、引數詳細說明,如下表所示:

引數 描述 是否必填
Name 樹中顯示此元件描述的名稱
Comments 註釋
User Define Variables 使用者定義的變數。變數名稱/值對。您需要在 $ {...}結構的方括號內放置 “名稱”(Name)列下的字串,以便以後使用變數。然後,整個 $ {...}將由 “值” 列中的字串替換

3.小結

好了,今天關於 JMeter 的配置元件就分享到這裡,其中有些常用的要熟練掌握。

相關文章