去银行办业务,进银行的门,大堂经理给你一张业务号,拿着这张业务号,去柜台办理业务。--录制下来
第二天又去银行,还是拿着这张业务号,去柜台办理业务,柜员就不理你了,因为这张业务号是昨天的。--回放过程
LoadRunner 录制时只会死记下各种数据,从来出现遇到动态数据时,回放失败的情况。这时候就要用到关联
先引用几张图
录制过程:
1、输入用户名密码登录
2、服务器端返回一个sesiionID@@@12345
3、客户端拿着获得sesiionID@@@12345进一步请求服务器信息。
4、服务器返回客户端想要的信息
回放过程:
1、输入用户名密码登录
2、客户端返回新的sesiionID@@@23456
3、因为脚本中的sesiionID@@@12345 是写死的,所以我们会依然拿着老的sesiionID@@@12345去向服务器请求信息
4、服务器你经过验证发现你的sesiionID@@@12345 是错误的。
为了确保脚本回放的成功,我们需要获得服务器每次返回的动态的sesiionID,再将这个动态数据发回给服务器。而关联能够帮助我们将服务器返回的数据进行处理并保存为参数。
LR11一共有3种方法进行关联: 自动关联,手动关联,边录制边关联(预关联)
实际使用过程中,主要用到手动关联和预关联
LR11提供一种比较方便的关联方法,在Tree视图中,左侧选择页面步骤,在右侧选择httpview下的response body
选中要关联的内容,右键菜单点击Create Correlation,在弹出的关联框中基本不用改,直接帮你自动生成关联。例如这里的Session
web_reg_save_param_ex(
"ParamName=CorrelationParameter_1",
"LB=userSession value=",
"RB=>\n<table border",
SEARCH_FILTERS,
"Scope=Body",
"RequestUrl=*/nav.pl*",
LAST);
除了可以关联必须关联的动态数据,还能灵活使用关联内容,存进参数,用作之后调用。
关联函数必须在请求之前,来告诉LR,下面的请求需要用到关联。
出现回放不通过时,除了脚本编写错误,基本上都是没做关联。
怎么去找脚本中需要关联的地方呢?
开始菜单-LR-有个叫Windiff的工具,以相同的手法录2遍脚本,然后比较这2个脚本,就能找出之间需要关联的部分啦,这个方法好像落伍了。。
在脚本需要插入关联的地方,我一般放在访问一个页面最前面。alt insert - add step对话框,搜索web_reg_save_param_ex函数,左右边界先都不填,打开日志中的选项,回放脚本,则会在运行日志中打印出所有被存进关联函数的部分。一般有HTML,CSS,GIF等等,需要做关联的一般在HTML内