1. 程式人生 > >Jmeter(八) - 從入門到精通 - JMeter配置元件(詳解教程)

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

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、常用請求頭,這些一般可以抓包和在瀏覽器中查到,如下表所示:

2.3HTTP Cookie Manager

主要有兩個功能:

一個功能是:像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的配置元件就分享到這裡,其中有些常用的要熟練掌握。

 

您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波  推薦  不要忘記哦!!!

別忘了點 推薦 留下您來過的痕跡