六:Listener
參考:http://jmeter.apache.org/usermanual/listeners.html
Listener是用來展示Sampler結果的元件。
結果可以被展示在樹、表格、圖表或者簡單寫入到一個log文件。
看所有Sampler的具體內容,可使用的Listeners:"View Results Tree" 或者 "View Results in table"。
如果Sample很多的話,Listener可能會用掉很多內存。如果想最小化使用的內存量,可以使用 Simple Data Writer,並且使用CSV格式。
輸出到文件
不同的Listener以不同的方式來展示響應信息。然而,不同的listener寫入到輸出文件的數據是相同的。
1. 輸出文件路徑
Filename:可以輸入相對路徑,也可以輸入絕對路徑。
相對路徑是相對於當前工作路徑,一般默認是“Jmeter安裝路徑\bin\”。比如,直接在Filename中輸入log,則“Jmeter安裝路徑\bin\”下會出現一個文件為log。
相對路徑也可以是相對於當前測試計劃的路徑。如果filename以“~/”開始,說明是相對於JMX文件位置的路徑。比如輸入”~/log“,當前測試計劃路徑為“E:\TestPlan3.jmx”,則輸出文件路徑為“E:\log”。
如果想使用除了“~/”的前綴,可以在jmeter.properties中定義。比如下面定義為“#/”,則filename輸入“#/log”即可。
# Prefix used to identify filenames that are relative to the current base #jmeter.save.saveservice.base_prefix=~/ jmeter.save.saveservice.base_prefix=#/
2. 輸出文件類型
在jmeter.properties中可以直接定義輸出的文件默認類型。
# legitimate values: xml, csv, db. Only xml and csv are currently supported. #jmeter.save.saveservice.output_format=csv
也可以點擊 Configure按鈕,直接勾選中“Save As XML”保存文件為XML類型。
CSV文件比XML文件小很多,所以如果產生很多sample的話,建議使用CSV。
如果想輸出最多的信息,我們需要選擇保存文件為xml,並且在Test Plan中勾上 “Functional Test Mode”。
“Functional Test Mode”不勾上的話,默認存儲:time stamp, the data type, the thread name, the label, the response time, message, code, a success indicator。
“Functional Test Mode”勾上的話,所有的信息,包括整個響應數據都會被存儲下來。參見XML中 responseData。
3. 輸出文件的內容
點擊Configure,可以配置需要輸出的內容。
帶有(CSV)後綴的項,只能應用於CSV格式的文件。
帶有(XML)後綴的項,只能應用於XML格式的文件。
Sample Result Save Configuration默認選中項參見jmeter.properties的配置。
查看文件
1. CSV格式的文件
CSV顯示的列取決於Configure中選中的項。顯示順序如下:
timeStamp - 以milliseconds 為單位,顯示自從 1/1/1970以來的時間段 elapsed - 以 milliseconds為單位 label - sampler 標記,一般就是Sampler 名 responseCode - 比如 200, 404 responseMessage - 比如 OK threadName dataType - 比如 text success - true 或者 false failureMessage - 如果有的話就顯示 bytes - sample的字節數 sentBytes - sample發送的字節數 grpThreads - 該 thread group active的線程數 allThreads - 所有組的所有active的線程數 URL Filename - 使用 Save Response to File 時,文件名 latency - 從第一次 response開始的時間 connect - 從建立連接開始的時間 encoding SampleCount - sample 數 (一般是1 ,除非合計了多個sample) ErrorCount - errors數 (一般是0或1,除非合計了多個sample) Hostname - 發送 sample的機器名 IdleTime - 以 milliseconds為單位顯示 ‘Idle‘ 時間(一般是0) Variables- 如果定義變量的話,這裏就顯示變量
2. XML格式的文件
示例如下:
<?xml version="1.0" encoding="UTF-8"?> <testResults version="1.2"> ………… <sample t="0" lt="0" ts="1144372616082" s="true" lb="Example Sampler" rc="200" rm="OK" tn="Listen 1-1" dt="text" de="ISO-8859-1" by="10"> <responseHeader class="java.lang.String"></responseHeader> <requestHeader class="java.lang.String"></requestHeader> <responseData class="java.lang.String">Listen 1-1</responseData> <responseFile class="java.lang.String">Mixed2.unknown</responseFile> <samplerData class="java.lang.String">ssssss</samplerData> </sample> </testResults>
每個屬性的含義如下:
保存Response數據
XML格式的輸出文件可以保存Response數據。勾上“Save Response Data(XML)”即可。
然而,這種方式會造成日誌文件很大,而且文件必須被編碼。同時,這種方式會造成圖片不能被保存,只有TEXT格式的sample response可以被保存成功。
想要解決這個問題,我們可以使用 Listener–> Save Responses to a file。使用這個監聽之後,系統會對監聽範圍內的每次請求保存一個html文件。默認保存在“jmeter安裝路徑/bin/”下。
直接打開已存在的結果文件
如果之前測試已經存在一個CSV或者XML文件,可以直接在Listener中打開。
任選一個Listener,點擊filename後的Browse按鈕,找到要打開的文件,點擊打開即可。
需要註意的是,在加載新的文件時,jmeter並不會清空任何當前數據,而是進行合並。所以如果想清空之前的數據,必須手動清空。
六:Listener