JMeter学习笔记--JMeter监听器

时间:2021-01-26 11:56:22

监听器(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