关联是用来处理请求之间的依赖的。对于关联来说,在工具层面需要去完成的操作有2个:
先存(先将服务器返回的动态数据保存到变量or参数中)
后用(将后续的静态的数据替换为动态的变量)
JMeter的关联实现一般都和后置处理器有关,常用的用于关联处理的有:正则表达式提取器和Json提取器。
Apply to,该选项是用来控制正则表达式提取器的作用对象,可选对象有三种:
main sample,主请求
sub sample,子请求
JMeter Variable,JMeter的变量
要检查的响应字段,指定正则检测的源字符串,主要用到2个选项:
主体,指响应主体
信息头,指响应信息头
引用名称,即变量名称,可由用户自定义,有意义即可
正则表达式,即用来提取数据的正则表达式
所有的正则表达式都建议在查看结果树种的regexp tester模式下进行测试通过
要提取数据,则需要用到括号
万能正则的写法:一般来说,服务器返回的数据会发生变化,但是返回数据的逻辑一般是不变的,那么我们就可以保留数据的左右边界,只需要将数据本身替换为(.*?)即可
模板,该处可以填写的字符串有2种:
$N$,其中N表示正整数,比如$1$和$2$等。$N$表示位置变量,又叫组变量,表示将正则表达式中第N对括号所对应的值赋值给变量
常量,除了$N$以外的所有字符串都表示字符串常量,即将字符串本身赋值给变量(位置变量和常量可以自由组合)
匹配数字,该处可以填写的数字有3种:
0,是默认值,表示随机,即将多次找到的结果随机抽取一个赋值给变量
正整数N,表示将第N次找到的结果赋值给变量
负数,一般填写-1,表示将所有找到的值以类似数组的方式存入变量数组,效果为varName_1=value1, varName_2=value2,并且同时会自动生成一个变量varName_matchNr=N用来存储值得个数
一般来说当匹配数字为-1时,就表示我们对变量数组中的值的处理诉求通常有2种:
遍历:表示一次使用一个,使用N次,一般结合foreach控制器来实现,将变量名作为输入变量前缀
allin:表示一次使用所有的值,值要按业务进行拼装,一般结合beanshell后置处理器来实现数据拼装
缺省值,当正则表达式找不到内容时,则返回缺省值的内容