为什么要关联动态数据呢?举个例子,在对我们平台的工作性能测试时, 在待办任务里面选择一条记录执行发送操作,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. C# 中的动态创建技术

    [转载]原文出处  http://blog.csdn.net/baiyun789/article/details/6156694 第一部分 WinForm控件在窗体中动态居中创建.删除控件及对其赋值 ...

  2. Scheduled Jobs with Custom Clock Processes in Java with Quartz and RabbitMQ

    原文地址: https://devcenter.heroku.com/articles/scheduled-jobs-custom-clock-processes-java-quartz-rabbit ...

  3. 在Xcode4.5中禁用ARC(Automatic Referencing Counting) 转

    最近升级了xcode4.5,用上了ios6的SDK.但用着用着发现一个比较烦的问题,以前很多代码提示错误,发现原来因为xcode启用了ARC,当ARC启用后会自动在代码中加入retain.releas ...

  4. [转]C++之多态性与虚函数

    面向对象程序设计中的多态性是指向不同的对象发送同一个消息,不同对象对应同一消息产生不同行为.在程序中消息就是调用函数,不同的行为就是指不同的实现方法,即执行不同的函数体.也可以这样说就是实现了“一个接 ...

  5. Flask 学习(三)模板

    Flask 学习(三)模板 Flask 为你配置 Jinja2 模板引擎.使用 render_template() 方法可以渲染模板,只需提供模板名称和需要作为参数传递给模板的变量就可简单执行. 至于 ...

  6. tomcat怎么运行servlet程序

    新建一个web project 取名 myproject 在myproject 新建一个继承了HttpServlet 的类 MyServlet 重写HttpServlet 的 dopost doget ...

  7. MySQL对索引的使用

    什么是索引 使用索引可快速访问数据库表中的特定信息.索引是对数据库表中一列或多列的值进行排序的一种结构,例如 order 表的订单号(orderNum)列.如果要按订单号查找特定订单,与必须搜索表中的 ...

  8. Objective-C:NSNumber类的常见用法

    NSNumber基本数据类型包装类: // //  main.m //  04-NSNumber // //  Created by ma c on 15/8/17. //  Copyright (c ...

  9. Informatica 常用组件Filter之三 创建FIL

    在 Designer 中,切换到 Mapping Designer 并打开映射. 选择"转换-创建". 选择"过滤器转换",然后输入新的转换名称.过滤器转换的命 ...

  10. DeDeCMS(织梦)变量覆盖0day getshell

    测试方法: @Sebug.net   dis本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负! #!usr/bin/php -w <?php error_reporting( ...