Loadrunner关联原理及方法

Loadrunner关联原理及方法

 

建议先通读一遍文档再根据文档进行实际操作选择你认为最喜欢的方法进行关联

关联原理

(图一)

如上图所示

脚本录制时我们通过登录获取的session ID①会被存储在我们客户端(浏览器)本地,下次请求时,我们就会使用session ID①进行访问。

 

图二

但是如图二所示在我们回放脚本时由于是二次登录所以我们的服务器又会产生新的session ID返回给我们这个时候我们把它标作session ID②。

但是由于脚本里面的sessionID依然是存储的上次保存的session ID①(但是由于生成了第二次session ID②,所以服务器要的是②,不是①),所以发送给服务器的时候会提示错误的session ID,这样就造成了我们登录不上去后续的业务也就不能进行下去了

因此为了解决这些类似session ID的动态值的问题我们需要在脚本有这种动态值的时候进行相应的关联原理就是当我们发现关联的参数有新值产生(动态变化时),会将新值赋给参数,在如上图就是把session ID②的值给到之前的session ID①这样就能让我们在回放时成功登录

录制时userSession=3.4164576868789

回放时userSession=3.4232456789322

怎么设置关联

设置关联通常有两种方式分别为自动关联和手动关联

a) 自动关联loadrunner11):

第一步、自动关联,需要在录制选项Recording Options里将Enable correlation during recording(启用录制时关联)给勾上

 

第二步、录制脚本,脚本录制完以后回放,如果有session值的变化第一次回放会是失败的类似下面两图

注意:不管是自动还是手动关联,需要做关联都需要先回放

 

第三步这个时候点击快捷键ctrl+F8弹出如下页面

 

然后,如果两次相应的值有变化,系统会自动用黄色的标记给标识出来,同时,在下方的correlated栏也会显示出来,然后我们只需要选中相应的值,且点击右下角的Correlate按钮就能够进行关联了

 

然后关联以后可以看到value里面保存的是这个sessionID原本的值在脚本里面产生了这样一个函数web_reg_save_param_ex(),其中ParamName是这个参数的名字,LB=后面的是sessionID的左边界RB对应的是右边界。至此,自动关联就完成啦。

但是自动关联有很大的弊端,loadrunner11的自动关联非常不完善,比如找不到或者说所以很多情况下都需要我们自己来做手动关联(Loadrunner12的自动关联使用起来体验不错可以适当减少工作量)。

b) 手动关联:

手动关联有好多种方法这里只讲一种就是通过两次录取脚本来查找其中变化的值然后根据找到的值进行函数编写手动输入左右边界值的过程

步骤:

第一步:录制测试脚本,录制两遍;

第二步:使用WinDiff工具找出两次脚本的不同,判断是否需要进行关联;

第三步:使用web_reg_save_param函数手动建立关联;

第四步:将脚本中有用到关联的数据,以参数代替;

第一步、录制测试脚本,录制两遍:

先录制一份脚本存档,取名为loginA,再依照相同的操作步骤与数据录制第二份脚本并保存,取名为loginB并关闭loginB;(两次录制的操作步骤及使用数据最好保持一模一样)。

第二步:使用WinDiff工具找出两次脚本的不同,判断是否需要进行关联;

在脚本loginA中,单击VuGen的菜单toolcompare with vuser...,并选择loginB,如下图所示:

 

然后就会看到黄色的部分都是两个脚本不同的地方(所以尽量要保持脚本一致)。可以看到红色部分,就是我们两次的userSession发生了变化

然后根据选项选择options->view->Line NumbersShow Inline Differences,如下图

 

结果显而易见,会把字符变化的部分使用红色的标记出来,这样就更方便观察了。所以最终对比的结果如下所示:

 

第三步:使用web_reg_save_param函数手动建立关联;

逐一检查差异部分,每个地方都可能是需要关联的地方但是在上图所示的例子里我们只需要关联的是userSession。

接着打开Recording Log(单一协议)或是Generation Log(多重协议)中找到这个值。可以在Generation Log的开头部分使用ctrl+f快捷键查找发生变化的值

 

经过查找我们发现userSession是在Response Body For Transcation With Id 25ID25的回执报文身体部分)这里回执给客户端的;然后,我们需要找到Id 25所对应的发送请求的路径

如下图所示,最终找到发送请求的 Request Header For Transaction With Id 25(ID25的请求报头),它的请求地址是 “/webTours/nav.pl?in=home”;

 

接下来去脚本里面进行搜索最终定位在脚本的下图部分进行的请求

 

所以,最终,我们只需要在web_submit_data前面编写关联函数就可以了如果怕有问题,可以写在脚本最前面)。

第四步:插入关联函数函数可以如下所示,也可以使用web_reg_save_param()函数区别在于web_reg_save_param_ex()函数可以使用正则表达式来过滤左右边界。

web_reg_save_param_ex(

"ParamName=CorrelationParameter_1",

"LB=userSession value=",

"RB=>\n<table border",

SEARCH_FILTERS,

"Scope=All",

"RequestUrl=*/nav.pl*",

LAST);

然后在脚本里面使用ParamNmae后面的值 CorrelationParameter_1这个参数把脚本里面的变化值value=122860.759740786zDVQzfApDcQVzzzHDHQVHpQAVQHf替换掉就会变成

value={ CorrelationParameter_1}。

最后运行脚本,体验一下关联成功以后,脚本是否能够运行成功!

注意还有两种手动关联的方式会比手动写函数更简单一点就是在确认变化的参数之后Response body里面找到变化的值以后直接采用右键关联的方式进行关联设置

其中需要做的设置有其中要进行的设置包括启用Tree模式,点击HTTP View,设置为Display Recorded Snapshot,然后点击到Response Body部分

 

接着,找到变化的值,选中它,点击右键->Create Correlation创建联接

 

VGun里面选择insert->New Step->Services->web_reg_save_param_ex,然后会出现以下的界面,分别填写左右边界和参数名字等关键参数,就能够将关联做好而不需要手动写函数了。

 

Prameter name: 此处设置存放参数的名称。

Left boundary: 此处设置左边界,这里是用来填写关联对于数据处理的左匹配内容规则。

Match case :  默认情况下边界是检查Match case ,也就是检查大小写的。

Binary data : 如果要关联的内容是非ASCII 字符的,需要选择此项

Regular expression  LR11 中关联提供了使用正则表达式的功能,但是LR11 Patch3 中取消web_reg_save_param_ex 函数对此功能的设置。

Reight boundary: 此处设置右边界。

DFEs : 在录制选项和回放中我们提供了DFE的功能,在关联这里也支持DFE的数据处理。 (DFE等后面再解释,或你自行查资料)

Ordinal :  这个关键字在很多函数里面都有应用,在这里可以填写任意一个整数,也可以填All 。如果填写数字,那么说明从返回的记录中取出对应顺序的值,而填写All 的话将会返回所有内容。

Save Offset : 设置关联的内容偏移量,从第几位开始进行关联操作。

Save Length : 关联出来的内容所需要保存的长度。

Warm if text was not found (Default is Error) : 对于关联的对象不存在的处理。

Filters : 下面的选项都是帮助关联返回限定的,通过这些设置可以进一步减少返回的范围。

最后介绍几个解决乱码问题的方法

1. 录制完以后脚本里面有乱码

解决方案:在VuGen里面选择Tools->Recording Options(或者直接CTRL+F7->Advanced,更改Suppert Charset->UTF-8

注意:该方法只有改了以后再录才会生效,录完再改没有任何效果!

 

但是如果设置为UTF-8,页面反而是GB2312或者其他编码,这个时候反而会产生乱码,所以最好是确认页面是什么编码然后进行更改最稳妥

如何查看页面编码呢

  1. 查看页面源代码查看charset(编码在http response header中的Content-Type)是什么格式。

 

bIE打开页面后,右键->编码查看浏览器自动选择的编码是什么

 

2.脚本回访时出现乱码

a. 更改运行时设置:

点击菜单栏中的Vuser,选择Run-time Settings(或者直接按F4键):

在弹出的窗口左侧点击Internet Protocol->Preferences->Advanced然后在右侧窗口中点击Options按钮,在弹出的窗体中找到General->Convert from/to UTF-8,将其设为Yes

 

猜你喜欢

转载自www.cnblogs.com/nanfengqianwen/p/10005978.html