監聽器(Listeners)是一種展示采樣結果的測試元件,采樣結果可以通過樹、表格、圖片加以展示,或者簡單地寫入某個結果文件之中。
注:不同的監聽器通過不同的方式展示服務器響應信息,但它們都將同樣的原始數據記錄到某個輸出文件中(在某個監聽器中指定一個輸出文件)
”Configure“ 按鈕可以被用來配置哪些數據會被寫入到結果文件之中,以及結果文件的格式CSV或者XML。與XML文件相比,csv文件占用的磁盤空間要小很多,當采樣次數較多時,建議使用csv格式。另外測試人員可以使用簡單控制器將一系列采樣器組合起來,並為簡單控制器添加一個監聽器,多個采樣器可使用相同的結果文件,前提是它們有相同的配置。
- 監聽器默認配置:監聽器默認保存哪些數據域,可以在jmeter.properties(或者user.properties)文件中通過屬性定義。這些屬性會作為監聽器配置對話框的默認設置,還會影響命令行-l標識指定的日志文件(通常針對非GUI模式)。如在jmeter.properties中找到如下行:jmeter.save.saveservice.output_format= 如何保存采樣信息是可以配置的,要獲取最全面的信息,請選擇“XML”格式,並在測試計划選中“Function Test Mode"復選框,如果復選框沒有選中,那么默認保存的數據中會包含時間戳、數據類型、線程名、標簽、相應時長、消息、編碼以及成功標志。
- sample_variables屬性用來定義一些補充JMeter變量,這些變量的值會和采樣結果一起被保存到JTL文件中。這些變量會作為補充列寫入到CVS文件中,或作為補充屬性寫入到XML文件中。
- 配置采樣結果的保存格式:使用配置對話框來設置將哪些數據保存到結果文件中(JTL)以CSV結尾的選項只影響CSV格式的結果文件;以XML結尾的選項只影響XML格式的結果文件。目前CSV格式的結果文件,不能記錄包含換行符的數據。注意:cookies、method和查詢語句會作為”Sampler Data“的一部分加以保存。
- 非GUI模式運行測試:當JMeter以非GUI模式運行時,可以使用-l(這是字幕,非數字1)標簽為測試創建一個監聽器(位於測試樹的最頂層)。該監聽器是測試計划新增的監聽器,並不影響測試計划中原有的監聽器。可以通過jmeter.properties文件中定義的屬性來對該監聽器進行配置。示例如下:jmeter -n -t testplan.jmx -l testplan_01.jtl -j testplan_01.log,需要注意,JMeter日志消息默認會寫到jmeter.log中,每次測試運行都會重新創建該文件,若需要保存每次運行的日志文件,就需要用到-j選項,JMeter2.3.1及以后版本,支持在日志文件名中使用變量。如果文件名中包含成對的單引號,那么文件名就會以Simple Date Format格式來處理,而且文件名會攜帶上當前時間。例如:log_file='jmeter_'yyyyMMddHHmmss'.tmp',它能為每個日志文件生成唯一的文件名。
- 監聽器資源占用:如果監聽的采樣器數目很多,那么監聽器會占用大量內存。目前大多數監聽器會保存每一次采樣的數據備份,如:
- Simple Data Writer
- BeanShell/BSF Listener
- Mailer Visualizer
- Monitor Results
- Sunmary Report
而下面的這些采樣器不再保存所有單次采用的副本,因為采用周期相同的采樣會被聚合起來,如此一來,監聽器需要的內存會減少,特別是在大多數采用只耗費一秒或兩秒的情況下
-
- Aggregate Report
- Aggregate Graph
- Distribution Graph
要減少監聽器占用的內存,請選擇Simple Data Writer,並使用CSV格式保存結果文件
- CSV記錄格式:依賴於配置監聽器過程中選擇的數據域,只有指定的數據會被記錄到結果文件之中,列的順序在結果文件中是固定的。
-
- timeStamp - in milliseconds since 1/1/1970
- elapsed - in milliseconds
- label - sampler label
- responseCode -e.g. 200,404
- responseMessage - e.g. OK
- threadName
- dataType -e.g. text
- success - true or false
- failureMessage - if any
- bytes - number of bytes in the sample
- grpThreads-number of active threads in this thread group
- allTreads- total number of active threads in all groups
- URL
- Filename - if Save Response to File was used
- latency - time to first response
- encoding
- SampleCount - number of samples(1,unless multiple samples are attregated)
- ErrorCount - number of errors (0 or 1,unless multiple samples are attregated)
- Hostname - where the sample was generated
- IdleTime - number of milliseconds of "Idle" time (normally 0)
- variables --if specified
- XML記錄格式:采用節點的名稱可以是“sample"或者”httpSample"
- 采樣屬性:
-
- by - Bytes
- de - Data encoding
- dt - Data type
- ec - Error count(0 or 1 , unless mulitple samples are aggregated)
- hn - Hostname where the sample was generated
- it - Idle Time
- lb -Label
- lt - Latency=time to initial response(milliseconds) -not all samplers support this
- na - Number of active threads for all thread groups
- ng- Number of active threads in this group
- rc -Response Code(e.g. 200)
- rm - Response Message(e.g. OK)
- s - Success flag(true/false)
- sc- Sample count
- t - Elapsed time(milliseconds)
- tn - Thread Name
- ts -timeStamp
- varname -Value of the named variable
- 保存響應數據:使用Save_Responses_to_a_file 它會為作用域內的每個采樣器產生一個結果文件,文件名同采樣器名稱。
- 加載(讀取)響應數據
- 保存監聽器GUI的數據:JMeter可以將任何監聽器保存為一個PNG文件,用戶可以在測試樹種選擇某個監聽器后,右擊選擇“Save Screen As Image