一、Jmeter关联概述
1、概述
在性能测试脚本中,常常出现上一个请求的返回结果中包含了下一个请求需要发送的参数,这就是关联。关联实质是请求与请求之间存在数据依赖关系,一个请求的结果是另一个请求提交的数据,两个请求不再是独立存在的。
2、关联的一般步骤
- 从上一个请求提取关心的数据保存到变量
- 在下一个请求引用该变量 ${变量名}。
3、关联的使用方法
- JDBC将操作结果赋值给变量,再在另一个请求中调用变量
- 正则表达式提取器
- XPath提取器
- Css/Jquary提取器
- Json提取器
- BeanShell等具有提取功能的后置处理器
二、关联之XPath提取器
1、需求:
在Google中打开百度界面-----将百度请求得到的tltle标签值作为google请求的请求数据进行请求
2、实现过程:
(1)创建访问百度和访问Google的HTTP请求,如下图所示,Google请求的路径先不填写。
(2)查看结果树,并将访问百度请求的响应结果的格式修改为HTML格式,如下图所示:
(3)在访问百度请求上右键----添加----后置处理器----Xpath Extractor,创建Xpath提取器,定义变量并编写Xpath路径,如下图所示:
(4)修改google中的请求路径,调用定义的变量,如下图所示:
(5)运行测试计划,查看结果树的显示结果,如下图所示:
三、参数化之正则表达式提取器
1、正则表达式
正则表达式,又称规则表达式,正则表达式通常被用来检索 、替换那些符合某个规则的文本。详情资料:https://www.w3cschool.cn/regexp/tfua1pq5.html
2、需求
查询接口查询某个学院信息,并使用百度进行搜索该学院信息。
3、实现过程
(1)创建查询某个学院信息的HTTP请求,运行测试计划,查看结果树,并修改请求结果的格式为JSON格式,如下图所示:
(2)查询某个学院信息的HTTP请求右键-----添加-----后置处理器-----正则表达式提取器,新建正则表达式提取器并编辑提取器中的变量名、正则表达式、模板、匹配数字等,如下图所示:
注:当匹配数字为0时获取到的是随机的学院信息,当为2时,获取的时第二个学院信息。不加?匹配到最后一个结束标记(;,);加?表示匹配到第一个结束标记。
(3)创建百度访问请求,修改访问路径,调用正则表达式提取器中定义的变量,如下图所示:
(4)运行测试计划,查看结果树
4、正则表达式提取器设置
(1)引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它。
(2)正则表达式:制定规则的公式,公式模板:前缀识别()后缀识别
- ():括号括起来的部分就是要提取的数据
- . :点表示匹配字符
- + :代表+号前面的字符必须至少出现一次(一次或多次)
- ?:在找到第一个匹配项后停止
- * :匹配规则内所有的字符串
(3)模板:$$格式:如果只有一个模板,一般就填写$̲1$,也可有多个模板,如$1$…3$等等,表示解析到的第几个值给保存到定义的变量中。如:$1$表示解析到的第1个值;
(4)匹配数字:表示将第几个匹配结果返回。0代表随机取值,1代表全部取值,通常情况下填0
(5)缺省值:如果参数没有取得到值,那默认给一个值让它取
三、总结
1、使用场景:一个请求的响应数据作为另一个请求提交的数据
2、 优点:使用关联可以组织多样的业务逻辑
3、实现方案1:XPath 提取器(html 等标签语言)
实现方案2:正 则表达式提取器(普通文本)
- .:表示任意字符
- *:任意字符串
- +:一个或多个
- ?:到第一个结束标记
- ():声明截取的区间范围
4、选用:如果从标签(HTML|XML)语言提取数据最好使用Xpath提取器,如果想要的数据是文本格式,则使用正则表达式比较方便。
5、注意:提取器必须放在请求下面,如下图所示:
注:可通过线程组右键----添加----取样器----debug sampler,查看提取器是否获取到值。
注:正则表达式提取器中若正则表达式是JSON格式,冒号后没有空格,否则可能导致无法解析出来。