我都知道.Properties
文件一般都為配置文件。我們可以通過在.Properties
文件中定義的各類屬性來實現一些特定的配置。例如:語言類型的問題、cookie的問題、輸出日志類型的問題、定義日志級別的問題、編碼問題等等。
在JMeter的bin
目錄中,存在多個配置文件(5.0版本):
jmeter.properties
reportgenerator.properties
saveservice.properties
system.properties
upgrade.properties
user.properties
其中最重要的配置文件是jmeter.properties
,jmete.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模式運行時,窗口主要由三部分構成:功能區
、視圖區
、內容區
。
如下圖:
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+0
至Ctrl+9
。 - 在macOS系統上可以使用
Command+0
至Command+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
配置文件內容如下:
意思表示:JMeter自動加載其他配置文件中的屬性。