『動善時』JMeter基礎 — 7、jmeter.properties檔案常用配置

繁華似錦Fighting發表於2021-05-08

我都知道.Properties檔案一般都為配置檔案。我們可以通過在.Properties檔案中定義的各類屬性來實現一些特定的配置。例如:語言型別的問題、cookie的問題、輸出日誌型別的問題、定義日誌級別的問題、編碼問題等等。

在JMeter的bin目錄中,存在多個配置檔案(5.0版本):

  • jmeter.properties
  • reportgenerator.properties
  • saveservice.properties
  • system.properties
  • upgrade.properties
  • user.properties

其中最重要的配置檔案是jmeter.propertiesjmete.properties是JMeter的核心配置項檔案,是JMeter-GUI執行的配置說明檔案。

JMeter配置檔案官方文件https://jmeter.apache.org/usermanual/properties_reference.html

下面對其常用的一些配置項,進行設定與說明。

1、預設語言設定

# language=en
language=zh_CN #簡體中文

功能:設定JMeter-GUI介面的顯示語言。

說明:若沒有設定,則使用JVM(Java虛擬機器)設定的Locale語言。

擴充:在Linux中設定JVM的Locale語言:

# 檢視locale
[root@localhost ~]# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

# 配置,內容編輯:LANG="zh_CN.UTF-8"
[root@localhost ~]# vi /etc/sysconfig/i18n
[root@localhost ~]# cat !$
cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"

注意:此配置項只能在jmeter.properties檔案中設定才有效。

2、配置預設編碼格式

# sampleresult.default.encoding=ISO-8859-1
sampleresult.default.encoding=UTF-8

JMeter-GUI預設編碼格式為ISO-8859-1,防止中文亂碼可以改成UTF-8編碼格式。

3、GUI圖示放大比例設定

JMeter-GUI介面佈局的設定,當JMeter以GUI模式執行時,視窗主要由三部分構成:功能區檢視區內容區

如下圖:
image

GUI圖示放大比例設定:

jmeter.hidpi.mode=true          #開啟視網膜模式
jmeter.hidpi.scale.factor=1.2   #將圖示放大1.2倍

4、功能區工具欄圖示大小設定

# 工具欄圖示預設size: 22x22
# 可用size選項: 22x22, 32x32, 48x48
jmeter.toolbar.icons.size=32x32

5、檢視區目錄樹圖示大小設定

# 目錄樹圖示預設size: 19x19
# 可用size選項: 19x19, 24x24, 32x32, 48x48
jmeter.tree.icons.size=24x24

6、內容區編輯字型設定

調整JMeter內容區的編輯字型:

# 預設Hack字型太難看,使用經典的consolas
# 這兩個配置項必須同時設定才有效
jsyntaxtextarea.font.family=consolas 
jsyntaxtextarea.font.size=18  

7、新增JMeter元素快捷鍵設定

jmeter.properties配置檔案中,可以新增JMeter-GUI使用時的快捷鍵,最多支援10個。

提示:

  • 在Windows系統上可以使用Ctrl+0Ctrl+9
  • 在macOS系統上可以使用Command+0Command+9
gui.quick_0=ThreadGroupGui     #新增執行緒組
gui.quick_1=HttpTestSampleGui  #新增HTTP取樣器
gui.quick_2=RegexExtractorGui  #新增正規表示式提取器
gui.quick_3=AssertionGui       #新增響應斷言
gui.quick_4=ConstantTimerGui   #新增常量定時器
gui.quick_5=TestActionGui      #新增測試活動
gui.quick_6=JSR223PostProcessor  #新增JSR223 後置處理程式
gui.quick_7=JSR223PreProcessor   #新增JSR223 預處理程式
gui.quick_8=DebugSampler         #新增除錯取樣器
gui.quick_9=ViewResultsFullVisualizer #新增察看結果樹

8、捕捉cookie

將Cookie儲存為變數:

# CookieManager.save.cookies=false  # 預設
CookieManager.save.cookies=true  # 將cookie儲存為變數

9、HTTP Request Post Content-Type設定

在使用JMeter-GUI傳送Post請求的時候,若不自己手動新增Content-Type屬性內容,預設則不會新增Content-type的相關資訊。

# Should JMeter add to POST request content-type header if missing:
# Content-Type: application/x-www-form-urlencoded
# Was true before version 5.0
post_add_content_type_if_missing=true

說明:

此配置項在JMeter5.0以前預設值為True,在5.0以及之後的版本預設值為False。

故在5.0以後的版本中傳送POST請求時,將引數放在body data(訊息體資料)中,且沒有設定Content-Type時,預設會將Content-Type的值設定為text/plain,而不是application/x-www-form-urlencoded

通過檢視JMeter官方文件和自己的實操,我的理解是

post_add_content_type_if_missing=true配置項,在POST請求時,如果Content-Type屬性缺失,會自動補全Content-Type: application/x-www-form-urlencoded

但是經過我的操作,發現配置了post_add_content_type_if_missing=true,在body data(訊息體資料)填寫了Json資料,傳送請求之後,Content-Type的值依然為text/plain,不知道該配置項是何用處。

所以在之後的實踐操作時,如果在body data(訊息體資料)中填寫純文字資料時,還是要依照介面文件中的要求,手動新增一個HTTP資訊頭管理器(配置元件),裡面手動配置對應的Content-Type值,這樣操作更為穩妥。

如果文件中沒有標註,可以按常見的媒體格式型別填寫,如下:

  • text/html : HTML格式。
  • text/plain :純文字格式。
  • text/xml : XML格式。
  • application/json: JSON資料格式。
  • image/jpeg :jpg圖片格式。

(還有很多,可以自行擴充套件。)

10、配置遠端主機

我們需要找到remote_hosts屬性,然後按照負載機ip地址:埠號的形式進行配置。

可以配置多個遠端主機,中間用,分隔開,注意全部為英文符號。

remote_hosts=127.0.0.1:8999

11、日誌級別設定

從JMeter3.2開始,日誌級別不再在jmeter.properties中設定,而是通過log4j2.xml配置檔案中,設定日誌級別。

  <Root level="info">
    <AppenderRef ref="jmeter-log" />
    <AppenderRef ref="gui-log-event" />
  </Root>

level的值改為對應的日誌級別,預設為info,也可以在GUI介面臨時設定日誌級別。

log4j2定義了8個級別的日誌,優先順序從高到低依次為:

OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL

  • OFF:用於關閉所有日誌記錄。
  • FATAL:指出每個嚴重的錯誤事件將會導致應用程式的退出。
  • ERROR:指出雖然發生錯誤事件,但仍然不影響系統的繼續執行。
  • WARN:表明會出現潛在錯誤的情形。
  • INFO:訊息在粗粒度級別上突出強調應用程式的執行過程。
  • DEBUG:指出細粒度資訊事件對除錯應用程式是非常有幫助的。
  • TRACE:追蹤日誌。
  • ALL:用於開啟所有日誌記錄。

12、總結

官方建議:將需要修改的屬性值,複製貼上到同目錄下的user.properties 配置檔案中,而不要直接在jmeter.properties配置檔案中編輯。

好處:當JMeter升級時,可以避免修改的選項需要重新應用。

jmeter.properties配置檔案內容如下:
image

意思表示:JMeter自動載入其他配置檔案中的屬性。

參考:https://zhuanlan.zhihu.com/p/92582351

相關文章