jmeter组件详解

执行顺序

测试计划->线程组->配置元件->前置处理器->定时器->取样器->后置处理器->断言->监听

• (1)配置元件(如果存在)。
• (2)前置处理器(如果存在)。
• (3)定时器(如果存在)。
• (4)取样器(如果存在)。
•(5)后置处理器(如果存在且取样器的结果不为空)。
• (6)断言(如果存在且取样器的结果不为空 • (7)监听器(如果存在且取样器的结果不为空)。

作用域
必须组件:测试计划、线程组、取样器
辅助组件:除了必须组件,辅助组件用于父组件、同级组件、以及同级组件下的所有子组件。

内容

1. 测试计划

  • 一个测试计划即一个测试用例
  • 起点,所有组件的容器

测试计划要素:
(1)脚本中测试计划只能有一个
(2)测试计划中至少要有一个线程组
(3)至少要有一个取样器
(4)至少要有一个监听器

2. 线程组

代表一定数量的用户
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 取样器

向服务器发送请求的最小单元
包括:
在这里插入图片描述

3.1 HTTP请求

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 逻辑控制器

可以控制取样器的执行顺序
结合取样器实现一些复杂的逻辑
在这里插入图片描述

3.2.1 简单控制器(Simple Controller)

用来指定了一个执行单元,它不改变元件的执行顺序。(无任何实际作用,也不参与脚本运行)
在这里插入图片描述

名称说明
名称可以随意设置,甚至可以为空
注释可以随意设置,可以为空

3.2.2 For Each 控制器(ForEach Controller)

定义一个循环规则
在这里插入图片描述

名称说明
名称控制器名称,可以随意设置,甚至可以为空
注释可以随意设置,可以为空
输入变量前缀可以在“用户自定义的变置”中定义一组变量,循环控制器可以从中获取到变量对应的值,然后作为循环控制器的循环条件,还可以输出变量作为取样器的参数。
开始循环字段/Start index for loop循环变量下标起点
结束循环字段/End index for loop循环变量下标终点
输出变量名称循环控制器生成的变量名称
数字之前加上下划线“”?/Add ”” before number?变量前缀后是否加”_”作为分隔符

3.2.3 switch控制器(Switch Controller)

类似于高级语言中的Switch逻辑控制语句
在这里插入图片描述

名称说明
名称可以随意设置,甚至可以为空
注释可以随意设置,甚至可以为空
Switch Value匹配值,如上面所说可以为数字,也可以为字符。为字符时匹配取样器名称,如果匹配不上就会默认并找取样器名称为default的取样器,如果没有则不运行。

JMeter会给节点下的取样器顺序编号,第一个取样器编号为0,第二个取样器的编号就是1,所以这里指定0就会运行第一个请求)

3.2.4 如果(if)控制器(If Controller)

通过某个条件来控制此节点下的元件是否运行
在这里插入图片描述

名称说明
名称可以随意设置,甚至可以为空
注释可以随意设置,可以为空
Condition判断条件,勾选 Interpret Condition as Variable Expression?时Condition 使用变量表达式来设置条件

3.2.5 事务控制器(Transaction Controller)

在这里插入图片描述

名称说明
名称可以随意设置,最好有业务意义
注释可以随意设置,可以为空
Generate parent sample如果事务控制器下有多个取样器(请求),勾选它,那么在“察看结果树”中我们不仅可以看到事务控制器,还可以看到每个取样器;并且事务控制器定义的事务是否成功是取决于子事务是否都成功的,其中任何一个失败即代表整个事务失败。
include duration of timer and pre-postprocessors in generated sample是否包括定时器、预处理和后期处理延迟的时间

3.2.6 循环控制器(Loop Controller)

• 控制在其节点下的元件的执行次数。
•如果在线程组中也设置了执行次数,那么循环控制器下的元件的执行次数是:线程组执行次数*循环控制器执行次数。
在这里插入图片描述

名称说明
名称控制器名称,可以随意设置,甚至可以为空
注释可以随意设置,可以为空
循环次数(Loop Count)要么设置Forever,要么填写具体的执行次数,二选一

3.2.7 吞吐量控制器(Throughput Controller)

用来控制其下元件的执行次数
在这里插入图片描述

名称说明
名称控制器名称,可以随意设置,甚至可以为空
注释可以随意设置,可以为空
Percent Executions按执行次数的百分比来计算执行次数,此时Throughput取值是0〜 100。PerUser是否勾选对Percent Executions模式无影响
吞吐量如:20,代表吞吐量20%,若线程数10,执行2个http请求
PerUser如果选择PerUser则按虚拟用户数来计算执行次数,如果没选中PerUser则是按所有虛拟用户来计算执行次数

3.2.8 随机控制器(Random Controller)

随机控制器(如图所示)节点下的元件随机运行,与交替控制器不一样的是节点下的元件运行顺序不定
在这里插入图片描述

名称说明
名称控制器名称,可以随意设置,甚至可以为空
注释可以随意设置,可以为空
忽略子控制器块(Ignore sub-controller blocks)忽略子控制器,即子控制器失效,由随机控制器接管,类似交替控制器

使用随机控制器后,随机执行一个http请求

如:

在这里插入图片描述
在这里插入图片描述

3.2.9 随机顺序控制器(Random Order Controller)

其节点下的元件随机执行,不过每个元件只执行一次
在这里插入图片描述

名称说明
名称控制器名称,可以随意设置,甚至可以为空
注释可以随意设置,可以为空

有几个请求执行几次,随机执行,每个都执行一遍

如:
在这里插入图片描述
在这里插入图片描述

3.3 前置处理器

处理请求前的一些准备工作
在这里插入图片描述

3.3.1 用户参数(User Parameters)

可以使用此元件进行参数设置,在取样器中进行参数化
在这里插入图片描述
在这里插入图片描述

3.3 后置处理器

对响应数据进行处理
在这里插入图片描述

3.3.1 正则表达式(Regular Expression Extractor)

在这里插入图片描述

名称说明
名称可以随意设置,最好有业务意义
注释可以随意设置,可以为空
Apply to应用范围
要检查的响应字段针对响应数据的不同部分进行匹配
引用名称匹配出来的信息通过此名称进行访问,类似${引用名称}进行访问
正则表达式正则表达式提取器使用此串进行信息匹配
模板正则表达式可以设置多个模板进行匹配,在此只可指定运用哪个模板。 如: 0 0 0指全文匹配; 1 1 1指第一个模板; 2 2 2指第二个模板
匹配数字在匹配时往往会出现多个值匹配的情况。 匹配数为0:随机取匹配不同模板可能会匹配一组值;匹配数字:确定取这一组值中的哪一个;负数:取所有值,可以与 For each Controller一起使用来遍历
默认值如果没有匹配到可以指定一个默认值

在这里插入图片描述

名称说明
Apply toMain sample and sub-samples匹配范围包括当前父取样器并覆盖至子取样器
Apply toMain sample only匹配范围是当前父取样器
Apply toSub-samples only仅匹配子取样器
Apply toJMeter Variable支持对 JMeter变量值进行匹配
要检查的响应字段主体响应数据的主体部分,排除Header部分;Htp协议返回请求的主体部分就是Body
要检查的响应字段Body( unescaped)针对替换了转义码的Body部分
要检查的响应字段Body as a Documet返回内容作为一个文档进行匹配
要检查的响应字段信息头只匹配信息头部分的内容
要检查的响应字段URL只匹配URL链接
要检查的响应字段响应代码匹配响应代码,比如HTTP协议返回码200代表成功
要检查的响应字段响应信息匹配响应信息,比如处理成功返回“成功”字样,或者“OK”字样

后置处理器的应用:关联

使用正则表达式实现接口关联:

  1. 从鉴定码token接口获取动态码,编写到标签接口的URL栏
  2. 获取动态验证码,如:
    ① 脚本设置如下(必须包括采样器、):
    在这里插入图片描述
    ② 设置后置处理器(正则表达式)设置:
    若有一个正则,可以写成
    在这里插入图片描述
    若有多个正则,可以使用;分割开
    在这里插入图片描述
    ③新接口设置关联
    在这里插入图片描述
    ④启动

查看接口参数的值是否为动态的:在这里插入图片描述

3.3.2 调试后置处理程序(Debug PostProcessor)

多用在脚本调试,结合察看结果树我们可以看到Sampler 的相关变量、系统相关属性、JMeter相关变量与属性
在这里插入图片描述

名称说明
名称随意填写,可以为空
注释随意填写,可以为空
jmeter属性(JMeter properties)是否示 JMeter 属性
jmeter变量(JMeter variables)是否显示JMeter中定义的变量
取样器属性(Sampler properties)是否显示取样器属性
系统属性(System properties)是否显示系统属性

3.3.3 JSON提取器(JSON Extractor)

多用在返回格式为json的HTTP请求中,用来获取返回的json中的某个值。并保存成变量供后面的请求进行调用或断言等
在这里插入图片描述

名称说明
名称json后置表达式的名称,标识作用,建议使用有意义的名字
注释随意填写,可以为空
Variable names保存的变量名,后面使用${Variable names}引用
JSON Path expressions上一步中调试通过的json path表达式
Match Numbers匹配数字(0代表随机,1代表第一个,-1代表所有)
Compute concatenation var(suffix_ALL)是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL”,使用场景需要获取的值有多个,后面需要对这一组数据进行操作
Default Values找不到时默认值,一般设置为NOT FOUND

3.4 断言

用于判断请求是否成功
在这里插入图片描述

3.4.1 响应断言(Response Assertion)

验证响应信息是否正确
在这里插入图片描述

名称说明
名称可以随意设置,最好有业务意义
注释可以随意设置,可以为空
Apply to应用范围
要测试的响应字段针对响应数据的不同部分进行匹配
模式匹配规则
要测试的模式填入你需要匹配的字符串或者正则表达式,注意要与模式匹配规则搭配好

3.4.2 大小断言(Size Assertion)

验证响应数据Size大小
在这里插入图片描述

名称说明
名称给添加的元件取名,随意填写,可以为空
注释随意填写,可以为空
Apply to断言应用范围
响应字段大小(Response Size Field to Test)哪部分响应域参与断言
Size to Assert断言时Size的阀值设置

3.4.3 断言持续时间(Duration Assertion)

验证取样器运行测试消耗掉的时间
在这里插入图片描述

名称说明
名称给添加的元件取名,随意填写,可以为空
注释随意填写,可以为空
Apply to断言应用范围
断言持续时间单位毫秒

3.5 定时器

一般被用来设置延迟与同步,负责在请求之间的延迟建个、固定、高斯、随机的定时器
在这里插入图片描述

3.5.1 固定定时器(Constant Timer)

用于延迟时间,多用来模拟思考时间
在这里插入图片描述
在这里插入图片描述

3.5.2 高斯随机定时器(Gaussian Random Timer)

生成一个呈高斯分布的时间间隔
在这里插入图片描述

名称说明
偏差设置的偏差值,是一个浮动范围,单位毫秒
固定延迟偏移固定延迟时间

例如 ,偏差3s,固定延迟偏移5s,则运行时间为5s-8s

3.5.3 同步定时器(Synchronizing Timer)

使用同步定时器来实现并发需求
在这里插入图片描述

名称说明
名称可以随意设置,最好有业务意义
注释可以随意设置,可以为空
模拟用户组的数量(Number of Simulated Users to Group by)设置同步的线程数量

3.6 配置元件

用于配置相关信息
在这里插入图片描述

3.6.1 CSV数据文件设置(CSV Data Set Config)

迭代方式:依次使用csv文件里的名称 数量=线程数*循环数

在这里插入图片描述

名称说明
名称可以随意设置,最好有业务意义
注释可以随意设置,可以为空
文件名引用文件地址,可以是相对路径也可以是绝对路径。相对路径的根节点是JMeter的启动目录(% JMETER HOME%bin)
文件编码读取参数文件用到的编码格式,建议大家用UTF-8的格式
变量名称定义的参数名称,用逗号隔开,将会与参数文件中的参数对应
分隔符用来分隔参数文件的分隔符,默认为逗号“,”
是否允许带引号选择是,那么可以允许拆分完成的参数里面有分隔符出现
遇到文件结束符再次循环选择是,参数文件循环遍历;否,参数文件遍历完成后不循环(JMeter在测试执行过程中每次迭代会从参数文件中新取一行数据,从头遍历到尾)
遇到文件结束符停止线程与 Recycle on EOF中的 False选择复用;是,停止测试;否,不停止测试
线程共享模式参数文件共享模式,有以下三种。所有现场(Allthreads) :参数文件对所有线程共享,这就包括同一测试计划中的不同线程组;当前线程组(Current thread group):只对当前线程组中的线程共享;当前线程(Current thread):仅当前线程获取。

操作步骤:
① 设置CSV文件(可以将excel文件修改后缀)
②CSV数据文件设置如下:
在这里插入图片描述
③设置线程组
在这里插入图片描述
⑤察看结果树,查看接口是否出错
如:使用如下数据在这里插入图片描述
结果截图如下:

接口结果截图
第一轮请求在这里插入图片描述
第二轮请求在这里插入图片描述
第三轮请求在这里插入图片描述
第四轮请求在这里插入图片描述
第五轮请求在这里插入图片描述

3.6.2 HTTP请求默认值(HTTP Request Defaults)

一般,服务器名称或IP是不变的,端口也是不变的;由于每个请求都要写一遍(如果是手动开发脚本),这样工作量会比较大。
JMeter也考虑了这方面的工作量,提供了HTTP请求默认值这样一个元件,让我们能够把重复的内容分离出来,只需要定义一次就够了。

在这里插入图片描述

3.6.3 HTTP信息头管理器(HTTP Header Manager)

在这里插入图片描述

  • HTTP信息头管理器可以设定JMeter发送的HTTP请求头所包含的信息
  • HTTP信息头中包含有”User-Agent"、“Pragma"、”Referer"等属性。尽能放在线程组一级。除非因为某些原因,测试人员希望不同的HTTP请求使用不同的HTTP信息头

3.6.4 HTTP Cookie 管理器(HTTP Cookie Manager)

•Cookie 是储存在用户本地终端上的数据
•通常情况下,当用户结束浏览器会话时,系统将终止所有的Cookie。当Web服务器创建了Cookies后,只要在有效期内,用户访问同一个Web服务器时,浏览器首先要检查本地的Cookie,并将其原样发送给Web 服务器
•Cookies最典型的应用1:判断注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进时保留用户信息以便简化登录操作,这些都是Cookies的功用
•Cookies最典型的应用2:商城的"购物车”之类处理。用户可能会在一段时间内同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款提取信息。

在这里插入图片描述

  • 自动管理cookies,在jmeter配置文件中设置CookieManager.save.cookies=true
  • 手动添加cookies ,可以利用firefox中导出Cookies之后在导入jmeter中

3.6.5 用户定义的变量(User Defined Variables)

在这里插入图片描述

应用:提取IP和port配置元件,登录IP和端口
操作步骤:
在这里插入图片描述
在这里插入图片描述
结果如下:
在这里插入图片描述

3.6.6 计数器(Counter)

在测试执行过程中会记录迭代次数
在这里插入图片描述
迭代方式(如有2个线程组):

迭代方式备注执行的请求顺序
单用户单迭代计数器->勾选与每用户独立的跟踪计数器如:线程1,循环1,请求的username为test1
单用户单迭代计数器->不勾选与每用户独立的跟踪计数器如:线程1,循环1。请求的username为test1
单用户多迭代计数器->勾选与每用户独立的跟踪计数器如:线程1,循环2。请求的username为test1、test2
单用户多迭代计数器->不勾选与每用户独立的跟踪计数器如:线程1,循环2。请求的username为test1、test2
多用户单迭代计数器->勾选与每用户独立的跟踪计数器如:线程2,循环1。请求的username为test1、test1
多用户单迭代计数器->不勾选与每用户独立的跟踪计数器如:线程2,循环1。请求的username为test1、test2
多用户多迭代计数器->勾选与每用户独立的跟踪计数器如:线程2,循环2。请求的username为test1、test2、test1、test2
多用户多迭代计数器->不勾选与每用户独立的跟踪计数器如:线程2,循环2,请求的username为test1、test2、test3、test4

应用:设置计数器
使用步骤:
①添加:测试计划->添加->配置元件->计数器
在这里插入图片描述
②计数器设置
在这里插入图片描述
③其它接口调用该参数:
在这里插入图片描述

3.7 监听器

负责收集结果
监听器用来监听及显示JMeter取样器测试结果
在这里插入图片描述

察看结果树说明
察看结果树(View Results Tree)在结果树中査看到响应数据
聚合报告(Aggregate Report)以表格的形式显示取样器结果,与Aggregate Graph 类似,不过它没有图形显示功能;如果是GUI方式运行建议还是选用Aggregate Report。
汇总报告(Aggregate Graph)表格显示的结果与图形结果
Distribution Graph响应时间分区间显示,显示多少事务的响应时间在哪个范围内;消耗性能,大负载不建议使用,调试或者功能测试用
响应时间图(Response Time Graph)以图形的形式显示取样器结果(响应时间)
简单数据写入器(Simple Data Writer)用来记录取样器执行结果,不会以图形的方式显示
Spline Visualizer以样条线的方式来显示取样器结果;消耗性能,大负载不建议使用
保存响应到文件(Save Response to a file)用来存储服务器响应数;消耗性能,大负载不建议使用,调试或者功能测试用
断言结果(Assertion Results)用来显示断言结果;调试用
生成概要结果(Generate Summary Results)非GUI方式运行时,让结果在 CMD (Windows 系统下)窗口显示
用表察看结果(View Results in Table)把取样器每次结果以表格的形式显示;消耗性能,大负载不建议使用,调试或者功能测试用
Monitor Results原先进为监控Tomcat5而开发的,前提是Tomcat的webapps\managw目录存在;不建议使用
邮件查看仪(Mailer Visualizer)发送邮件给相关人员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值