天天看點

JMeter學習筆記--JMeter監聽器

監聽器(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