文章目录
为什么要进行关联?
在录制生成的脚本中,录制到了一些服务器分配的数据,但是再回访的过程中,服务器又重新分配了新的数据,导致这些录制时生成的数据已经无法使用,需要使用服务器分配的最新数据。
关联可以在脚本中捕获到服务器分配的数据,存储到参数中,需要使用时从参数中取出,从而保证使用的是服务器最新分配的数据。
其实关联也属于一同特殊的参数化,只是与一般的参数化有些不同。一般的参数化的参数来源于一个文件、一个定义的table、通过sql写的一个结果集等,但关联所获得的参数是服务器响应请求所返回的一个符合条件的、动态的值。
什么时候应该做关联?
这里我用一个登录来举一个例子:
客户端向服务器发送一个登录的请求,然后服务器接受了并且给这个请求分配一个唯一的Session ID。
当用户输入用户名密码,请求登录时,该Session ID同时被发送到服务器端,但是这个ID只在当前会话中有效,当我刷新界面或者是换个账号登录,这个ID就失效啦,服务器就会给我发个新的Session ID。
但是我们录制脚本的时候录制的是第一个Session ID,那么我回放脚本的时候使用的录制时ID就不能用了,就会登录失败。。。
为了解决这个很重要的问题,我们就要使用关联功能!
怎么去做关联呢?
1.手工关联
使用手工关联我们需要找出有哪些数据是动态变化的,有时候一个脚本看不出来,我们可以录制两边找出其不同处,看这些数据是否需要关联。
1.1 使用LR自带的WinDiff工具协助找出需要关联的数据:
- 在第二份脚本中,点选VuGen的【Tools】>【Compare with Vuser…】,并选择第一份录制的脚本。
- 接着WinDiff会开启,同时显示二份脚本,并显示有差异的地方。WinDiff会以一整行黄色标示有差异的脚本,并且以红色的字体显示真正差异的文字。(假如没看到红色字体,请点选【Options】>【View】>【Show Inline Differences】)。
找到不同的部分后,复制,然后打开Recording Log或是Generation Log,按Ctrl+F,在查找窗口中粘贴差异部分的内容,点击查找找到后,查看该部分的信息,确认是客户端的请求信息还是服务器回应的信息
如果出现在$$$$$$ Request Header For Transaction With Id 3 Ended $$$$$$
这个部分,那证明是客户端发出的请求,这里是不需要做关联的。
一般做的关联都是出现在****** Response Header For Transaction With Id 7