为什么要关联动态数据呢?举个例子,在对我们平台的工作性能测试时, 在待办任务里面选择一条记录执行发送操作,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通过UIHint和自定义视图显示RadioButtonList

    在Product类中有一个显示删除状态的属性DelFlag,在编辑视图页,对于所有的删除状态以RadioButtonList显示出来,如果RadioButtonList选项的value值与当前mode ...

  2. 委托、多播委托、泛型委托Func,Action,Predicate,ExpressionTree

    当试图通过一个事件触发多个方法,抽象出泛型行为的时候,或许可以考虑使用委托.     通过委托构造函数或委托变量把方法赋值给委托 private delegate double DiscountDel ...

  3. velocity.properties配置说明

    1.Runtime  Log runtime.log  =  velocity.log 用以指定 Velocity 运行时日志文件的路劲和日志文件名,如不是全限定的绝对路径,系统会认为想对于 当前目录 ...

  4. 序列化人人网框架下的DAO?也就是在Spring下序列化DAO的问题(spring+quartz集群下)

    人人网框架地址:http://code.google.com/p/paoding-rose/ 问题发生: 用Quartz作集群时用JobDataMap传递DAO,提示DAO未序列化,可框架的DAO为接 ...

  5. Android.mk中引用第3方动态库

    Android.mk 文件内容: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOC ...

  6. C语言的32个保留字

    auto :声明自动变量 double :声明双精度变量或函数 int: 声明整型变量或函数 struct:声明结构体变量或函数 break:跳出当前循环 else :条件语句否定分支(与 if 连用 ...

  7. MySQL中limit的用法

    SELECT * FROM table  LIMIT [offset,] rows | rows OFFSET offset   LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数.L ...

  8. 用于Web开发的8 个最好的跨平台编辑器

    1) Best Cross Platform IDE - Brackets Brackets是一个在前端Web开发和设计人员中最流行的开放源码IDE/代码编辑器之一.它拥有一些实用工具能够将HTML ...

  9. tp 生成静态页

    $this->fetch()返回的是html 可以直接写入到HTML文件内生成静态页

  10. 升级mojave后的小问题解决

    首先是xcode没了,我到苹果软件市场上重新下载了一个,可以了. 然后是virtualbox无法打开了,现实版本不兼容,我到官网重新下载了一个最新的6.0.然后就可以正常打开了,并且是无感升级,原来的 ...