LoadRunner脚本关联动态数据的最简单方法
2009-07-13 11:39
295 查看
百度或Google一下“如何在LoadRunner脚本中做关联(Correlation)”,你会搜索到在网上相互的很经典的一篇文章。洋洋洒洒近转载6000汉字,像个小百科全书。对于关联Correlation的概念,对web_reg_save_param()方法的参数的解释,你还可以参考那篇文章一下。对于如何手动关联动态数据,如果按那篇文档做,你可能需要学习2小时才能完成一个复杂场景的动态数据关联,使用本文档下面介绍的方法,不管多么复杂只需测试2分钟就能完成关联动态数据。
为什么要关联动态数据呢?举个例子,在对我们平台的流时,在待办任务里面选择一条记录执行发送操作,性能测试工作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是我们起的变量名字。完整的方法如下:
修改后的Action.c的脚本,见下图:
为什么要关联动态数据呢?举个例子,在对我们平台的流时,在待办任务里面选择一条记录执行发送操作,性能测试工作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); |
相关文章推荐
- LoadRunner脚本关联动态数据的最简单方法
- MAC Tree 实现的方法(NSOutlineView) 2 (实现了简单的选择和动态修改不同的数据)
- 2种方法简单爬取JS加载的动态数据
- LoadRunner监控Tomcat的管理页面上数据方法的脚本
- Android之JNI动态注册native方法和JNI数据简单使用
- 使用GNS3与SecureCRT关联自动导入脚本(最简单方法)
- python脚本实现数据导出excel格式的简单方法(推荐)
- 使用GNS3与SecureCRT关联自动导入脚本(最简单方法)
- OJ常用动态数据输入方法 C++简单的栈编写及使用
- 二级下拉菜单关联(数据库版)的简单方法
- javascript 动态脚本添加的简单方法
- 插入关联表数据的优化方法
- 用shell脚本在mysql表中批量插入数据的方法
- PHP实现更新中间关联表数据的两种方法
- 动态加载JS脚本的4种方法
- LoadRunner录制脚本时报加载GrooveUtil.dll出错的解决方法
- loadrunner关联及web_reg_save_param方法浅析
- Protobuf 数据简单传输方法
- Echarts 饼图,折线图,柱状图,条形图ajax动态渲染数据方法汇总
- RDLC报表系列(一) 简单的动态数据绑定和配置