前言:
嗨咯铁汁们,很久不见,我还是你们的老伙计测试君,性能测试的系列马上就要出完了,废话少说直接开始正题
【文章的末尾给大家准备了大量的福利】
Filename:选择数据源文件路径
File encoding:选择编码格式,一般选择UTF-8 Delimeter:分隔符,默认即可 Variable names:给变量命名 Fist line is CSV header:如果第一行是表头,则勾选下 其他没介绍到的默认即可,不用关心
下面进行实际使用 (1)信息配置:
(2)执行结果:
5.8后置处理器(Post Processors)
用于对sampler发出请求后得到的服务器响应进行处理,一般用来提取响应中的特定数据(类似LoadRunner中的关联)。
例如:我们在做接口测试的时候,难免会遇到一个接口的请求参数是另一个接口的响应结果,这个时候就需要用到后置处理器来处理我们的请求参数,如系统登录成功后我们要回去sessionid,在后面业务操作中服务器会验证这个sessionid,获取sessionid的这个过程,就是用后置处理器中的正则表达式提取器来完成的
后置处理器常用于处理响应数据,提取某个值
路径:线程组(用户)->添加->后置处理器();我们可以清楚地看到JMeter5中共有11个后置处理器
Jeter自带的后置处理器,如下图所示。
5.8.1CSS/JQuery提取器
CSS/JQuery提取器,是通过css选择器定位页面元素并读取数据 。
1、我们先来看看这个 CSS/JQuery提取器 长得是啥样子,路径:线程组 > 添加 > 后置处理器 > CSS/JQuery提取器,如下图所示:
关键参数如下说明:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
Apply to:
Main sample only 仅适用于主要样本
Sub-samples only 仅适用于子样本
Main sample and sub-samples 主要样本和子样本
JMeter Variable Name to use 用作Jmeter变量名称
Name of created variable:引用名称 也就是jmeter里面的变量
CSS Selector expression:CSS选择器表达式 CSS表达式
Attribute:属性 要提取的元素的属性。示例:<input type="checkbox" name="colors" value="blue" id="blue">蓝色<br>,那么这里的属性就是value,因为我们要提取blue
Match No.(0 for Random):匹配数字 0随机一个,否则索引(从1开始)
Default Value: 缺省值 在无法提取内容的情况下放入变量的值。
CSS选择器或JQuery选择器是Jmeter支持的两种语法,下面对其两种语法进行简单介绍
1、新建测试计划,线程组下添加访问 博客园主页的取样器,如下图所示:
2、然后再添加CSS/JQuery提取器,如下图所示:
其中CSS选择器表达式就按如下图的方法获取,如下图所示:
3、接着再添加一个取样器 用来确认是否提取到我们要提取的东西,提取出来的值用来传参,如下图所示:
4、配置好以后,点击“保存”,运行JMeter,查看表格结果(可以看到提取的路径就是我们要提取博客园的新闻路径),如下图所示:
实例2
1、新建测试计划,线程组下添加随机变量和访问 JMeter主页的取样器,如下图所示:
线程组
随机变量
取样器
然后再添加CSS/JQuery提取器,如下图所示:
接着再添加一个取样器 用来确认是否提取到我们要提取的东西,提取出来的值用来传参,如下图所示:
配置好以后,点击“保存”,运行JMeter,查看表格结果(可以看到提取的路径就是我们要提取博客园的新闻路径),如下图所示:
5.8.2 json提取器
JSON 提取器可以使用JSON-PATH语法从JSON格式的响应中提取数据。
该后处理器与正则表达式提取器非常相似。必须将其放置为HTTP Sampler或具有JSON响应的任何其他取样器的子级,可以以非常简单的方式提取JSON文本内容。
1、我们先来看看这个JSON提取器长得是啥样子,路径:线程组 > 添加 > 后置处理器 > JSON提取器,如下图所示:
关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
Update Once Per Iteration:标识是否每轮迭代更新一次元素;
Apply to(应用范围): Main sample and sub-samples:应用于主sample及子sample
Main sample only:默认的是这个,应用于主sample
Sub-samples only:应用于子sample
JMeter Variable Name to use:应用于变量命名的内容
Name of created Variable:保存的变量名,后面使用${Variable names}引用
JSON Path Expression:json表达式
Match No.(0 or Random):匹配的值是哪一个,默认不填写是获取符合条件的第一个,这个与正则表达式的类似(0为随机、N为获取第N个、-1获取所有)
Compute comcatemation var(suffix_ALL):如果发现许多结果,插件将使用“,”分隔符将它们连接起来,并将其存储在名为<variable name>_ALL的var中
Default Values:当没有获取到参数值时的默认值
JSON path expression 语法
实例
新建测试计划,线程组下添加天气预报接口取样器,如下图所示:
然后再在取样器下添加JSON提取器,如下图所示:
紧接着再添加一个取样器 度娘,用来获取提取的status,提取出来的值用来传参,如下图所示:
配置好以后,点击“保存”,运行JMeter,查看表格结果,如下图所示:
度娘请求结果:
5.8.3JSR223 后置处理程序
我们先来看看这个JSR223 后置处理程序长得是啥样子,路径:线程组 > 添加 > 后置处理器 > JSR223 后置处理程序,如下图所示:
关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
parameter:要传递到脚本文件或脚本的参数列表;
file name:用于执行的脚本文件,若没有脚本文件,将执行脚本;
Script:传递给JSR223执行的脚本;如果提供了脚本文件,则执行脚本文件,否则执行脚本。
5.8.4调试后置处理程序
调试后置处理程序,使用正则表达式为从另一个HTTP请求中提取的HTTP参数指定动态值,配合regular expression extractor使用。暂时没找到好的例子,后面想到补充。。
1、我们先来看看这个调试后置处理程序长得是啥样子,路径:线程组 > 添加 > 后置处理器 > 调试后置处理程序,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
Regular Expression Reference Name:调用的正则表达式提取器中的引用名称;
Parameter names regexp group number:用于提取参数名称的正则表达式的组编号;
Parameter values regex group number:用于提取参数值的正则表达式的组编号。
5.8.5JDBC 后置处理程序
JDBC 后置处理程序,实际上JIBC PostProcessor就是一个JDBC Request,它与JDBC Request功能相同,都可以执行SQL语句。在测试的过程中可能会遇到这样的测试场景:我们用JDBC Request修改了一些数据,当测试完成后,我们希望还原到原先状态,此时我们可以用JDBC PostProcessor来完成,当然用JDBC Request也可以完成。具体的JDBC PostProcessor的使用参考宏哥关于JDBC Request的这篇文章:Jmeter(七) - 从入门到精通 - 建立数据库测试计划实战<MySQL数据库>(详解教程)。
我们先来看看这个JDBC 后置处理程序长得是啥样子,路径:线程组 > 添加 > 后置处理器 > JDBC 后置处理程序,如下图所示:
5.8.6结果状态处理器
结果状态处理器,实际上在测试的时候我们也经常会遇到这样的测试场景:在一些测试用例失败之后我们需要进行一些操作,例如停止测试,这里可以使用结果状态处理器。
1、我们先来看看这个结果状态处理器长得是啥样子,路径:线程组 > 添加 > 后置处理器 > 结果状态处理器,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
Language:语言,开发脚本选择的语言,使用的JSR223语言,可根据需要选择;
Parameters:参数,传递给脚本的参数;
File Name:文件名,本地开发的脚本文件(会覆盖在JMeter里编写的脚本);
Script compilation caching:存储编译的脚本,默认勾选;
Script:要运行脚本。编写脚本的区域。
5.8.7XPath提取器
Xpath提取器,如果请求返回的消息为xml或html格式的,可以用XPath提取器来提取需要的数据。
1、我们先来看看这个 Xpath提取器长得是啥样子,路径:线程组 > 添加 > 后置处理器 > Xpath提取器,如下图所示:
2、关键参数说明如下:
APPly to:作用范围(返回内容的断言范围) Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器 Main sample only:仅作用于父节点的取样器 Sub-samples only:仅作用于子节点的取样器 JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)
XML Parsing Options:要解析的XML参数 UseTidy:当需要处理的页面是HTML格式时,必须选中该选项;如果是XML或XHTML格式(例如RSS返回),则取消选中; Quiet表示只显示需要的HTML页面, Report errors表示显示响应报错, Show warnings表示显示警告; Use Namespaces:如果启用该选项,后续的XML解析器将使用命名空间来分辨; Validate XML:根据页面元素模式进行检查解析; Ignore Whitespace:忽略空白内容; Fetch external DTDs:如果选中该项,外部将使用DTD规则来获取页面内容;
Return entire XPath fragment of text content:返回文本内容的整个XPath片段;
Reference Name:存放提取出的值的参数。
XPath Query:用于提取值的XPath表达式。语法参考:XPath
匹配数字:取第几个匹配结果,0随机,-1全部,1代表第一个,2代表第二个,....以此类推
Default Value:参数的默认值。
实例:
1、新建测试计划,线程组下添加1个取样器 天气预报,如下图所示:
2、天气预报返回HTML,然后再添加xpath提取器,如下图所示:
举例://div[@class='w_city city_guonei']//a/@href
选取div下带有class属性为w_city city_guonei的href属性节点。 注释://div选取了div节点的所有子节点 @选取属性 /@href 从根节点选取所有的href属性
Xpath提取器设置
继续添加GetWeatherInfo取样器,获取xpath提取到的参数,如下图所示:
配置好以后,点击“保存”,运行JMeter,查看表格结果(取样器访问博客园首页和访问度娘间隔3s),如下图所示:
5.8.8XPath2 Extractor
Xpath2提取器,虽然JMeter官方文档说可以使用XPath2查询语言从结构化响应(XML或(X)HTML)中提取值,但目前测试只支持从XML响应中提取值;从HTML中提取会报错,这个可以通过查看结果树中选择XPath2 Tester来验证。
1、我们先来看看这个 Xpath2提取器长得是啥样子,路径:线程组 > 添加 > 前置处理器 > Xpath2提取器,如下图所示:
2、关键参数说明如下:
APPly to:作用范围(返回内容的断言范围) Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器 Main sample only:仅作用于父节点的取样器 Sub-samples only:仅作用于子节点的取样器 JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)
Return entire XPath fragment of text content:返回文本内容的整个XPath片段;
Name of created variable:存放提取出的值的参数。
XPath Query:用于提取值的XPath表达式。
Match No 匹配数字:取第几个匹配结果,0随机,-1全部,1代表第一个,2代表第二个,....以此类推
Default Value:参数的默认值。
Namespaces aliases list:命名空间别名列表。就是这个功能,能让使用命名空间比使用旧的XPath提取器更方便。关于命名空间含义,可以看官方文档:XML 命名空间,但是写的不够详细,详细的参考这里:XML 命名空间(XML Namespaces)介绍以及节点读取方法。由于XPath2对于表达式的要求比较严格,对于带命名空间的XML(包括默认的命名空间),使用不带命名空间前缀的表达式是查询不到结果的。
5.8.9BeanShell 后置处理程序
BeanShell 后置处理程序,如果请求返回的消息为xml或html格式的,可以用XPath2提取器来提取需要的数据。这个估计是JMeter5.0新加的吧,具体用法和Xpath提取器的应该差不多的,可以参考上边Xpath提取器的用法。
1、我们先来看看这个 BeanShell 后置处理程序长得是啥样子,路径:线程组 > 添加 > 后置处理器 > BeanShell 后置处理程序,如下图所示:
2、关键参数说明如下:
Reset bsh.Interpreter before each call: 每次迭代是否重置解释器
Reset Interpreter :false
Parameters to be passed to BeanShell(=>String Parameters and String []bsh.args) 参数传递,字符串或者数组
Parameters:
Script file(overrides script): 脚本文件
File Name:
Script(variables:ctx vars props prev data log): 脚本编辑()
实例:
列举一个简单的例子,响应结果中有中文乱码,使用BeanShell 后置处理程序来处理中文乱码。
1、新建测试计划,线程组下添加1个取样器 访问度娘,如下图所示:
然后再添加BeanShell 后置处理程序,设置脚本:prev.setDataEncoding("UTF-8"); ,如下图所示:
3、配置好以后,点击“保存”,运行JMeter,禁用BeanShell 后置处理程序,查看表格结果(中文乱码),如下图所示:
(1)禁用BeanShell 后置处理程序,查看表格结果(有中文乱码)
(2)启用BeanShell 后置处理程序,查看表格结果(无中文乱码)
5.9断言 (Assertions)
断言时自动化测试中最重要且绕不开的一个概念,让自己的程序尽可能像人一样去做判断,这是自动化测试需要实现的重要功能
JMeter中的断言用于检查测试中得到的响应数据等是否符合预期,Assertions一般用来设置检查点,用以保证性能测试过程中数据交互与预期一致(它的作用和LoadRunner中的检查点类似)
JMeter中断言的原理:在Request的返回层面,增加一层判断机制,因为Request成功了,并不代码结果一定正确
一个Sampler可以添加多个断言,根据你的检查需求来添加相应的断言,多个断言属于并的操作。当Sampler下所有的断言都通过了,那么才算是请求成功
JMeter自带的断言,如下图所示:
5.10监听器(Listener)
JMeter中的监听器,是对测试结果进行处理和可视化 展示的一系列组件,能够显示取样器请求和响应的细节以及请求结果,包括消息头,请求的数据,响应的数据
常用的监听器有图形结果、查看结果树、集合报告等
1. 监听器放的位置不同,查看的结果也不同。 在线程组下添加监听器,查看线程组下所有请求的结果; 放在具体某个请求下,只查看此请求的结果; 若放在某个控制器节点下,则查看此控制器下节点执行的结果;
2. 该监听器推荐做调试用,在实际运行压测时,应该禁用。因为大量 请求时,启用监听器时打印的日志比较多,会造成大IO消耗,影响 压力机性能。
3. 不同的监听器,通过不同的方式,展示服务器响应信息,但是它们 原始结果数据都是一样的。
4. JMeter监听器有两种方式存储监听记录:
1)默认保存方式:CSV格式。占用磁盘比较少,推荐使用这种方式 保存。
2) 保存方式:保存数据最全面,但是占用内存大。 JMeter自带的监听器,如下图所示:
JMeter自带的监听器,如下图所示
5.10.1 察看结果树
察看结果树,显示取样器请求和响应的细节以及请求结果,包括消息头,请求的数据,响应的数据。
(1)察看结果树,放的位置不同,查看的结果也不同。在线程组下添加察看结果树,查看线程组下所有请求的结果;放在具体某个请求下,只查看此请求的结果;若放在某个控制器节点下,则查看此控制器下节点执行的结果;
(2)该监听器推荐做调试用,在实际运行压测时,应该禁用,因为大量请求时,启用该监听器时打印的日志比较多,会造成大IO消耗,影响压力机性能。
1、我们先来看看这个 察看结果树 长得是啥样子,路径:线程组 > 添加 > 监听器 > 察看结果树,如下图所示:
2、关键参数说明如下:
名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
注释:控制器注释信息,非必填项
文件名:载入文件名
Log/Display Only: 仅日志错误、Success ;勾选中显示对应的日志信息
Configure:定义report中自己所关心的数据项。
取样器结果:
Thread Name: 线组名称 Sample Start: 启动开始时间 Load time: 加载时长 Latency: 等待时长 Size in bytes: 发送的数据总大小 Headers size in bytes: 发送头大小 Body size in bytes: 发送数据的其余部分大小 Sample Count: 发送统计 Error Count: 错误统计 Response code: 返回码 Response message: 返回消息 Response headers:返回头信息
请求 数据获取方式、路径、地址等以及传递的参数、cookie
响应数据 响应加载的页面html
3、作用
1)查看请求结果,请求成功的测试通常为绿色;红色则代表失败。
注:在没有对请求断言的情况下,显示绿色并不一定是成功,只代表响应码是200或300系列,显示红色说明响应码是400或500系列。所以要想确定请求返回的是正确的,必须要加上断言,只有断言成功才会显示绿色。
2)查看对应Sampler的测试结果的请求、响应数据。
- 取样器结果:显示的是取样器相关参数(客户端参数与响应参数)请求:发送请求的具体内容响应数据:服务器返回的相应参数
5.10.2 汇总报告
汇总报告,为测试中的每个不同命名的请求创建一个表行。这与聚合报告类似,只是它使用更少的内存。提供了最简要的测试结果信息,同时可以配置将相应的信息保存至指定的文件中(支持xml、csv格式的文件)。
单击Configure按钮,可以配置结果保存各种选项,具体这里不做说明了。
该监听器是笔者在调试jmeter项目时常用的监听器之一。
1、我们先来看看这个 汇总报告 长得是啥样子,路径:线程组 > 添加 > 监听器 > 汇总报告,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
Label 取样器别名,如果勾选Include group name ,则会添加线程组的名称作为前缀
# Samples 取样器运行次数
Average 请求(事务)的平均响应时间
Min 请求的最小响应时间
Max 请求的最大响应时间
Std. Dev 响应时间的标准方差
Error % 事务错误率
Throughput 吞吐量 也就是TPS
Received KB/sec 每秒收到的千字节
Sent KB/sec 每秒发送的千字节
Avg. Bytes 响应平均流量
5.10.3聚合报告
聚合报告,记录这次性能测试的总请求数、错误率、用户响应时间(中间值、90%、最少、最大)、吞吐量等,用以帮助分析被测试系统的性能。在聚合报告中,各个响应时间不能超过客户的要求,就是合格,例如不能超过响应时间2s,大于2s就是不合格的.
聚合报告应该是最详细的报告了,也是最为常用的报告。是大家在压测过程中最常用的监听器。
该监听器对于每个请求,它统计响应信息并提供请求数,平均值,最大,最小值,中位数、90%、95%、错误率,吞吐量(以请求数/秒为单位)和以kb/秒为单位的吞吐量。
单击Configure按钮,可以配置结果保存各种选项,具体这里不做说明了。
1、我们先来看看这个 聚合报告 长得是啥样子,路径:线程组 > 添加 > 监听器 > 聚合报告,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
Label :每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
#Samples :表示测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里就显示对应的 HTTP Request的执行次数是100
Average :平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
Median :50%用户的响应时间
90%Line :90%用户的响应时间
Min :最少响应时间
Max :最大响应时间
Error% :本次运行测试中出现错误的请求的数量/请求的总数
Throughput :吞吐量,默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
接收/发送)KB/sec :每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
5.10.4 后端监听器
后端监听器,是一个异步侦听器,可以将数据推入到数据库中,提供了InfluxDB,graphite选项
1、我们先来看看这个 后端监听器 长得是啥样子,路径:线程组 > 添加 > 监听器 > 后端监听器,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
Backend Listener implementation:BackendListenerClient类的实现,Jmeter默认提供如下两种实现,因为我们使用的influxdb作为持久存储
org.apache.jmeter.visualizers.backend.graphite.GraphiteBackendListenerClient
org.apache.jmeter.visualizers.backend.graphite.InfluxdbBackendListenerClient 因为我们使用的influxdb作为持久存储,所以后续只介绍InfluxdbBackendListenerClient
Async Queue size:异步队列大小 队列值包含异步处理时的度量标准。除非有一些特定的性能问题,否则最好不要从默认的5000。
3、我们使用InfluxdbBackendListenerClient
- influxdbMetricsSender:org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSenderinfluxdbUrl:influx数据库的url。example : http://influxHost:8086/write?db=jmeterapplication:被测试的应用名称。此值也作为名为“application”的标记存储在“events”中measurement:使用默认的”jmeter“就行summaryOnly:为true的情况下,只输出所有请求的集合数据报告,为flase的情况下,输出每条数据的详情报告、samplersRegex:正则表达式将与样本名称匹配并发送到后端。默认匹配所有testTitle:测试名称。默认的设置为 Test name。该值作为名为“text”的字段存储在“事件”度量中。 JMeter在测试的开始和结束时自动生成一个注释,其值以'started'和'ended'结尾percentiles:要发送到后端的百分位数,多个值已;分割TAG_WhatEverYouWant:自定义标签。您可以根据需要添加任意数量的自定义标签。对于它们中的每一个,只需创建一个新行并在其名称前加“TAG_”
5.10.5汇总图
汇总图,我们可以看到表格显示的结果与图形结果,看着挺复杂,其实稍微翻译一下就知道,绝大多数都是对图形的设置。
1、我们先来看看这个 汇总图 长得是啥样子,路径:线程组 > 添加 > 监听器 > 汇总图,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
Column settings
- Columns to display 选择要在图表中显示的列Rectangles color 单击右侧颜色矩形打开弹出对话框,选择自定义颜色。(就是点击)
- Foreground color 允许更改值文本颜色Value font 允许定义文本的字体设置Draw outlines bar? 在条形图上绘制或不绘制边界线Show number grouping? 是否显示Y轴标签中的数字分组Value labels vertical? 更改值标签的方向。(默认为水平)Column label selection 按结果标签过滤
Title
图表的头部定义图表的标题
Graph size
根据当前JMeter窗口大小的宽度和高度计算图形大小。使用“ 宽度”和“ 高度”字段定义自定义大小。单位是像素。
X Axis settings
定义X轴标签的最大长度(以像素为单位)
Y Axis settings
为Y轴定义自定义最大值。
Legend
定义图表图例的放置和字体设置
5.10.6断言结果
断言结果,对相应的请求添加断言。对取样器进行断言后,我们希望知道断言结果;此元件可以帮助我们显示断言结果(察看结果树元件中也可以看到)。消耗了大量资源(内存和CPU),性能测试时候不建议使用。
作用:用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致,一般与结果树结合使用。
1、我们先来看看这个 断言结果 长得是啥样子,路径:线程组 > 添加 > 监听器 > 断言结果,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空。
5.10.7比较断言可视化器
比较断言可视化器,和比较断言配合使用。
1、我们先来看看这个 比较断言可视化器 长得是啥样子,路径:线程组 > 添加 > 监听器 > 比较断言可视化器,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空。
5.10.8生成概要结果
生成概要结果,该测试元素可以放置在测试计划中的任何位置。生成到目前为止对日志文件和/或标准输出的测试运行的摘要。显示了运行总计和差异总计。在适当的时间边界每n秒(默认为30秒)生成一次输出,因此将同步在同一时间运行的多个测试。
1、我们先来看看这个 生成概要结果 长得是啥样子,路径:线程组 > 添加 > 监听器 > 生成概要结果,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空。
5.10.9 图形结果
图形结果,通过图形展示出本次性能测试数据的分布。 图形结果一般作为聚合报告的分析辅佐
1、我们先来看看这个 图形结果 长得是啥样子,路径:线程组 > 添加 > 监听器 > 图形结果,如下图所示:
2、关键参数说明如下:
名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
注释:控制器注释信息,非必填项
文件名:载入文件名
Throught:吞吐量,可以理解成TPS(TPS表示每秒通过的事物数,QPS表示每秒查询接口数。jmeter中如果只有单接口,那么TPS=QPS。如果是多接口的混合场景,只有在事物控制器下执行,才能将其理解为TPS)
- 样本数目。在这里,我们可以把样本数量简单理解成是jmeter一共向服务器发起了多少次请求;
- 最新样本。jmeter最后一次发送请求的响应时间。单位是毫秒;
- 平均。所有请求响应时间的平均值。单位是毫秒;
- 偏离。标准方差,学过统计学的同学应该知道这个概念。如果你对这个概念一无所知也没有关系,偏离越小就代表测试的总体结果与平均值越接近;
- 吞吐量。被测系统每分钟能处理的请求个数,这是判断服务器性能好坏的重要指标(也可以说是最重要的指标)。在上面的图形结果报表里我们可以看到系统的吞吐量是138.985每分钟,这就代表着系统每分钟可以处理138.985个请求;
- 中值。就是响应时间的中间值,学术一点中值指的是有50%的值大于这个值,另外50%的值小于这个值。蒙圈了吧?实际上中值指的是如果有9个数,那么我们从小到大排列这些数,排在第5个的数就是这一组数的中值。那么如果有10个数呢?10个数的话第5个和第6个数的平均值就是这组数字的中值;
5.10.10 JSR223 Listener
SR223 Listener,允许将JSR223脚本代码应用于示例结果。
1、我们先来看看这个 SR223 Listener 长得是啥样子,路径:线程组 > 添加 > 监听器 > JSR223 Listener,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
Label 取样器别名,如果勾选Include group name ,则会添加线程组的名称作为前缀
# Samples 取样器运行次数
Average 请求(事务)的平均响应时间
Min 请求的最小响应时间
Max 请求的最大响应时间
Std. Dev 响应时间的标准方差
Error % 事务错误率
Throughput 吞吐量 也就是TPS
Received KB/sec 每秒收到的千字节
Sent KB/sec 每秒发送的千字节
Avg. Bytes 响应平均流量
5.10.11邮件观察仪
邮件观察仪, 如果测试运行从服务器收到太多失败的响应,则可以将邮件程序可视化工具设置为发送电子邮件,这个不错,起到及时通知效果,下面我使用的是163 SMTP进行测试。可以实现。
1、我们先来看看这个 邮件观察仪 长得是啥样子,路径:线程组 > 添加 > 监听器 > 邮件观察仪,如下图所示:
2、配置好以后,点击“Test Mail”,提示发送邮件成功。如下图所示
3、去收件箱查看,如下图所示:
5.10.12响应时间图
响应时间图,响应时间图形监听器。有点和我们之前介绍的Aggregate Graph类似
1、我们先来看看这个 响应时间图长得是啥样子,路径:线程组 > 添加 > 监听器 > 响应时间图,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
2.1 Graph setting 图片设置
2.2 Interval:横坐标的刻度
2.3 Title 标题 默认
2.4 Line setting 线条设置 默认
2.5 Graph size 图片尺寸 默认
2.6 X Axis 横坐标 默认
2.7 Y Aixs 纵坐标
2.8 Scale maximum value 纵坐标长度
2.9 increment scale 纵坐标的刻度 ;Legend 字体设置 默认
- Interval (ms) X轴间隔的时间(以毫秒为单位)
- Sampler label selection 按结果标签过滤。可以使用正则表达式
- Title 在图表的头部定义图表的标题
- Line settings 定义线条的宽度
- Graph size 根据当前JMeter窗口大小的宽度和高度计算图形大小。使用“ 宽度”和“ 高度”字段定义自定义大小。单位是像素。
- X Axis settings 自定义X轴标签的日期格式
- Y Axis settings 为Y轴定义自定义最大值(以毫秒为单位)
- Legend 定义图表图例的放置和字体设置
5.10.13保存响应到文件
保存响应到文件,我们可以看到表格显示的结果与图形结果,看着挺复杂,其实稍微翻译一下就知道,绝大多数都是对图形的设置。
1、我们先来看看这个 保存响应到文件 长得是啥样子,路径:线程组 > 添加 > 监听器 > 保存响应到文件,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空;
文件名称前缀:设置响应文件所在路径(路径必须已存在)和文件前缀
Save Failed Responses only:只保存失败的响应
Save Successful Responses only:只保留成功的响应
Don't add number to prefix:不添加数字到文件名前缀
Don't add suffix:不添加文件后缀,即扩展名(注:默认情况下,jmeter会根据服务器返回的结果自动生成合适类型的文件,比如服务器返回json格式的内容,jmter会自动生成.json文件)
Add timestamp:添加时间戳到文件前缀
Minimum Length of sequence number :最小序列号,不填默认从1开始。
5.10.14简单数据写入器
简单数据写入器,对用来记录取样器响应结果,不会以图形方式显示。配合NON GUI模式使用。
1、我们先来看看这个 简单数据写入器 长得是啥样子,路径:线程组 > 添加 > 监听器 > 简单数据写入器,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空。
5.10.15用表格查看结果
用表格查看结果,这个listener用来显示每个请求的响应头信息,我觉得它最好用的一点就是可以按先后顺序显示每个请求的开始时间、耗时、响应状态等,方便进行结果分析。
1、我们先来看看这个 用表格查看结果 长得是啥样子,路径:线程组 > 添加 > 监听器 > 用表格查看结果,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空。
Sample # : 一个系列号,我们线程用户设置了5,这里就有5个号
Start Time:每个用户的开始时间,我们设置了1秒进5个用户,所以,每个用户进入时间不同,这里精确到毫秒。
Thread Name:线程名称,注意1-1,1-5,第一个1我也不知道表示什么,后面的1到5很好理解,就是用户1到用户5.
Label:就是Http reques的名称
Sampler Time:运行这个Sampler所消耗的时间,有时候也等于Duration time
Status:执行结果标记,成本绿勾,失败红叉。
Bytes:请求的响应文件大小
Sent Byte:发送HTTP请求的数据包大小
Latency:这个字面意思是潜伏时间,不是延迟,暂时不好理解和解释。一个网络术语
Connet Time: 连接到服务器消耗的时间。
5.10.16BeanShell Listener
BeanShell Listener,通过BeanShell 监听器可以访问JMeter提供的属性和变量
1、我们先来看看这个 BeanShell Listener 长得是啥样子,路径:线程组 > 添加 > 监听器 > BeanShell Listener,如下图所示:
2、关键参数说明如下:
Name:名称,可以随意设置,甚至为空;
Comments:注释,可随意设置,可以为空。
在Jmeter-Gui中,只能编辑一个测试计划,如果需要新创建一个测试计划,就要开启一个新的Jmeter-Gui窗口界面。