LoadRunner(四):关联

前面文章我们介绍过,关联是下一次请求用到上一次请求的数据或者响应结果,将这些数据保存到变量中,这样下次请求时直接使用该变量即可。

比如,录制登录的时候,服务器会给一个sessionID进行操作,当再次回放脚本的时候服务器又会给一个全新的认证码,而脚本录制是固定的,也就是某一次登录时的sessionID,回放的时候会生成新的sessionID,从而导致脚本执行时失败。为了确保脚本回放成功,需要动态的获取sesiionID,再将这个动态数据发回给服务器。这时就需要用到关联将服务器返回的数据进行处理并保存为参数。

下面我们介绍loadrunner常用的两种关联方法:

自动关联

VuGen提供的自动关联处理策略,它的原理是对同一脚本运行和录制时的所有服务器返回进行比较,来自动查找变化的部分,并且提示是否生成关联。

注意:使用自动关联前必须先运行一次脚本

以WebTours为例,流程如下:

1.访问WebTours首页,点击administration 链接,勾选以下配置项

​​​​​​​LoadRunner(四):关联

2.在左侧的框中单击查看框架源码,会看到有一串码,这个就是需要关联的数据

LoadRunner(四):关联

3.录制脚本

LoadRunner(四):关联

4.单击Design Studio,进行关联:

LoadRunner(四):关联

有数据的情况下,单击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);