JMeter脚本增强之关联

在JMeter中,一般来说是通过后置处理器类型组件来实现关联的操作,这里我们常用作关联的是正则表达式提取器、JSON提取器、BeanShell后置处理程序。
操作过程(可参考Loadrunner11操作手册的关联这里简单说一下)
第一步:找到出错的请求(脚本为phpwind论坛发帖脚本),这里出错的请求是:提交发帖
第二步:找到可疑数据 这里可疑数据是:7809ebd3(每次都不一样)
第三步:找到可以数据出现的位置(在响应数据中查找)
在这里插入图片描述

然后调试正则表达式或json表达式
在这里插入图片描述

第四步:使用正则表达式提取器,保存服务器响应数据
在这里插入图片描述

第五步:替换数据
在这里插入图片描述

到这里整个操作流程就说完了,接下来我们看一下正则表达式提取器的各个选项:
在这里插入图片描述

·Apply to:用来指定正则表达式的起效范围。
·Main sample:对主请求有效
·Sub-samples:对子请求有效
那什么是主请求,什么是子请求?
在这里插入图片描述

以打开首页为例,在察看结果树当中发现打开首页有个+号,里面有打开首页-0和打开首页-1,打开首页-0为子请求,打开首页-1为主请求(+号里面的最后一个为主请求,其余为子请求)
·JMeter Variable Name to use:对Jmeter的变量有效,该处只需要填写变量、参数名称即可。
一般是用来对数据进行二次处理的,第一次获取的数据为pa,要在这里面再次找到数据,这个时候就可以使用该选项
在这里插入图片描述

·要检查的响应字段:是用来指定正则表达式的对响应的处理对象的选项。
·引用名称:即变量名称、参数名称,由用户自定义,建议有意义即可。
·正则表达式:该处填写的是用来查找和匹配数据的正则表达式。
在正则表达式中,()表示提取数据
万能正则表达式
服务器返回的是:左边界value右边界
则只需要将value替换为(.*?)即可。
·模板:该处填写的是位置变量 N N N,或者字符串常量
· N N N:N为正整数,表示将正则表达式中第N对括号的值存入变量
·字符串常量: N N N以外的都叫常量字符串。表示将常量的值直接赋值给变量。
·匹配数字:该处可以填写的数字有3种:
·正整数N:表示将第N次匹配的值赋值给变量
·数字0:表示将N次匹配到的结果随机抽取一个赋值给变量。
·负数:一般填写为-1,表示将所有匹配到的结果,以类似于数组的方式存入参数数组。
效果为:
ParamName_1=value1,
ParamName_2=value2,…,
ParamName_N=valueN
同时会生成一个参数叫:ParamName_matchNr=N,用来存储所匹配到的结果的数量。
该处默认的值为0。
一般来说,如果匹配数字为负数,则意味着对于值的使用
主要有两种情况:
·遍历:一次使用一个,有N个就使用N次。这个一般要结合foreach控制器来使用。这样就可以把N个值遍历N次:在这里插入图片描述

如果对于数值的格式有要求:要求输出名字:甲 序号:1
我们可以修改正则表达式提取器的模板进行修改
在这里插入图片描述

运行结果如下:
在这里插入图片描述

·一次性使用所有或者多个值
一般来说就需要用到后置处理器–BeanShell PostProcessor。
·BeanShell PostProcessor:
beanshell是一种基于标准的java库的脚本语言。本身是支持
java的语法的(不支持泛型)。内置了很多的jmeter的对象,用于和
jmeter进行交互。常用的方法有:
log.info() 输出信息到日志文件
vars.get() 用来获取参数的值。
vars.put() 用来给参数赋值。
props.get() 用来获取属性变量的值
props.put() 用来给属性变量赋值
prev.getResponseDataAsString() 用来获取前面取样器返回的响应信息
prev. getResponseCode() 用来获取前面取样器返回的http状态码

一般来说,我们不建议在beanshell中去进行复杂的业务逻
辑处理。如果有复杂的逻辑要处理,建议的方式为:
·将处理逻辑写成java的类,封装为jar包放入Jmeter的lib目录,然后进行调用。
·将处理逻辑扩展为自定义函数,直接在需要的地方进行调用
最终写入参数的值,是由正则表达式、模板和匹配数字三者共同决定的。关于自定义函数后面会说到,接下来看一下JSON取样器。
在这里插入图片描述

·Names of created variables:参数名,有有用户自定义。这里可以填写多个参数名,用分号分隔
·JSON Path expressions:Json Path 表达式,用于提取对应数据;这里可以填写多个表达式,用分号分隔,表达式的个数和参数名保持一致。
·Match No.(0 for Random):该处可以填写的数字有三种:
正整数N:表示将json表达式匹配到的第N个值赋值给变量
数字0:表示将所匹配到值随机抽取一个赋值给变量
负数:一般写-1,表示将所有匹配到的值以类似于数组的方式赋值给变量数组
默认值为0
·Compute concatenation var (suffix_ALL):
·Default Valuse:默认值,如果参数名有多个,则默认值必填,且使用分号进行分隔,数量和变量的数量保持一致。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷雨飞鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值