loadrunner中的correlation

上一篇 / 下一篇  2015-01-26 15:54:45

所谓的关联(correlation)就是把脚本中某些写死的(hard-coded)数据,转变成是撷取自服务器所送的、动态的、每次都不一样的数据。
    举一个常见的例子,有些比较聪明的服务器,在每个浏览器第一次跟它要数据时,都会在数据中夹带一个唯一的辨识码,接下来就会利用这个辨识码来辨识跟它要数 据的是不是同一个浏览器。一般称这个辨识码为Session ID。对于每个新的交易,服务器都会产生新的Session ID给浏览器。这也就是为什么执行脚本会失败的原因,因为VuGen还是用旧的Session ID向服务器要数据,服务器会发现这个Session ID是失效的或是它根本不认识这个Session ID,当然就不会传送正确的网页数据给VuGen了。
    我的理解就是,在录制脚本时,浏览器跟服务器的对话,服务器都会对这个浏览器的操作发送些动态的辨别码,但后来回放脚本的时候,浏览器还用以前服务器发送 的旧辨别码跟服务器对话,服务器就会认出那是以前的“过期”的辨别码,就会拒绝此浏览器对服务器所做的操作,当然回放也就失败了。为了避免回放失败,在浏 览器跟服务器对话之前的脚本里加上关联语句,再回放脚本时,浏览器就会向服务器发送一个动态的辨别码,服务器看到这个动态的辨别码是以前没用过的,就会同 意此浏览器对服务器的操作;因为关联语句发出的是动态辨别码,所以在回放中的每次迭代和每个vuser的辨别码都不同,可以顺利回放成功。

             loadrunner中为什么要设置关联?为什么有些脚本不设置关联就不能回放?

    因为有些server每 次访问的时候都会发送给你一个不同的数据,让你再再把这个数据返回给server,server验证正确了之后才继续提供给你后面的数据,回放时不能通过 是因为你返回给server的数据还是录制时的那个,(因为在你录制的脚本过程中loadrunner是把之前浏览器的操作一点儿不动的录制下来)所以回 放不成功,通过关联可以把每次访问server时server提供的那个值做为返回值

                      Loadrunner关联(一)什么时候需要做关联

    1.关联的含义

    关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找, 得到相应的值,已变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联。

 

     曾经面试的一个问题:关联参数与参数化的区别

     其实关联也属于一种特殊的参数化,只是与一般的参数化有些不同

     一般的参数化的参数来源于一个文件、一个定义的table、通过sql写的一个结果集等,但关联所获得的参数是服务器响应请求所返回的一个符合条件的、动态的值


    2.什么时候需要做关联

    要想弄清这个问题,我们首先要知道客户端与服务器端的请求与响应的过程,拿一个登录的过程我们来看一下:

   过程说明:

    客户端发出获得登录页面的请求

    服务器端得到该请求后,返回登录页面,同时动态生成一个Session Id

    当用户输入用户名密码,请求登录时,该Session Id同时被发送到服务器端

    如果该Session Id在当前会话中有效,那么返回登录成功的页面,如果不正确则登录失败

    在第一次录制过程中loadrunner把这个值记录了下来,写到了脚本中,但再次回放时,客户端发出同样的请求,而服务器端再一次动态的生成了Session Id,此时客户端发出的请求就是错误的,为了获得这个动态的Session Id我们这里用到了关联。

    所以我们得出结论:

    当客户端的某个请求是随着服务器端的相应而动态变化的时候,我们就需要用到关联

    当然我们在录制脚本时应该对测试的项目进行适当的了解,知道哪些请求需要用到服务器响应的动态值,如果我们不明确那些值需要做关联的话,我们也可以将脚本录制两遍,通过对比脚本的方法来查找需要关联的部分,但并不是说两次录制的所有不同点都需要关联,这个要具体情况具体分析

           自动关联包含两种机制:

   一 种是loadrunner通过对比录制和回放时服务器响应的不同,而提示用户是否进行关联,用户可自己创建关联规则,这个功能可以方便的使我们获得需要关 联的部分,但同时也存在一定的问题,如:自动关联所检测到的关联点不一定真的需要进行关联,这要我们更具实际情况进行判断;有些需要关联的动态数据自动关 联无法找到,这是就需要做手动关联

    另一种是loadrunner自带的自动关联规则,在录制脚本时,会根据这些规则自动创建关联


            自动关联的步骤如下:


   1.开启自动关联选项

      刚才提到的两种关联机制,如果用户想使用loadrunner自带的关联规则创建关联,那么需要在  【RecordingOptions】>【Internet Protocol】>【Correlation】中启用关联规则,选中“Enable correlation during recording”,当录制这些应用系统的脚本时,VuGen会在脚本中自动建立关联。也可以在【Recording Options】>【Internet Protocol】>【Correlation】中添加关联规则,达到自动关联的目的。

      如果需要在回放脚本时,loadrunner自动检测需要关联的部分,那么需要在【Tools】> 【general options】>【Correlation】中选中“save correlation information during replay”和“show scan for correlations popup after replay of vuser”,当回放玩脚本后,会弹出Scan action for correlation窗口,进行关联点的搜索

      2.录制脚本

        录制脚本的过程在这里就不多说了

     3.回放脚本

        如果录制的脚本存在需要做关联的部分,那么在回放脚本时会出现错误

     4.系统自动弹出检测关联对话框,或手动启动关联检测对话框

        如果选择了【Tools】>【general options】>【Correlation】中的“save correlation information during replay”和“show scan for correlations popup after replay of vuser”,那么在回放脚本后会自动弹出“Scan action for correlation”窗口,点击“yes”进行自动查找

如果没有选择上述设置,那么也可以按CTRL+F8启动关联自动搜索

       5.查看系统检测出的关联点进行关联设置

    如果在录制和回放中存在差异,loadrunner会在“Correlation Results”中列出需要做关联的内容,用鼠标点击一条需要做关联的内容,点击“Create Rule”,系统会显示获得当前数据的规则,点击“yes”,完成规则的创建,同时查看脚本中增加了一个web_reg_save_param函数

    也可以点击【Correlate】按钮创建关联,一笔一笔做,或是按下【Correlate All】让VuGen一次就对所有的数据建立关联。

    注意:由于Correlation Studio会找出所有有变动的数据,但是并不是所有的数据都需要做关联,所以不建议您直接用【Correlate All】。

      6.回放脚本检查关联的正确性

   创建好关联后,回放脚本检查关联的正确性


TAG:

 

评分:0

我来说两句

Open Toolbar