LoadRunner(四):关联
前面文章我们介绍过,关联是下一次请求用到上一次请求的数据或者响应结果,将这些数据保存到变量中,这样下次请求时直接使用该变量即可。
比如,录制登录的时候,服务器会给一个sessionID进行操作,当再次回放脚本的时候服务器又会给一个全新的认证码,而脚本录制是固定的,也就是某一次登录时的sessionID,回放的时候会生成新的sessionID,从而导致脚本执行时失败。为了确保脚本回放成功,需要动态的获取sesiionID,再将这个动态数据发回给服务器。这时就需要用到关联,将服务器返回的数据进行处理并保存为参数。
下面我们介绍loadrunner常用的两种关联方法:
自动关联
VuGen提供的自动关联处理策略,它的原理是对同一脚本运行和录制时的所有服务器返回进行比较,来自动查找变化的部分,并且提示是否生成关联。
注意:使用自动关联前必须先运行一次脚本。
以WebTours为例,流程如下:
1.访问WebTours首页,点击administration 链接,勾选以下配置项
2.在左侧的框中单击查看框架源码,会看到有一串码,这个就是需要关联的数据
3.录制脚本
4.单击Design Studio,进行关联:
有数据的情况下,单击Correlate按钮后,则生成一个关联,关联的前后内容和所属Action也被列出来。自动关联结束。脚本中会自动添加关联函数web_reg_save_param_*函数并将被关联的内容保存到一个参数中去
5.action脚本中生成了如下函数:
/*Correlation comment - Do not change! Original value='126029.321425678zticzDDpccAiDDDDDiiQfpHQQDcf' Name ='userSession' Type ='ResponseBased'*/
web_reg_save_param_regexp(
"ParamName=userSession",//存储关联内容的变量名
"RegExp=name=\"userSession\"\\ value=\"(.*?)\"/>\\\n<table\\ border",
SEARCH_FILTERS,//正则表达式,包含一个分组
"Scope=Body",//在http协议哪个部分进行查找
"IgnoreRedirections=No",//是否忽略重定向,No:不忽略
"RequestUrl=*/nav.pl*",//适用请求的url类型
LAST);
手动关联
loadruuner认为不需要关联的数据,但是又想取出来,这时就用手动关联。使用web_reg_save_param函数建立关联
注意:
关联函数是一个注册型函数,需要告诉VuGen下一个请求返回是需要被处理的。所以该函数必须要写在请求前,如下,否则就会提示无法获得关联结果的错误。
1.函数定义:
int web_reg_save_param( const char *ParamName, <List of Attributes>, LAST );
第一部分(const char *ParamName):参数名,用双引号括起来,逗号分开
第二部分(<List of Attributes>):包括LB、RB、RelFameID、Ord、Search、SaveOffiset、SaveLen等。
第三部分(LAST ):结束标志。
通过按F1 键打开帮助文档,搜索此函数,查看具体用法。
2.例子:手动关联首页的administration
web_reg_save_param("administration",
"LB=\<b\>", "RB=\<\/b\>\<\/A\> link", LAST );
web_reg_save_param("admin",
"LB=admin.pl\" target=body ><b>", "RB=</b></A> link.", LAST );
web_url("WebTours",
"URL=http://localhost:1080/WebTours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t4.inf",
"Mode=HTML",
LAST);