如果用户在录制脚本过程中,填写提交了一些数据,比如创建一个新的document。这些操作都被记录到了脚本中。当多个虚拟用户运行脚本时,都会提交相同的记录,这样做会被应用禁止,会出错,这样也不符合实际的运行情况,而且有可能引起冲突。为了更加真实的模拟实际环境,需要各种各样的输入。参数化输入是一种不错的方法
参数化包含以下两项任务:
① 在脚本中用参数取代常量值。
② 设置参数的属性以及数据源。
参数化仅可以用于一个函数中的参量。你不能用参数表示非函数参数的字符串。另外,不是所有的函数都可以参数化的。
我举一个例子来说明,还是我么上面那个脚本,
web_submit_form("ScheduleCreationAction.do",
"Snapshot=t12.inf",
ITEMDATA,
"Name=PTName", "Value=performance0001", ENDITEM,
"Name=headerTempID", "Value=preProductionHeaderTemplate", ENDITEM,
"Name=selectHeader", "Value=1", ENDITEM,
"Name=schTempID", "Value=preProductionDetailTemplate", ENDITEM,
LAST);
因为每次创建文档的时候,需要用不同的名字,系统禁止同名,如果同名就回出错,所以要把PTName值参数化,我们只要选中“performance0001”,然后点鼠标右键,选择“Replace with a parameter.”,出现以下窗口
参数类型解释:
DateTime:很简单,在需要输入日期/时间的地方,可以用DateTime类型来替代。
其属性设置也很简单,选择一种格式即可。当然也可以定制格式。
Group Name:暂时不知道何处能用到,但设置比较简单。在实际运行中,LoadRunner
使用该虚拟用户所在的Vuser Group来代替。但是在VuGen中运行时,Group Name
将会是None
Load Generator Name:在实际运行中,LoadRunner使用该虚拟用户所在Load
Generator的机器名来代替。
Iteration Number:在实际运行中,LoadRunner使用该测试脚本当前循环的次数来
代替。
Random Number:随机数。很简单。在属性设置中可以设置产生随机数的范围
Unique Number:唯一的数。在属性设置中可以设置第一个数以及递增的数的大小。
注意:使用该参数类型必须注意可以接受的最大数。例如:某个文本框能接受的
最大数为99。当使用该参数类型时,设置第一个数为1,递增的数为1,但100个
虚拟用户同时运行时,第100个虚拟用户输入的将是100,这样脚本运行将会出错。
注意:这里说的递增意思是各个用户取第一个值的递增数,每个用户相邻的两次循
环之间的差值为1。举例说明:假如起始数为1,递增为5,那么第一个用户第一
次循环取值1,第二次循环取值2;第二个用户第一次循环取值为6,第二次为7;
依次类推。
Vuser ID:设置比较简单。在实际运行中,LoadRunner使用该虚拟用户的ID来代
替,该ID是由Controller来控制的。但是在VuGen中运行时,Vuser ID将会是–1。
User Defined Function:从用户开发的dll文件提取数据。
File:需要在属性设置中编辑文件,添加内容,也可以从现成的数据库中取数据
我们将会重点介绍这种参数类型,这也是LR的缺省参数类型,就是把准备好的数据放在文件或者用sql语句从数据库中取出来,让VU来读取。“Select next row”有以下几种选择:多个VU如何取值
Sequential:按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取
Random:在每次循环里随机的读取一个,但是在循环中一直保持不变
Unique:每个VU取唯一的值。注意:使用该类型必须注意数据表有足够多的数。比如
Controller中设定20个虚拟用户进行5次循环,那么编号为1的虚拟用户取前5
个数,编号为2的虚拟用户取6-10的数,依次类推,这样数据表中至少要有100
个数据,否则Controller运行过程中会返回一个错误。
Same Line As某个参数(比如Name):和前面定义的参数Name取同行的记录。通常用在有关联性的数据上面。这个也是很有用的,比如有时候我们要求指定VU取读取指定数据,就可以这样定义:
创建参数文件,共两列,假设userID,DOCID,userid设定取数方式是unique,DOCID则设成the same line as userid,如果第一行数据为0001,DOC1,则如果用户0001登录成功,在打开文档时,便会打开DOC1文档。
“Update value on”有如下几种选择:多次迭代如何取值
once在所有的反复中都使用同一个值,
each iteration则每次反复都要取新值,
each occurrence则只要发现该参数就要重新取值,也就是如果一个action中有多个该参数,每遇到一个就要重新取一个值。