LoadRunner学习笔记4-LoadRunner VuGen脚本增强之关联
关联其实就是动态地获取服务器返回的某些值,很多人觉得获取的是服务器返回的动态值,其实即使是不动态的值,也完全可以用关联。
一般出现以下几种情况需要考虑是否使用关联:
1)服务器返回中存在动态变化的值,一般就是类似Session的无规则数据。
2)运行后没有报错,但是也没有产生记录。
3)后续的操作要使用到之前的数据。例如,回帖操作要知道之前发帖子的tid才能实现。
关联函数用法:
web_reg_save_param(“关联的名称,可自定义”,”LB=左边界”,”RB=右边界”,LAST);
关联函数就是通过指定的左右边界来获取值的。
一、设置WebTours关联
如下图设置之后,就可以使用WebTours(LoadRunner提供的示例程序,启动菜单为“开始->HP LoadRunner->Samples->web”)的登录练习关联了。
二、自动关联
LoadRunner中的关联可以通过自动与手动两种方式来完成,先学习自动关联。首先录制一次设置关联后的登录、退出操作。关键代码如下:
web_submit_data("login.pl",
"Action=http://127.0.0.1:1080/WebTours/login.pl",
"Method=POST",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
"Snapshot=t2.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession",//多了一个UserSession "Value=119857.223572296zVzfVffpQDHfDzQQApQDfzcf", ENDITEM,
"Name=username", "Value=besttest", ENDITEM,
"Name=password", "Value=besttest", ENDITEM,
"Name=JSFormSubmit", "Value=on", ENDITEM,
"Name=login.x", "Value=43", ENDITEM,
"Name=login.y", "Value=15", ENDITEM,
LAST);
观察上面代码发现,提交登录请求的函数中比之前多了一个userSession,这就是需要关联的。此时,回放脚本会出现错误。
1.扫描关联,选择菜单中的Vuser->Scan Script for Correlations选项,出现如下提示后,单击Yes按钮。
2.等待一会儿后便可以扫描出关联,然后单击右侧的Remove Correclation按钮完成,回到代码中即可看到关联函数出现了。
提示:loadRunner中自动关联存在问题,有时候会出现无法扫描关联的情况,具体原因未知。所以不推荐用此方法,推荐使用手动关联。
三、手动关联
找到需要关联的地方,可以使用如下几种技巧:
1)根据经验,一般需要关联的值会在HTML的hidden标签中出现。
2)录制两份相同业务流程的脚本,然后利用Tools菜单下的Compare with Script功能来对比,一般不一样的地方需要考虑是否关联。
利用上述技巧,手动关联的步骤如下:
1.单击Tree按钮切换到Tree视图。
2.因为userSession是在提交请求后返回的,所以以web_submit_data为起点查看需要关联的值到底在哪里。
3.单击左侧Action树中的Url:WebTours,再切换到HTTP View视图,从上到下查看Path中是否存在userSession。在Path为/WebTours、nav.pl?in=home下找到userSession,果然藏在了hidden标签里,如下图所示:
4.找到后要分析它的左右边界。这里有个小技巧是,一般以需要关联的值为中心,以“向左走,向右走”来划定边界。那么左边界就是“name=userSession value=”,右边界就是“>”。
5.在代码中添加关联函数,并在web_submit_data中使用{userSession}来替换一长串数字字母,关键代码如下所示:
//关联userSession
//<input type=hidden name=userSession value=119857.223572296zVzfVffpQDHfDzQQApQDfzcf>
web_reg_save_param("userSession",
"LB=userSession value=",
"RB=>",
LAST);
//打开首页
web_url("WebTours",
"URL=http://127.0.0.1:1080/WebTours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t4.inf",
"Mode=HTML",
LAST);
//提交登录请求
web_submit_data("login.pl",
"Action=http://127.0.0.1:1080/WebTours/login.pl",
"Method=POST",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
"Snapshot=t5.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession", "Value={userSession}", ENDITEM, //此处替换
"Name=username", "Value=besttest", ENDITEM,
"Name=password", "Value=besttest", ENDITEM,
"Name=JSFormSubmit", "Value=on", ENDITEM,
"Name=login.x", "Value=33", ENDITEM,
"Name=login.y", "Value=9", ENDITEM,
LAST);
另外,还可以选择Vuser菜单下的Insert->New Step来插入关联函数。
四、关联函数扩展
LoadRunner中有如下两个函数对关联进行了扩展,其实就是增加了正则表达式和Xpath的识别。
//可以识别正则表达式
web_reg_save_param_ex("ParamName=关联名",
"LB/RE=LL[0-9]*",//加上RE,表示可以使用正则表达式
"RB?RE=.RR",
LAST);
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。具体可查找相关资料学习。
//可以识别Xpath
web_reg_save_param_xpath("ParamName=关联名",
"QueryString=xpath路径值",
LAST);
Xpah是一门在XML文档中查找信息的语言。Xpath用于在Xpath文档中通过元素和属性进行导航。具体用法与web_reg_save_param类似,只是特性上做了扩展。