一、关联的意义
1.关联的含义
关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,以变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联。
其实关联也属于一同特殊的参数化,只是与一般的参数化有些不同:一般的参数化的参数来源于一个文件、一个定义的table、通过sql写的一个结果集等,但关联所获得的参数是服务器响应请求所返回的一个符合条件的、动态的值。
2.什么时候需要做关联
要想弄清这个问题,我们首先要知道客户端与服务器端的请求与响应的过程。
过程说明:
客户端发出获得登录页面的请求
服务器端得到该请求后,返回给客户端一个登录页面,同时动态生成一个Session Id
当用户输入用户名密码,请求登录时,该Session Id同时被发送到服务器端
如果该Session Id在当前会话中有效,那么返回登录成功的页面,如果不正确则登录失败
在第一次录制过程中loadrunner把session id 这个值记录了下来,写到了脚本中。但是再次回放时,客户端以同样的session id 发出请求,而服务器端再一次动态的生成了Session Id,此时两个session id 不一样,产生冲突,那么客户端发出的请求就是错误的。为了动态的获得这个Session Id,我们这里就要用到关联。
所以我们得出结论:
当客户端的某个请求是随着服务器端的相应而动态变化的时候,我们就需要用到关联。
当然我们在录制脚本时应该对测试的项目进行适当的了解,知道哪些请求需要用到服务器响应的动态值,如果我们不明确那些值需要做关联的话,我们也可以将脚本录制两遍,通过对比脚本的方法来查找需要关联的部分,但并不是说两次录制的所有不同点都需要关联,这个要具体情况具体分析。
二、自动关联 和 手动关联 的实现步骤
A、自动关联包含两种机制:
一种是loadrunner通过对比录制和回放时服务器响应的不同,而提示用户是否进行关联,用户可自己创建关联规则,这个功能可以方便的使我们获得需要关联的部分,但同时也存在一定的问题,如:该种自动关联所检测到的关联点不一定真的需要进行关联,这时就需要我们根据实际情况进行判断;有些需要关联的动态数据自动关联无法找到,这时就需要做手动关联。
另一种是loadrunner自带的自动关联规则,在录制脚本时,会根据这些事先选择的规则自动创建关联。
自动关联的步骤如下: