LoadRunner性能测试系统学习教程:脚本编写之关联技术(6)
上期讲到LoadRunner性能测试脚本编写之参数化技术,这期我们一起来学习脚本编写之关联技术。
录制后关联
当录制前内建关联规则和新建规则都不能满足需要时,或者是不知道哪个地方需要关联时,只能采取录制后进行关联。
录制后关联与内建关联还是有点区别的,录制后关联是在执行脚本后才会建立关联,也就是说,当录制完脚本后,脚本至少要执行一次,录制后关联才会产生效果。录制后会尝试找到录制与执行时服务器响应的差异部分,找到需要关联的数据,并建立关联。
在脚本回放报错时,如图所示,点击菜单Vuser→Scan Script for Correlations或按快捷键Ctrl+F8,如图所示。
弹出关联信息结果
检查扫描的结果,选择需要关联的数据,点击Correlate按钮,创建一个关联,这时被关联的数据前面会多出一个绿色的勾,如图所示。
再点击Create Rule按钮为关联创建规则,弹出WebStudioViews对话框,提示规则的左边界与右边界信息,点击“是”按钮即可,如图所示。
这样关联就已经创建完成
Tools→Recording Options→HTTP Properties→Correlation中可以看到刚才创建的规则,如图所示。
图中规则的左右边界与图中弹出的提示信息左右边界信息一致。
手动关联
录制前关联与录制后关联都属于自动关联的范畴,正常情况下,自动关联就能解决脚本录制中大多数关联问题,但是如果出现使用上面两种方法都不能解决的情况,那么只能使用手动关联的方法进行关联了。手动关联和自动关联的原理是一样的,手动关联需要先找到需求关联的量,然后使用LoadRunner提供的关联函数进行关联。
手动关联的一般步骤如下:
1.录制两份脚本,保证业务流程和使用的数据相同。
简单的说,就是在录制的过程中使用相同的录制动作,录制两份脚本。
2.使用WinDiff工具比较两份脚本,找到需要关联的数据。
WinDiff是LoadRunner自带的文件比较工具,用于比较两个文件的内容,找出两者之间不同的地方,对两份脚本中不同的地方进行判断,进而找到需要关联的数据。这里为什么需要比较,是因为需要关联的数据都是从服务器端返回的数据,如果在比较中发现,对于同一个参数,服务器返回的值不一致,那么说明这个数据是动态的,需要进行关联。
在Tool菜单下选择Compare with Vuser选项,如图所示。
在弹出的对话框中选择要和当前脚本进行比较的脚本,如图所示。
接着WinDiff启动,同时显示两份脚本,并显示有差异的地方,WinDiff会以一整行黄色标示有差异的脚本,如图所示。
然后检查两份脚本中存在差异的地方,每个差异的地方都有可能是需要关联的地方。注意:lr_think_time的差异部分不需要分析,因为lr_think_time是用来模拟每个步骤之间使用者思考延迟的时间。
3.找到左边界和右边界字符串。在插入关联函数之前一定要先找到左边界和右边界字符串,选择将WinDiff比较中不同的字符拷贝出来,在Generation Log中找到其对应的位置,如图所示。
图中清楚地显示了关联数据的左边界与右边界信息,左边界为“userSession value=”,右边界为“>”,当然这里的左边界与右边界写得越长越好。这样关联函数就可以写出来了,如下。
web_reg_save_param("CSRule_1_UID2", "LB=userSession value=", "RB=>", "Ord=1", "RelFrameId=1", "Search=Body", LAST);
4.使用web_reg_save_param函数手动建立关联。规则的左边界与右边界信息找到后,需要插入web_reg_save_param函数来手动建立关联,首先找到关联函数插入的位置,点击Vuser→Run-Time Settings→General→Log→Extended log将下面所有选项都选中。在Replay Log中找到WinDiff中比较不同的字符串,如图所示,这段代码前面就是插入关联函数的位置。
5.将脚本中该关联数据以参数取代。当使用web_reg_save_param建立参数后,接下来就是用CSRule_1_UID2参数去取代脚
最后参数的结果如图所示。