Jmeter关联

 关联

  请求之间有依赖关系时,就需要用到关联处理。Jmeter可以通过‘后置处理器’中的一些组件来处理关联

  常用的关联方法:

    正则表达式提取器

    XPath提取器

    JSON提取器

 正则表达式提取器

  添加方法:测试计划 --> 线程组--> HTTP请求 --> (右键添加) 后置处理器 --> 正则表达式提取器

  步骤

   1.添加线程组

jmeter连接hive jmeter关联步骤_jmeter连接hive

   2.添加HTTP请求

jmeter连接hive jmeter关联步骤_HTTP_02

   3.添加正则表达式提取器

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

   4.添加HTTP请求

jmeter连接hive jmeter关联步骤_jmeter连接hive_04

   5.添加查看结果树

jmeter连接hive jmeter关联步骤_jmeter连接hive_05

  参数

   引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它

   正则表达式

    ():括起来的部分就是要提取的。

    .:匹配任何字符串。

    +:一次或多次。

    ?:不要太贪婪,在找到第一个匹配项后停止。

   模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第几个值给title。如:

   $1$表示解析到的第1个值

   匹配数字:0代表随机取值,-1代表全部取值,1代表取第一个值

   缺省值:如果参数没有取得到值,那默认给一个值让它取

 XPath提取器

  添加方法:测试计划->线程组->HTTP请求->后置处理器->XPath提取器

  步骤

   1.添加线程组

jmeter连接hive jmeter关联步骤_正则表达式_06

   2.添加HTTP请求

jmeter连接hive jmeter关联步骤_正则表达式_07

   3.添加XPath提取器

jmeter连接hive jmeter关联步骤_HTTP_08

   4.添加HTTP请求-百度

jmeter连接hive jmeter关联步骤_HTTP_09

   5.添加查看结果树

jmeter连接hive jmeter关联步骤_HTTP_10

   注:如果XPath报错,勾选Use Tidy的Quiet可能有效

  参数

   Use Tidy (tolerant parser):如果勾选此项,则使用Tidy将HTML响应解析为XHTML。当需要处理的页面是HTML格式时,必须选中该选项,当需要处理的页面是XML或XHTML格式(例如,RSS返回)时,取消选中该选项。

   引用名称:存放提取出的值的参数

   XPath Query:用于提取值的XPath表达式

   匹配数字:如果XPath路径查询导致许多结果,则可以选择提取哪个作为变量

    0:表示随机

    -1:表示提取所有结果(默认值),它们将被命名为<变量名>_N(其中N从1到结果的个数)

    X:表示提取第X个结果。如果这个x大于匹配项的数量,则不返回任何内容。将使用默认值

   缺省值:参数的默认值

 Json提取器

  添加方式:测试计划->线程组->HTTP请求->后置处理器->JSON提取器

  步骤

   1.添加线程组

jmeter连接hive jmeter关联步骤_jmeter连接hive_11

   2.添加HTTP请求

jmeter连接hive jmeter关联步骤_线程组_12

   3.添加JSON提取器

jmeter连接hive jmeter关联步骤_HTTP_13

   4.添加HTTP请求

jmeter连接hive jmeter关联步骤_线程组_14

   5.添加查看结果树

jmeter连接hive jmeter关联步骤_线程组_15

  参数设置

   Names of created variables:存放提取出的值的参数

   JSON Path Expressions:JSON路径表达式

   Match No.(0 for Random):取第几个

   Compute concatenation var(suffix _ALL):是否同级所有,即将匹配到的所有值保存,名为‘变量名_ALL’

   Default Values:缺省值,没取到就用这里填的值

   注:获取多个值时,变量名、json、匹配值、缺省值要用分号间隔开

 跨线程组关联

  当有依赖关系的两个请求(一个请求的入参是另一个请求返回的数据),放入到不同的线程组中时,就不能使用提取器保存的变量来传递参数值,而是要使用Jmeter属性来传递。

  jmeter属性配置方法

   函数实现

    __setProperty函数:将值保存成jmeter属性

    __property函数:在其他线程组中使用的property函数读取属性

    注:__setProperty函数需要通过BeanShell取样器来执行(BeanShell取样器作用:执行函数和Java脚本)

  操作步骤

   1.测试计划中设置独立运行每个线程组,让它按顺序运行

jmeter连接hive jmeter关联步骤_正则表达式_16

   2.添加线程组1

jmeter连接hive jmeter关联步骤_线程组_17

   3.添加HTTP请求

jmeter连接hive jmeter关联步骤_HTTP_18

   4.添加JSON提取器

jmeter连接hive jmeter关联步骤_正则表达式_19

   5.函数助手中创建函数

jmeter连接hive jmeter关联步骤_jmeter连接hive_20

   6.添加BeanShell 取样器,复制创建的函数

jmeter连接hive jmeter关联步骤_线程组_21

   7.添加线程组2

jmeter连接hive jmeter关联步骤_线程组_22

   8.打开函数助手,设置读取变量

jmeter连接hive jmeter关联步骤_线程组_23

   9.添加HTTP请求2

jmeter连接hive jmeter关联步骤_线程组_24

   10.添加查看结果树

jmeter连接hive jmeter关联步骤_HTTP_25

  问题

   1.设置全局变量步骤注意

    函数助手中注意设置为setProperty,并正确传值;BeanShell取样器中一定要写入;第二个HTTP请求中设置注意将中间的${city}去掉

   2.出现302重定向错误

    先检查两个线程组和其中HTTP请求的名称是否一样,如果一样,则会出现302错误