关联:把脚本中某些写死的数据,转变成是撷取自服务器所发送的、动态的、每次都不一样的数据。
为什么要关联?食客问题,浏览器向web服务器发送第一个请求后,在服务器的回应数据包中,就有一个Session ID。以后浏览器再向服务器发送请求时,都会在请求数据包中夹带这个Session ID,Web服务器就会利用这个Session ID来辨识跟它要数据的是不是同一个浏览器。所以必须找出这个Session ID到底是什么,位于何处,然后把它撷取下来,放到某个参数中,并且取代脚本中有用到Session ID的部分,就可以成功骗过服务器。
关联分为手动关联和自动关联
手动关联:捕获关联->将函数web_reg_save_param()加在产生动态值页面的步骤前->参数化变动的值->确定执行是否正确(Extended log勾选parameter substitution)
自动关联:可以是录制中关联或者录制后关联,录制中关联的情况:会话值有一个清晰的上下文,可以自己决定关联的规则。
录制中关联,设置关联录制选项(Recording Options->Correlation->new rule->测试规则)->录制(勾选Correlate in script)->检查是否正确执行
录制后关联,录制脚本并回放后,Vugen会提示“scan action for correlation”单击“yes”建议不要使用“correlate all”
操作步骤
1、捕获关联
a、用windiff对比两个录制同样操作脚本(Tools->compare with Vuser),其中不同的地方可能就是需要关联的
b、录制脚本后进行回放,在Tree View下对比录制和回放的信息,根据回放的错误提示信息进行判断需要关联的数据。
2、确定动态数据的左右边界
将Extended log中的Data returned by server选项勾上,之后回放脚本。根据变量名,在Replay log中找到关联的数据,进而确定左右边界。
3、将关联函数添加到正确的位置
在Replay log中找到关联的数据后,双击该数据,loadrunner会自动定位发送该数据的函数,将关联函数添加在该函数的上面
4、把脚本中的动态数据用变量进行替代
关联函数web_reg_save_param()的几个重要的参数
LB:动态数据的左边界字符串,区分大小写
RB:动态数据的右边界字符串,区分大小写
ORD:表示提取第几次出现的左边界的数据,可选参数,默认为1
SaveOffset:当找到符合的动态数据时,从第几个字符开始储存到参数中,可选参数,默认为0
SaveLen:从Offset开始算起,到指定长度内的字符串,才储存到参数中,默认值是-1,表示储存到结尾的整个字符串
左右边界设定时注意双引号等特殊字符需要使用反义字符\,如“LB=DANGAN_ID\”:\””,匹配DANGAN_ID”:”