Loadrunner性能测试之——关 联
一、什么是关联
简单的说:就是把脚本中某些写死(固定)的数据,转变成动态的数据,或者说将前面语句的结果数据保存下来,然后在后面的语句提交请求时使用这些数据。
【需要关联的前提条件】:客户端需要从服务器端返回数据中获取部分数据,并将这些部分数据处理后作为自己下一次请求的一部分发出。
二、为什么要关联
通过Loadrunner录制生成脚本时,交易中使用的数据同时也录制下来了,当回放脚本时,使用的还是录制时候的数据,但是我们知道,应用中的数据是经常变化的,很多交易提交的数据都会随着前面的交易结果来确定,或者根据某些条件动态产生,因此,使用录制时候的数据回放脚本时,就产生错误,导致达不到交易的目的,这时候就需要通过关联,动态的产生或者选择合适的数据,在新的交易中使用。
三、关联的方法和步骤
【关联步骤】
1. 从服务器端返回的数据中选取需要进行关联的数据(确定要关联的值)
2. 将该数据存入脚本中的一个参数中(保存值)
3. 将脚本中需要使用该数据的地方用参数来替代(引用保存的值)
【关联方法】
l 自动关联
LoadRunner的VuGen可以自动找出需要关联的值,并且自动使用关联函数建立数据关联。
自动关联有两种机制:
(一)Rules Correlation
在脚本录制过程中,VuGen会根据已经制定好的规则,自动找出需要关联的值。
规则来源:
1. 内建关联(Built-in Correlation)
VuGen针对一些常用的应用系统,如Oracle等,内建关联规则,可以在【Recording Options】—>【Internet Protocol】—>【Correlation】中启用关联规则,当录制这些应用系统的脚本时,VuGen会在脚本中自动建立关联。
2. 用户自定义关联(User-defined rulesCorrelation)
用户可以在【RecordingOptions】—>【Internet Protocol】—>【Correlation】建立新的关联规则。
(二)Correlation Studio
与内建关联规则不同,CorrelationStudio需要在执行脚本之后,才会建立关联,也就是说当录制脚本后,脚本至少须被执行过一次,CorrelationStudio才会起作用,Correlation Studio会尝试找出录制与执行时,服务器响应内容的差异部分,以找出需要关联的数据,并建立关联。
l 手动关联
【步骤】
1. 录制两份相同业务流程的脚本,输入的数据要相同。
2. 用WinDiff工具,找出两份脚本之间不同之处,也就是需要关联的数据
3. 用web_reg_save_param函数手动建立关联,将脚本中用到关联的数据参数化。
四、关联函数详解
Web_reg_save_param函数主要根据需要做关联的动态数据前面和后面的固定字符串来识别、提取动态数据,所以在做关联时,需要找出动态数据的左、右边界字符串。
函数原型:
int web_reg_save_param (const char *ParamName, <List of Attributes>, LAST);
参数说明:
ParamNam:存放动态数据的参数名称
List of Attributes:其它属性,包含Notfound、LB、RB、RelFrameID、Search、ORD、SaveOffset、Convert、SaveLen。
l Notfound:指当找不到要找的动态数据时,怎么处理。
1. Notfound=error,当找不到动态数据时,发出一个错误信息,为LoadRunner的默认值。
2. Notfound=warning,当找不到动态数据时,不发出错误信息,只发出警告,脚本会继续执行下去不会中断。
l LB:动态数据的左边界字符串,该参数为必选参数,并区分大小写。
l RB:动态数据的右边界字符串,该参数为必选参数,并区分大小写。
l ORD:指提取第几次出现的左边界的数据,该参数为可选参数,默认值是1。假如值为All,则查找所有符合条件的数据并把这些数据存储在数组中。
l Search:搜寻的范围。可以是Headers(只搜寻Headers)、Body(只搜寻Body部分,不搜寻Headers)、Noresources(只搜寻Body部分,不搜寻Header与Resource)或是All(搜寻全部范围,此为默认值),该参数为可选参数。
l RelFrameID:相对于URL而言,欲搜寻的网页的Frame,此属性可以是All或是具体的数字,该参数为可选参数。
l SaveOffset:当找到符合的动态数据时,从第几个字符开始才存储到参数中,该参数为可选参数,此属性值不可为负数,其默认值是0.
l Convert:可能的值有两种:
1. HTML_TO_URL:将HTML-encoded数据转成URL-encoded数据格式。
2. HTML_TO_TEXT:将HTML-encoded数据转成纯文字数据格式。
l SaveLen:从Offset开始算起,到指定长度内的字符串,才储存到参数中,该参数为可选参数,默认值为-1,表示储存到结尾整个字符串。