【转】LR11中关联设置
转自:
LR中关联建议都手动进行,自动不好用,也容易出错。
在LR中我们什么要做关联:
1、关联解决的是动态数据的参数化。
2、关联的数据一定是服务器响应的数据。
3、服务器响应过来的数据在后面的服务还要使用。
手动关联应该如何做?
手动关联的执行步骤大致如下:
①、使用相同的业务流程与数据,录制两份一样的脚本。
②、找出录制好的两份脚本中不同的地方。(可以使用LR自带的对比工具:tools -->"compare with Script"),确定脚本中那些地方需要关联。
③、确定脚本中关联函数的插入位置。
④、在脚本中使用web_reg_save_param函数来手动新建关联。
⑤、在脚本中把要关联的动态值参数化。
⑥、回放脚本来验证关联是否成功。
一、使用相同的业务流程与数据,录制两份一样的脚本。
录制方法参考前面博客()的录制方法。
二、找出录制好的两份脚本中不同的地方。(可以使用LR自带的对比工具:tools -->"compare with Script")
使用LR自带的对比工具WinDif:tools -->"compare with Script",来进行对比所录制的两份脚本。
自行对比两份脚本中有差异的地方:
①、每一个差异都有可能是需要做关联。
②、思考时间是不需要做关联。
③、对于图片、css等内容,一般都不是我们关心的,我们需要关联服务器返回信息,Header还是Body。
确定好需要关联的内容后,复制下来。打开Generation Log,按Ctrl+F,在查找窗口中粘贴差异部分的内容,点击查找找到后,查看该部分
的信息,确认是客户端的请求信息还是服务器回应的信息:
①、如果出现在$$$$$$ Request Header For Transaction With Id 3 Ended $$$$$$这个部分,那证明是客户端发出的请求,这里是不需要做关联的。
②、一般做的关联都是出现在****** Response Header For Transaction With Id 7 ******和****** Response Body For Transaction With Id 7 ******中的部分。
在找到这个信息后,需要记录如下信息:
记录这个不同数据之前的内容和之后的内容:
a、记录这个不同数据之前的内容和之后的内容
b、记录这个不同数据出现的位置,是Header还是Body
三、确定脚本中关联函数的插入位置。
注意:关联函数是一个注册型函数,我们需要告诉vugen你下面的请求返回是需要被处理的,所以该函数必须要写在我们的请求
前,否则就会提示无法获得关联结果的错误。这是绝大多数使用关联新手最容易犯的错误。
在之前的步骤,我们已经generation log中确定了需要关联的动态数据,复制动态值部分进行关联就可以进行关联了,但是我们的关联函数 web_reg_save_param应该插入到脚本的什么位置呢??
确定位置的方法:
①、所以我们需要再重新执行一遍脚本,而且这次会开启所有的Log。
在VuGen中点选【Vuser】>【Run-Time Settings】>【General】>【Log】>勾选【Enable logging】、【Always sends messages】、【Extended log】以及【Extended log】下的所有选项,按下【OK】,然后就可以执行脚本了。
②执行完脚本之后,复制前面在Generation Log找到的动态值所在行的其他脚本内容(而不是动态值本身)在Repaly Log中进行查找。找到字符串后,在字符串前面会有Action.c(4):,这个4就是到时候要插入web_reg_save_param函数的位置。
也就是要插入到脚本的第4行。在脚本中,使用ctrl+g就可以到达指定的行。
为什么关联函数要插入到第4行?而不是动态值所在的那一行?因为web_reg_save_param函数为注册函数,必须在动态值的前面,相当于先声明,后作用。注意:并不是在动态值的前面就行了,一定得在该动态值所属的请求前。
四、在脚本中使用web_reg_save_param函数来手动新建关联
1、在确定好的插入关联函数的位置,右键"insert"—>'new step'
2、在Find Function里面输入:web_reg_save_param 查找找关联函数。点击OK。
3、填写关联函数对应值。
【关联函数参数说明】
ParamName:存放动态数据的参数名称。取的名称尽量见名知意。关联出来的内容将会存放在这个命名的参数中。
Left Boundary :左边界,这里是用来填写我们关联时对于数据处理的左匹配内容规则。该属性必须有,并且区分大小写。凡是对话框后面又ABC按钮的,说明对应的值支持参数化。
Match case:区分大小写 。
Binary data:二进制数据 如果需要关联的内容是2进制(16进制)。那么我们需要选填该选项。
use # for any digit: 使用#表示任何数字。
使用^作为字母数字字符的通配符。all:表示所有的字母数字字符。 lowercase:表示所有小写的字母数字字符。uppercase:表示所有大写的字母数字字符。
Right Boundary : 右边界。这里是用来填写我们关联时对于数据处理的左匹配内容规则。规则同左边界。
Instance:指明从第几次出现的值开始才是要撷取的数据。此属性质可有可无,默认值是1。假如值为All,则所有找到符合的数据会储存在数组中。 这个关键字在很多函数中都有应用,对应脚本的ORD=关键字。
Relative FrameID:这个选项是专门针对框架结构的网站设计的,我们有些时候需要关联的内容是在框架中的某一个中,这个时候我们就需要说明所关联的页面是框架中的那一个了。
Notfound:指定当找不到要找的动态数据时该怎么处置。
Notfound=error:当找不到动态数据时,发出一个错误讯息。假如没设定此属性,此为LoadRunner的默认值。
Notfound=warning:当找不到动态数据时,不发出错误讯息,只发出警告,脚本也会继续执行下去不会中断。在对角本除错时,可以使用此属性值。
Search in:搜寻的范围。可以是Headers(只搜寻headers)、Body(只搜寻body部分,不搜寻header)、 Noresource(只搜寻body部分,不搜寻header与resource)或是All(搜寻全部范围,此为默认值)。此属性质可有可无。
SaveLength:从offset开始算起,到指定的长度内的字符串,才储存到参数中。此参数可有可无,默认值是-1,表示储存到结尾整个字符串。
SaveOffset:当找到符合的动态数据时,从第几个字符开始才开始储存到参数中。此属性不可为负数,其默认值为0。
Ignore redirections:忽略重定向 如果该项被选中,则不会到重定向页面的Response中去查找,默认选项是no
总结:关联函数中的这些参数存在的目的主要是帮助用户去确定需要关联内容的唯一性,所以使用时应灵活运用,只有ParamName、LB、RB这三个参数是必须的,其他的都不是,但一般会再用上Notfound=error,这样如果没关联到我们容易发现错误。
五、在脚本中把要关联的动态值参数化。
在脚本中选中选择需要关联的动态值,右键>Replace with a Parameter>将参数名改为前面设置关联函数中的参数名称。paramerer type:采用默认的file即可。点击OK按钮。.参数化后被参数的动态值部分粉红色显示。
六、回放脚本来验证关联是否成功。
回放时,开启所有log.
回放后查看结果view>Test Resuilts来查看回放通过情况。
附:关联中常用的转义内容
\a 铃声(警告)
\b Backspace键
\f 换页
\n换行
\r回车
\t水平制表符
\v垂直制表符
\'单引号标记
\"双引号标记
\\反斜杠
\? 文本文号
\ooo ASCII 字符-八进制
支持的转换字符有:
%a ASCII 表示形式
%BX 大端(网络顺序)十六进制
%BO大端(网络顺序)八进制
%BD大端(网络顺序)十进制
%LX小端十六进制
%LO小端八进制
%LD小端十进制
一般情况下,单引号‘的转义比较常见。