LR中关联建议都手动进行,自动不好用,也容易出错。

在LR中我们什么要做关联:
1、关联解决的是动态数据的参数化。
2、关联的数据一定是服务器响应的数据。
3、服务器响应过来的数据在后面的服务还要使用。

手动关联应该如何做?

手动关联的执行步骤大致如下:

①、使用相同的业务流程与数据,录制两份一样的脚本。

②、找出录制好的两份脚本中不同的地方。(可以使用LR自带的对比工具:tools -->"compare with Script"),确定脚本中那些地方需要关联。

③、确定脚本中关联函数的插入位置。

④、在脚本中使用web_reg_save_param函数来手动新建关联。

⑤、在脚本中把要关联的动态值参数化。

⑥、回放脚本来验证关联是否成功。

一、使用相同的业务流程与数据,录制两份一样的脚本。

    录制方法参考前面博客(win7+chrome最新版本)的录制方法。

二、找出录制好的两份脚本中不同的地方。(可以使用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小端十进制

一般情况下,单引号‘的转义比较常见。

【笔记】LR11中关联设置的更多相关文章

  1. [moka同学笔记]Yii2中多表关联查询(join、joinwith) (摘录)

    表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order          (id  order_name       cu ...

  2. iOS开发--应用设置及用户默认设置【2、读取应用中的设置】

            在上一节中,我们通过探讨应用的系统设置的基本功能,了解运用bundle捆绑包以及plist文件的基本开发.用户能够使用设置应用来声明他们的偏好设置,那么我们怎样去调用用户所设置的参数呢 ...

  3. LR中日志设置和日志函数

    LR中日志参数的设置与使用 1.Run-Time Setting日志参数的设置 在loadrunner的vuser菜单下的Run-Time Setting的General的LOG选项中可以对在执行脚本 ...

  4. [ios-必看] WWDC 2013 Session笔记 - iOS7中的多任务【转】

    感谢:http://onevcat.com/2013/08/ios7-background-multitask/ http://www.objc.io/issue-5/multitasking.htm ...

  5. [.NET] 《Effective C#》快速笔记 - C# 中的动态编程

    <Effective C#>快速笔记 - C# 中的动态编程 静态类型和动态类型各有所长,静态类型能够让编译器帮你找出更多的错误,因为编译器能够在编译时进行大部分的检查工作.C# 是一种静 ...

  6. SQL反模式学习笔记7 多态关联

    目标:引用多个父表 反模式:使用多用途外键.这种设计也叫做多态关联,或者杂乱关联. 多态关联和EAV有着相似的特征:元数据对象的名字是存储在字符串中的. 在多态关联中,父表的名字是存储在Issue_T ...

  7. 涂抹mysql笔记-数据库中的权限体系

    涂抹mysql笔记-数据库中的权限体系<>能不能连接,主机名是否匹配.登陆使用的用户名和密码是否正确.mysql验证用户需要检查3项值:用户名.密码和主机来源(user.password. ...

  8. loadrunner 脚本优化-关联设置

    脚本优化-关联设置 by:授客 QQ:1033553122 关联的原理 关联也属于一钟特殊的参数化.一般参数化的参数来源于一个文件.一个定义的table.通过sql写的一个结果集等,但关联所获得的参数 ...

  9. gerrit上的commit msg中关联jira单号(含gerrit的安装)

    这个问题折腾了很久,前期后后大概一个月吧,终于搞定了,查了很多资料,有的不完整,有的完全就不能用,有的没说完整,所以一定要记录下来,我的心血啊. 由于公司在用的gerrit的是正式环境中的,大家都在使 ...

随机推荐

  1. T2980 LR棋盘【Dp+空间/时间优化】

    Online Judge:未知 Label:Dp+滚动+前缀和优化 题目描述 有一个长度为1*n的棋盘,有一些棋子在上面,标记为L和R. 每次操作可以把标记为L的棋子,向左移动一格,把标记为R的棋子, ...

  2. Django流程

    开始具体的代码之旅前,先来宏观地看下Django是如何处理Http Resquest的,如下图: 假设你已经在浏览器输入了 http://127.0.0.1:8000/polls/,接下来浏览器会把请 ...

  3. 关于将ECharts引入到项目中的几种方式

    方式一.在webpack中使用ECharts 1.npm安装ECharts npm install echarts --save 2.引入ECharts 通过 npm 上安装的 ECharts 和 z ...

  4. centos7的变化(转)

    centos7的变化 找了一个下午都不知道为什么找不到一些命令,终于在一个地方看到了. 地址:http://www.sa-log.com/276.html 王, 帅 2015年09月24日 于 运维日 ...

  5. js 手机号加密 中间星号表示

    var tel = String(this.memberMsg.phoneNo); var dh=tel.substr(0,3)+"******"+tel.substr(8); r ...

  6. Extjs4 似bug非bug的东西修改

    /** hzm modify * method: Ext.panel.Table.hasLockedColumns: function(columns) {} * function:支持extjs g ...

  7. Java-MyBatis-MyBatis3-XML映射文件:insert, update 和 delete

    ylbtech-Java-MyBatis-MyBatis3-XML映射文件:insert, update 和 delete 1.返回顶部 1. insert, update 和 delete 数据变更 ...

  8. error C2440 “static_cast” 无法从“void (__thiscall C* )(void)...

    1.VC6中,说可以把函数在头文件中定义为:afx_msg void OnProgress()这样 但是在VS2005及以上,要求很严格,必须函数返回值为LRESULT类型,所以在VS2005及以上, ...

  9. “玲珑杯”ACM比赛 Round #11 B题

    http://www.ifrog.cc/acm/problem/1097?contest=1013&no=1 //LIS的高端写法 #include <iostream> #inc ...

  10. github 访问加速

    http://nullpointer.pw/github%E4%BB%A3%E7%A0%81clone%E5%8A%A0%E9%80%9F.html hosts:https://raw.githubu ...