的值从参数{username}和{passwd}中获得。而我们会在后面介绍LoadRunner有一套机制来保证参数的使用和变化,这样就实现了脚本与数据的分离。
参数化是我们学习LoadRunner中经常用到的功能。除了实现数据驱动之外,参数化脚本还有以下两个优点:
(1)可以使脚本的长度变短。
(2)可以增强脚本的可读性和可维护性。 实际上,参数化的过程如下:
(1)在脚本中用参数取代常量值。 (2)设置参数的属性以及数据源。 这些我们会在下面内容中详细介绍。
5.7.2 参数的创建
LoadRunner对脚本中参数个数没有限制,我们可以在一个脚本中创建任意多个参数。 下面以Web Vuser为例,看看LoadRunner是如何创建参数的。我们已经知道,VU可以通过Tree View和Script View两种途径来改变脚本,包括参数化功能。我们这里分别介绍。 还是上面那个登录脚本,我们可以在基于文本的脚本视图中参数化。 1.脚本视图参数化
将光标定位在要参数化的字符上,单击右键,弹出快捷菜单,如图5-26所示。
图5-26 脚本参数化之右键选择替代参数
在弹出菜单中,选择“Replace with a Parameter”,打开选择或者创建参数对话框,如图5-27所示。
在“Parameter name”中输入参数的名称,或者选择一个在参数列表中已经存在的参数。
在“Parameter type”下拉列表中选择参数类型,如图5-28所示。
图5-27 脚本参数化之设定参数名字 图5-28 脚本参数化之设定参数类型
下面重点介绍一下参数的类型。
在定义参数属性的时候,要指定参数值的数据源。你可以指定下列数据源类型中的任何一种: (1)Data Files
这是我们最常使用的一种参数类型,它的数据存在于文件中。该文件的内容可以手工添加,也可以利用LoadRunner的Data Wizard从数据库中导出。我们将在后面详细地介绍。 (2)User-Defined Functions 调用外部DLL函数生成的数据。 (3)Internal Data 虚拟用户内部产生的数据。 Internal Data包括以下几种类型: Date/Time
Date/Time用当前的日期/时间替换参数。要指定一个Date/Time格式,你可以从菜单列表中选择格式,或者指定自己的格式。这个格式应该和脚本中录制的Date/Time格式保持一致。 Group Name
Group Name用虚拟用户组名称替换参数。在创建scenario的时候,你可以指定虚拟用户组的名称。注意:当从VU运行脚本的时候,虚拟用户组名称总是None。
Load Generator Name
Load Generator Name用脚本负载生成器的名称替换参数。负载生成器是虚拟用户在运行的计算机。 Iteration Number
Iteration Number用当前的迭代数目替换参数。 Random Number
Random Number用一个随机数替换参数。通过指定最大值和最小值来设置随机数的范围。 Unique Number
Unique Number用一个唯一的数字来替换参数。你可以指定一个起始数字和一个块的大小。
注意:使用该参数类型必须注意可以接受的最大数。例如:某个文本框能接受的最大数为99。当使用该参数类型时,设置第一个数为1,递增的数为1,但100个虚拟用户同时运行时,第100个虚拟用户输入的将是100,这样脚本运行将会出错。 Vuser ID
Vuser ID用分配给虚拟用户的ID替换参数,ID是由LoadRunner的控制器在scenario运行时生成的。如果从脚本生成器运行脚本的话,虚拟用户的ID总是-1。
我们给此参数命名为“username”,然后单击“OK”按钮,关闭该对话框。脚本生成器便会用参数中的值来取代脚本中被参数化的字符,参数用一对“{}”括住,如图5-29所示。
图5-29 脚本参数化后的变化
提示:在参数化CORBA或者General-Java用户脚本的时候,必须参数化整个字符串,而不是其中的部分。另外注意:除了Web或者WAP,缺省的参数括号对于任何脚本都是“{}”。你可以在“General Options”对话框的“Parameterization”选项卡(“Tools”>“General Options”)中定义参数括号种类。
用同样的参数替换字符的其余情况。选中参数,单击右键,在弹出的菜单中选择“Replace more occurrences”,如图5-30所示,打开搜索和替换对话框。“Find What”中显示了你企图替换的值,“Replace With”中显示了括号中参数的名称。选择适当的检验框来匹配整个字符或者大小写。如果要搜索规则的表达式(.、!、?等),则选中“Regular Expression”检验框,然后单击“Replace”或者“Replace All”按钮。 提示:小心使用“Replace All”,尤其替换数字字符串的时候。脚本生成器将会替换字符出现的所有情况。
如果想用以前定义过的参数来替换常量字符串的话,选中该字符串,单击右键,然后选择“Use existing parameters”,从弹出的子菜单中选择参数,或者用“Select from Parameter List”来打开参数列表对话框,如图5-31所示。
图5-30 在右键菜单中选择替换其他变量
图5-31 在右键菜单中选择使用已有参数
提示:如果用以前定义过的参数来替换常量字符串的话,那么,使用“Parameter List”非常方便。同时,还可以查看和修改该参数的属性。
对于已经用参数替换过的地方,如果想取回原来的值,那么就在参数上单击右键,然后选择“Restore Original value”。 提示:不是所有的数据都可以参数化。
上面LoadRunner给我们提供了一种很方便的机制去参数化。但这种机制的应用范围是有限的,只有函数的参数才能参数化,不能参数化非函数参数的数据。但是同时,不是所有函数的参数都能参数化。 例如:
lrd_stmt (LRD_CURSOR FAR *mptCursor, char FAR *mpcText, long mliTextLen, LRDOS_INT4 mjOpt1, LRDOS_INT4 mjOpt2, int