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、參數詳細說明,如下表所示:
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的配置元件就分享到這里,其中有些常用的要熟練掌握。
您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波 推薦 不要忘記哦!!!
別忘了點 推薦 留下您來過的痕跡