lr中的unique参数.docx

上传人:b****7 文档编号:9062968 上传时间:2023-02-03 格式:DOCX 页数:14 大小:22.76KB
下载 相关 举报
lr中的unique参数.docx_第1页
第1页 / 共14页
lr中的unique参数.docx_第2页
第2页 / 共14页
lr中的unique参数.docx_第3页
第3页 / 共14页
lr中的unique参数.docx_第4页
第4页 / 共14页
lr中的unique参数.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

lr中的unique参数.docx

《lr中的unique参数.docx》由会员分享,可在线阅读,更多相关《lr中的unique参数.docx(14页珍藏版)》请在冰豆网上搜索。

lr中的unique参数.docx

lr中的unique参数

在做负载或者压力测试时,很多人选择使用了Loadrunner测试工具。

该工具的基本流程是先将用户的实际操作录制成脚本,然后产生数千个虚拟用户运行脚本(虚拟用户可以分布在局域网中不同的PC机上),最后生成相关的报告以及分析图。

但是在录制脚本的过程中会遇到很多实际的问题,比如不同的用户有不同的使用数据,这就牵涉到参数的设置问题。

本文就Loadrunner中参数的设置进行说明,希望对大家有所帮助。

在录制程序运行的过程中,VuGen(脚本生成器)自动生成了包含录制过程中实际用到的数值的脚本。

如果你企图在录制的脚本中使用不同的数值执行脚本的活动(如查询、提交等等),那么你必须用参数值取代录制的数值。

这个过程称为参数化脚本。

本文主要包括如下内容:

理解参数的局限性、建立参数、定义参数的属性、理解参数的类型、为局部数据类型设置参数的属性、为数据文件设置参数的属性、从已经存在的数据库中引入数据。

除了GUI,以下的内容适合于各种类型的用户脚本。

一、关于参数的定义

在你录制程序运行的过程中,脚本生成器自动生成由函数组成的用户脚本。

函数中参数的值就是在录制过程中输入的实际值。

例如,你录制了一个Web应用程序的脚本。

脚本生成器生成了一个声明,该声明搜索名称为“UNIX”的图书的数据库。

当你用多个虚拟用户和迭代回放脚本时,也许你不想重复使用相同的值“UNIX”。

那么,你就可以用参数来取代这个常量。

结果就是你可以用指定的数据源的数值来取代参数值。

数据源可以是一个文件,也可以是内部产生的变量。

用参数表示用户的脚本有两个优点:

①可以使脚本的长度变短。

②可以使用不同的数值来测试你的脚本。

例如,如果你企图搜索不同名称的图书,你仅仅需要写提交函数一次。

在回放的过程中,你可以使用不同的参数值,而不只搜索一个特定名称的值。

参数化包含以下两项任务:

①在脚本中用参数取代常量值。

②设置参数的属性以及数据源。

参数化仅可以用于一个函数中的参量。

你不能用参数表示非函数参数的字符串。

另外,不是所有的函数都可以参数化的。

二、参数的创建

可以指定名称和类型来创建参数。

不存在对脚本中参数个数的限制。

在Web程序的用户脚本中,你可以使用如下过程在基于文本的脚本视图中创建参数。

或者,也可以在基于图标的树形视图中创建参数。

要创建一个参数:

1、将光标定位在要参数化的字符上,点击右键。

打开弹出菜单。

2、在弹出菜单中,选择“ReplacewithaParameter”。

选择或者创建参数的对话框弹出。

3、在“Parametername”中输入参数的名称,或者选择一个在参数列表中已经存在的参数。

4、在“Parametertype”下拉列表中选择参数类型。

5、点击“OK”,关闭该对话框。

脚本生成器便会用参数中的值来取代脚本中被参数化的字符,参数用一对“{}”括住。

注意:

在参数化CORBA或者General-Java用户脚本的时候,必须参数化整个字符串,而不是其中的部分。

另外注意:

除了Web或者WAP,缺省的参数括号对于任何脚本都是“{}”。

你可以在“GeneralOptions”对话框中的“Parameterization”标签(Tools>GeneralOptions)中定义参数括号种类。

6、用同样的参数替换字符的其余情况,选中参数,点击右键,弹出菜单。

从弹出的菜单中,选择“ReplaceMoreOccurrences”。

搜索和替换对话框弹出。

“FindWhat”中显示了你企图替换的值。

“ReplaceWith”中显示了括号中参数的名称。

选择适当的检验框来匹配整个字符或者大小写。

如果要搜索规则的表达式(.,!

,?

等等),选中“RegularExpression”检验框,然后点击“Replace”或者“ReplaceAll”。

注意:

小心使用“ReplaceAll”,尤其替换数字字符串的时候。

脚本生成器将会替换字符出现的所有情况。

7、如果想用以前定义过的参数来替换常量字符串的话,选中该字符串,点击右键,然后选择“UseExistingParameter”,子菜单“UseExistingParameters”弹出。

从子菜单“UseExistingParameters”选择参数,或者用“SelectfromParameterList”来打开参数列表对话框。

注意:

如果用以前定义过的参数来替换常量字符串的话,那么,使用“ParameterList”非常方便。

同时,还可以查看和修改该参数的属性。

8、对于已经用参数替换过的地方,如果想取回原来的值,那么,就在参数上点击右键,然后选择“RestoreOriginalValue”。

在Web用户脚本的树形视图中创建参数

在Web用户脚本的树形视图中创建一个参数的步骤

1、将光标定位在企图参数化的地方,点击右键,从弹出的菜单中选择“Properties”。

则相关的属性对话框打开。

2、点击在要参数化的参量的旁边的“ABC”形状的图标。

“SelectorCreateParameter”对话框打开。

3、在“Parametername”中输入参数的名称,或者从列表中选择一个已经存在的参数。

4、在“Parametertype”中输入参数的类型。

5、点击“OK”关闭该对话框。

用户脚本生成器会用参数来替换最初的字符串常量,并用一个表格形状的图标替换“ABC”形状的图标。

6、要恢复参数化以前的值,点击图标,然后从弹出的菜单中选择“UndoParameter”,则以前的值便会重现。

三、定义参数的属性

创建参数完成后,就可以定义其属性了。

参数的属性定义就是定义在脚本执行过程中,参数使用的数据源。

在Web用户脚本中,你既可以在基于文本的脚本视图中定义参数属性,也可以在基于图标的树形视图中定义参数属性。

下面的过程将教你如何在基于本文的脚本视图中定义参数属性。

定义参数属性步骤:

1、在参数上点击右键,有菜单弹出。

2、在弹出的菜单中,选择“ParameterProperties”。

参数属性对话框打开,显示和当前参数类型相关的属性。

3、输入参数的属性值。

4、点击“Close”关闭参数属性对话框。

在Web用户脚本的树形视图中定义参数的属性

1、将关标定位在参数上,然后点击右键,选择“Properties”。

属性对话框打开。

2、点击要定义属性的参数旁边的表格形状按钮,点击右键,选择“ParameterProperties”。

参数属性对话框打开,和参数类型相关的属性显示出来。

3、输入参数的属性。

4、点击“Close”关闭参数属性对话框。

使用参数列表

使用参数列表可以在任意时刻查看所有的参数,创建新的参数、删除参数,或者修改已经存在参数的属性。

要使用参数列表:

1、点击参数列表按钮或者用“Vuser>ParameterList”。

参数列表对话框打开。

2、要创建新的参数,点击“New”按钮。

新的参数则被添加在参数树中,该参数有一个临时的名字,你可以给它重新命名,然后回车。

注意:

不要将一个参数命名为“unique”,因为这个名称是用户脚本生成器本身的。

设置参数的类型和属性,点击“OK”,关闭参数列表对话框。

注意:

用户脚本生成器创建新的参数,但是不会自动用该参数在脚本中替换任意选中的字符串。

3、要删除已有的参数,那么,要先从参数树中选择该参数,点击“Delete”,然后确认你的行为即可。

4、要修改已有参数,那么,要先从参数树中选择该参数,然后编辑参数的类型和属性。

四、理解参数的类型

在你定义参数属性的时候,要指定参数值的数据源。

你可以指定下列数据源类型的任何一种:

InternalData虚拟用户内部产生的数据。

DataFiles存在于文件中的数据。

可能是已存在的文件或者是用脚本生成器新创建的。

User-DefinedFunctions调用外部DLL函数生成的数据

InternalData包括以下几种:

1.Date/Time

Date/Time用当前的日期/时间替换参数。

要指定一个Date/Time格式,你可以从菜单列表中选择格式,或者指定你自己的格式。

这个格式应该和你脚本中录制的Date/Time格式保持一致。

2.GroupName

GroupName用虚拟用户组名称替换参数。

在创建scenario的时候,你可以指定虚拟用户组的名称。

当从用户脚本生成器运行脚本的时候,虚拟用户组名称总是None。

3.LoadGeneratorName

LoadGeneratorName用脚本负载生成器的名称替换参数。

负载生成器是虚拟用户在运行的计算机。

4.IterationNumber

IterationNumber用当前的迭代数目替换参数。

5.RandomNumber

RandomNumber用一个随机数替换参数。

通过指定最大值和最小值来设置随机数的范围。

6.UniqueNumber

UniqueNumber用一个唯一的数字来替换参数。

你可以指定一个起始数字和一个块的大小。

7.VuserID

VuserID用分配给虚拟用户的ID替换参数,ID是由Loadrunner的控制器在scenario运行时生成的。

如果你从脚本生成器运行脚本的话,虚拟用户的ID总是-1。

五、数据文件

数据文件包含着脚本执行过程中虚拟用户访问的数据。

局部和全局文件中都可以存储数据。

可以指定现有的ASCII文件、用脚本生成器创建一个新的文件或者引入一个数据库。

在参数有很多已知值的时候数据文件非常有用。

数据文件中的数据是以表的形式存储的。

一个文件中可以包含很多参数值。

每一列包含一个参数的数据。

列之间用分隔符隔开,比如说,用逗号。

对数据文件设置参数属性

如果使用文件作为参数的数据源,必须指定以下内容:

1.文件的名称和位置

2.包含数据的列

3.文件格式,包括列的分隔符

4.更新方法

如果参数的类型是“File”,打开参数属性(ParameterProperties)对话框,设置文件属性如下:

1.在“Filepath”中输入文件的位置,或者点击“Browse”指定一个已有文件的位置。

缺省情况下,所有新的数据文件名都是“parameter_name.dat”,注意,已有的数据文件的后缀必须是.dat。

2.点击“Edit”。

记事本打开,里面第一行是参数的名称,第二行是参数的初始值。

使用诸如逗号之类的分隔符将列隔开。

对于每一新的表行开始一行新的数据。

注意:

在没有启动记事本的情况下如果想添加列,就在参数属性对话框中点击“AddCol”,那么“Addnewcolumn”对话框就会弹出。

输入新列的名称,点击“OK”。

脚本生成器就会添加该列到表中,并显示该列的初始值。

3.在“SelectColumn”部分,指明包含当前参数数据的列。

你可以指定列名或者列号。

列号是包含你所需要数据的列的索引。

列名显示在每列的第一行(row0)。

4.在“Columndelimiter”中输入列分隔符,你可以指定逗号、空格符等等。

5.在“Firstdataline”中,在脚本执行的时候选择第一行数据使用。

列标题是第0行。

若从列标题后面的第一行开始的话,那就在“Firstdataline”中输入1。

如果没有列标题,就输入0。

6.在“Selectnextrow”中输入更新方法,以说明虚拟用户在脚本执行的过程中如何选择表中的数据。

方法可以是:

连续的、随机的、唯一的、或者与其它参数表的相同行。

7.选中“Advanceroweachiteration”表示虚拟用户在每次迭代都使用新的一行数据而不是所有的迭代都使用相同的数据。

从文件中更新参数值

若使用文件中的数值,脚本生成器会要求你指定给参数分配数值给的方法。

可用的方法有:

1.顺序(Sequential):

该方法顺序地给虚拟用户分配参数值。

如果正在运行的虚拟用户访问数据表的时候,它会取到下一行中可用的数据。

2.随机(Random):

该方法在每次迭代的时候会从数据表中取随机数

3.使用种子取随机顺序(UseRandomSequencewithSeed):

如果从Loadrunner的控制器来运行scenario,你可以指定一个种子数值用于随机顺序。

每一个种子数值在测试执行的时候代表了一个随机数的顺序。

无论你何时使用这个种子数值,在scenario中同样的数据顺序就被分配给虚拟用户。

如果在测试执行的时候发现了一个问题并且企图使用同样的随机数序列来重复测试,那么,你就可以启动这个功能(可选项)。

4.唯一(Unique):

Unique方法分配一个唯一的有顺序的值给每个虚拟用户的参数。

5.与以前定义的参数取同一行(SameLineAs):

该方法从和以前定义过的参数中的同样的一行分配数据。

你必须指定包含有该数据的列。

在下拉列表中会出现定义过的所有参数列表。

注意:

至少其中的一个参数必须是Sequential、Random或者Unique。

如果数据表中有三列,三个参数定义在列表中:

id1,name1和title1,如下:

IDNameTitle

132KimManager

187CassieEngineer

189JaneVP

对于参数id1,你可以指示虚拟用户使用Random方法,而为参数name1和title1就可以指定方法“SameLineasid1”。

所以,一旦ID“132”被使用,那么,姓名(Name)“Kim”和职位(Title)“Manager”同时被使用。

六、从已存在的数据库中导入数据

Loadrunner允许你利用参数化从已经存在的数据库中导入数据。

可以使用下列两种方式之一:

1.使用MicrosoftQuery(要求在系统上先安装MSQuery)。

2.指定数据库连接字符串和SQL语句。

用户脚本生成器在从数据库中导入数据的过程中提供了一个向导。

在向导中,你指明如何导入数据-通过MSQuery创建查询语句或者直接书写SQL语句。

在导入数据以后,以.dat为后缀并作为正规的参数文件保存。

要开始导入数据库中数据的过程,在参数属性对话框中点击“DataWizard”,则,数据库查询向导弹出。

要创建新的查询

1.选择“Createnewquery”。

如果需要MSQuery的帮助,选择“ShowmehowtouseMicrosoftQuery”,然后点击“Finish”。

如果你还没有安装MicrosoftQuery,Loadrunner会提示你这个功能不可用。

在进行之前,从MicrosoftOffice中安装MSQuery。

2.在MicrosoftQuery中遵循以下步骤,导入期望的表和列。

3.在完成数据的导入后,选择“ExitandreturntoVirtualUserGenerator”,然后点击“Finish”。

在参数属性对话框中数据库记录以data文件的形式显示出来。

要在MSQuery中编辑并查看数据,选择“ViewdataoreditinMicrosoftQuery”。

若要结束,则选择“File>ExitandreturntoVirtualUserGenerator”返回到脚本生成器。

4.在“SelectColumn”部分,指定包含当前参数数据的列可以指定列号或者列名。

注意:

列标题默认为第0行(row0)。

5.从“Selectnextrow”列表中选择一个更新方法来告诉虚拟用户在脚本指定的过程中如何选择表中的数据。

可选项是:

Sequential、Random、Unique或者SameLineAs。

其中每一项的含义文章前面已经讲述,就不再赘述。

6.如果选择“Advanceroweachiteration”,虚拟用户在每次迭代的时候会使用新的一行的数据而不是重复同样的数据。

要指定数据库连接或者SQL语句

1.选择“SpecifySQLStatement”,然后点击“Next”。

2.点击“Create”指定一个新的连接字符串。

选择数据源的窗口弹出。

3.选择已有的数据源,或者点击“New”创建一个新的数据源。

向导将提示你穿过创建ODBC数据源的过程。

在完成后,连接字符串就会在连接字符串框中显示出来。

4.在SQL框中,输入或者粘贴SQL语句。

5.点击“Finish”继续SQL语句并导入数据。

数据库记录将以data文件的形式显示在参数属性框中。

6.在“SelectColumn”部分中,指定包含当前参数数据的列。

你可以指定列号或者列名。

7.从“Selectnextrow”列表中选择一个更新方法来告诉虚拟用户在脚本指定的过程中如何选择表中的数据。

可选项是:

Sequential、Random、Unique或者SameLineAs。

8.如果选择“Advanceroweachiteration”,虚拟用户在每次迭代的时候会使用新的一行的数据而不是重复同样的数据。

 

 

在LoadRunner中进行参数化时,Parameter的取值设置有以下相关参数:

    取值方式:

Sequence:

顺序

Random:

随机

Unique:

唯一

    改变(更新)取值的时机:

EachIteration:

每次迭代

EachOccurrence:

每次出现

Once:

只改变一次

(在此,我只讨论Unique的参数设置,其他相关参数会在其他文章中详谈)

当我们取值方式选为Unique/更新取值时机选为EachIteration时,还有一个选项可设置,那就是:

allocateVuservaluesinthecontroller:

它有两个选项:

1、automaticallyallocateblocksize;2、allocate_____valuesforeachVuser.因为我们选择了“每次迭代”更新取值的方式,所以可以指定是由系统自动分配Vuser的参数值数量,还是人为指定为每个Vuser分配的参数值数量。

我们以某网站登录功能为例来做分析:

先来看一下登录界面:

登录

用户名:

    {T_name}

密码:

    {Pwd}

确认密码:

    {Pwd}

登录    取消

一、我们选择由系统自动分配Vuser参数值数量的选项,即勾选automaticallyallocateblocksize

1、    首先我们准备一些登陆用的数据,包括用户名,密码

编号    用户名:

    密码:

1    T_username01    Pwd01

2    T_username02    Pwd02

3    T_username03    Pwd03

4    T_username04    Pwd04

5    T_username05    Pwd05

2、    分析user的参数值列表、Vuser数和迭代次数的关系:

首先确定我们是使用Vuser来虚拟多个用户通过调用多个user的参数值来实现模拟操作动作的,那一个Vuser使用的user参数值的多少就会和Iteration迭代的次数有直接关系。

好,我们来看下面这个分析表:

解释格式:

(以1*2;2*2;3*1为例)

        以分号分割,表示不同的Vuser:

共3个Vuser

        第一位数字表示Vuser的编号:

3*1表示第3个Vuser

        第二位数字表示分配得到的user参数值的数量:

1*2表示第一个Vuser得到2个user参数值

User参数值的数量

(以5个为例)    迭代次数    最大允许Vuser数    最大Vuser数量下的分配情况

5    1    5    1*1;2*1;3*1;4*1;5*1

5    2    3    1*2;2*2;3*1

5    3    2    1*3;2*2

5    4    2    1*4;2*1

5    5    1    1*5

同样的分析方法,我们刚刚分析的“最大允许Vuser数量”,实际你可以取小于它的值,比如:

User参数值的数量

(以5个为例)    迭代次数    最大允许Vuser数    最大Vuser数量下的分配情况

5    2    2    1*2,2*2

注:

比较和上表中的第二行数据,会发现:

当我的每一个Vuser满足了自己的迭代次数,且参数数量够分配时,剩下的未用的1个参数就被忽略了

(当user参数值数量小于迭代次数时,具体的分配方式和另一个选项有关:

1、中止;2、循环Vuser分配到的列表;3、只循环最后一个列表项;这部分内容放到文章最下面^_^,现在可以默认选在2上)

同样,我们可以分析一下10个User参数值的时候

User参数值的数量

(以5个为例)    迭代次数    最大允许Vuser数    最大Vuser数量下的分配情况

10    1    10    1*1;2*1;3*1;4*1;5*1;6*1;7*1;8*1;9*1;10*1

10    2    5    1*2;2*2;3*2;4*2;5*2

10    3    4    1*3;2*3;3*3;4*1

10    4    3    1*4;2*4;3*2

10    5    2    1*5;2*5

10    6    2    1*6;2*4

10    7    2    1*7;2*3

10    8    2    1*8;2*2

10    9    2    1*9;2*1

10    10    1    1*10

由此,我们可以推导出有关User参数值数量、迭代次数和最大允许Vuser数的数学公式:

令:

    User参数值数量——ParamNum

        迭代次数————IteraNum

        最大允许Vuser数——MaxVuser

则公式如下:

    当ParamNum%IteraNum=0时        MaxVuser=ParamNum/IteraNum    

    当ParamNum%IteraNum!

=0时        MaxVuser=ParamNum/IteraNum+1

二、我们选择人为分配Vuser参数值数量的选项,即勾选allo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1