一、Jmeter关联概述

1、概述

请求与请求之间存在数据依赖关系,一个请求的结果是另一个请求提交的数据,两个请求不再是独立存在的。

2、关联的一般步骤

  • 从上一个请求提取关心的数据保存到变量
  • 在下一个请求引用该变量 ${变量名}。

 

3、关联的使用方法

  • JDBC将操作结果赋值给变量,再在另一个请求中调用变量
  • 正则表达式提取器
  • XPath提取器
  • Css/Jquary提取器
  • Json提取器
  • BeanShell等具有提取功能的后置处理器

 

二、关联之XPath提取器

1、需求:

      在Google中打开百度界面-----将百度请求得到的tltle标签值作为google请求的请求数据进行请求

 

2、实现过程:

(1)创建访问百度和访问Google的HTTP请求,如下图所示,Google请求的路径先不填写。

jmeter grpc 长连接 jmeter关联步骤_数据

jmeter grpc 长连接 jmeter关联步骤_正则表达式_02

 

(2)查看结果树,并将访问百度请求的响应结果的格式修改为HTML格式,如下图所示:

jmeter grpc 长连接 jmeter关联步骤_正则表达式_03

(3)在访问百度请求上右键----添加----后置处理器----Xpath Extractor,创建Xpath提取器,定义变量并编写Xpath路径,如下图所示:

jmeter grpc 长连接 jmeter关联步骤_jmeter grpc 长连接_04

 (4)修改google中的请求路径,调用定义的变量,如下图所示:

jmeter grpc 长连接 jmeter关联步骤_jmeter grpc 长连接_05

 (5)运行测试计划,查看结果树的显示结果,如下图所示:

jmeter grpc 长连接 jmeter关联步骤_jmeter grpc 长连接_06

 

 三、参数化之正则表达式提取器

1、正则表达式

   正则表达式,又称规则表达式,正则表达式通常被用来检索 、替换那些符合某个规则的文本。详情资料:https://www.w3cschool.cn/regexp/tfua1pq5.html

 

2、需求

   查询接口查询某个学院信息,并使用百度进行搜索该学院信息。

 

3、实现过程

(1)创建查询某个学院信息的HTTP请求,运行测试计划,查看结果树,并修改请求结果的格式为JSON格式,如下图所示:

jmeter grpc 长连接 jmeter关联步骤_百度_07

jmeter grpc 长连接 jmeter关联步骤_百度_08

 

(2)查询某个学院信息的HTTP请求右键-----添加-----后置处理器-----正则表达式提取器,新建正则表达式提取器并编辑提取器中的变量名、正则表达式、模板、匹配数字等,如下图所示:

jmeter grpc 长连接 jmeter关联步骤_数据_09

jmeter grpc 长连接 jmeter关联步骤_正则表达式_10

注:当匹配数字为0时获取到的是随机的学院信息,当为2时,获取的时第二个学院信息。不加?匹配到最后一个结束标记(;,);加?表示匹配到第一个结束标记。

 

(3)创建百度访问请求,修改访问路径,调用正则表达式提取器中定义的变量,如下图所示:

jmeter grpc 长连接 jmeter关联步骤_jmeter grpc 长连接_11

(4)运行测试计划,查看结果树

jmeter grpc 长连接 jmeter关联步骤_百度_12

 

 

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、注意:提取器必须放在请求下面,如下图所示:

jmeter grpc 长连接 jmeter关联步骤_数据_13

 注:可通过线程组右键----添加----取样器----debug sampler,查看提取器是否获取到值。

jmeter grpc 长连接 jmeter关联步骤_百度_14

 注:正则表达式提取器中若正则表达式是JSON格式,冒号后没有空格,否则可能导致无法解析出来。

jmeter grpc 长连接 jmeter关联步骤_正则表达式_15