为什么要关联动态数据呢?举个例子,在对我们平台的工作性能测试时, 在待办任务里面选择一条记录执行发送操作,LoadRunner VuGen会详细记录下来流程发送操作的细节,但在回放脚本的时候会有问题。待办任务里面找不到那条记录了,已经发送到下一个环节了。另一个更易理解的例 子,在初始化查询页面,选择一条记录进行删除,录下脚本进行回放的时候会出错,记录已经删除了,回放脚本的时候服务器返回的记录不再包含那条记录,再向服 务器发送删除那条记录的请求,就报错了。关联动态数据需要我们在脚本中设置一个变量,保存从服务器返回的起标识作用的数据,发送请求的时候使用该变量代替 动态数据,这样再回放、反复测试就不会报错了。需要关联的标识性数据一般是各种主键,工作流的发送的例子很复杂,需要对流程编码、环节编码、参与者编码、 表单编码等进行关联,下面使用复杂的工作流发送的例子进行演示。

  手动关联动态数据的复杂做法是,回放脚本,在Execution Log和Recoding Log打出的信息中找需要关联的动态数据及动态数据的左右边界。甚是麻烦,我没怎么看明白。其实每次回放脚本,Recoding Log打印的信息都是一样的,也和录制脚本的时候生成的\data\RecordingLog.txt文件的内容一样。下面直接使用\data\RecordingLog.txt文件,关联动态数据的时候不再需要回放脚本,减少了关联动态数据的工作时间。

  执行同样的操作,先后录制两次脚本保存,比较一下生成的Action.c,注意动态数据不能放在 vuser_init.c文件中。自带的WinDiff工具不好使用,推荐使用Beyond Compare工具。不是所有的差异处都要关联的,WEB_URL()等方法的参数列表的先后顺序是没关系的,思考时间当然也可以不同。下图中右边的脚本 已经关联过动态数据了,如果是刚录制的两份脚本,右边的id、processId等也是32位的主键,左右两份脚本的差异一目了然,记下这些动态数据的 值。

  以左图id的值:40287ae91c4b7dbb011c4b85e17204da为例,在脚本\data\RecordingLog.txt中查找该值。找其第一次出现的地方,一般在该值的上方会有这样的字样:*** [tid=2258     Action       145] Receiving response from host 192.168.250.105:7001 ( 10/9/2008 17:40:37 )。如下图,记下40287ae91c4b7dbb011c4b85e17204da的左边界:<input type=\"hidden\" name=\"id\" value=\"和右边界:\">。注意看一下这样的左右边界是否唯一。

在刚才的脚本的文件\data\RecordingLog.txt中小心向上翻动,可以找到这样的字样:     *** [tid=2258        Action       145] Recording Function ( 10/9/2008 17:40:37 )

  该字样的下面紧接着是方法web_submit_data("jspformtaskdeal.cmd",……), 这个方法在Action.c中是同样存在的,通过这个方法我们可以知道在Action.c的什么地方插入web_reg_save_param()方法。 现在我们需要做的就是在脚本Action.c中,方法web_submit_data("jspformtaskdeal.cmd",……)的前面,紧挨 着这个方法写上web_reg_save_param()方法用于保存动态数据,其中LB、RB分别是刚才记录下的左右边界值,primary是我们起的 变量名字。完整的方法如下:

web_reg_save_param("primkey",
   "LB=<input type=\"hidden\"
name=\"id\" value=\"",
   "RB=\">",
  
LAST);

  修改后的Action.c的脚本,见下图:

LoadRunner脚本关联动态数据的最简单方法的更多相关文章

  1. datagrid动态数据添加超链接的方法

    首先,我我们要有一个json格式的datagrid_data.json文件,如下:

  2. LoadRunner 脚本学习 -- 动态储存方式和静态储存方式

    我们在定义变量是,根据定义的位置不同,分为全局变量与局部变量.我出生在一个叫“舞阳”的小县城,在这个县城中也有人名“舞阳”,前一个作用于整个县城,后一个只作用于他个人.那么从变量值的存在生存期角度,又 ...

  3. ECMall的MySQL数据调用的简单方法

    很多ecmall开发者会问,怎么使用Ecmall的mysql类库进行数据调用.从原理上来讲Ecmall的数据调用是以数据模块+模块类库的方式进行mysql数据调用的,所有数据模块都存储在include ...

  4. shell脚本处理大数据系列之(一)方法小结

    转自:http://longriver.me/?p=57 方法1: 单进程处理大规模的文件速度如(上million量级)比较慢,可以采用awk取模的方法,将文件分而治之,这样可以利用充分的利用多核CP ...

  5. 转:如何在 LoadRunner 脚本中做关联 (Correlation)

    如何在 LoadRunner 脚本中做关联 (Correlation) 当录制脚本时,VuGen会拦截client端(浏览器)与server端(网站服务器)之间的对话,并且通通记录下来,产生脚本.在V ...

  6. LoadRunner脚本参数化之自动关联和手动关联

    一.关联的意义  1.关联的含义 关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,以变量的 ...

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

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

  8. LoadRunner脚本增强技巧之自动关联

    为什么要做关联,原理很简单,录制脚本的时候,服务器会给用户一个唯一的认证码来进行操作,当再次回放脚本的时候服务器又会给一个全新的认证码,而录制好的脚本是写死的,还是拿老的认证码提交,肯定会导致脚本执行 ...

  9. Loadrunner脚本自动关联和手动关联

    关于Loadrunner关联一.什么时候需要关联 1.关联的含义        关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服 ...

随机推荐

  1. MVC扩展Filter, 通过继承AuthorizationAttribute限制IP

    为什么需要AuthorizationAttribute 在没有Authorization系统属性之前,我们可能这样判断:Request.IsAuthenticated && User. ...

  2. Android中高亮变色显示文本中的关键字

    应该是好久没有写有关技术类的文章了,前天还有人在群里问我,说群主很长时间没有分享干货了,今天分享一篇Android中TextView在大段的文字内容中如何让关键字高亮变色的文章 ,希望对大家有所帮助, ...

  3. git打pach包

    在开发中,我们发出的基线版本号常常会有一些bug须要修复,假设採用本地上库,然后再给用户新的版本号,可能会费时费力,而假设给用户我们改动后的代码让用户一行一行合入本地,也显的比較落后,假设用户那边也使 ...

  4. 成为Java高手的25个学习目标

    本文将告诉你学习Java需要达到的25个目标,希望能够对你的学习及找工作有所帮助.对比一下自己,你已经掌握了这25条中的多少 条了呢? 1.你需要精通面向对象分析与设计(OOA/OOD).涉及模式(G ...

  5. HorizontalScrollView的使用演示样例

    MainActivity例如以下: package cc.cv; import android.os.Bundle; import android.view.LayoutInflater; impor ...

  6. Objective-C:随机的读取文件中的内容

    可以通过改变当前文件的偏移量来实现文件的读取 -offsetInFile获取文件当前的位移量 -seekToFileOffset:(NSUInteger)length设置文件当前的位移量 -readD ...

  7. 基于Qt的wifi智能小车的制作(一)

     基于Qt的wifi智能小车的制作(一) 好久不写博客了,真的是有点惭愧了.翻开上一次的博客,到现在已经2个多月了,只能说是自己太懒惰了!忙是另一回事!趁今天晚上有点时间回顾下这一段时间的收获以及做的 ...

  8. 解析KML文件并提取coordinates中的经纬度坐标信息

    从googleEarh导出的kml文件 <?xml version="1.0" encoding="UTF-8"?><kml xmlns=&q ...

  9. iOS开发-UI基础Demo

    现在更多的学习资料都是xCode4.X的,发现xCode6.1还是很多东西,如果有正在学习iOS开发的可以通过Demo简单了解下iOS的UI开发~ 1.新建单视图文件: 2.新建项目名称,语言选择OC ...

  10. HDOJ-3785 寻找大富翁(优先队列)

    寻找大富翁 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...