loadrunner参数化

上一篇 / 下一篇  2013-11-26 17:06:37 / 个人分类:loadrunner

参数化

         当多个虚拟用户运行脚本时,都会提交相同的记录,这样不符合实际的运行情况,而且有可能引起冲突。为了更加真实的模拟实际环境,需要各种各样的输入。参数化是一种不错的方法。其优点:可以使脚本的长度变短、可以使用不同的数值来测试脚本。

参数类型

  • l  DateTime:在需要输入日期/时间的地方,用DateTime类型来替代。其属性设置很简单,选择一种格式即可。也可以定制格式。
  • l  Group Name:暂时不知道喝出能用到,但设置比较简单。LoadRunner使用该虚拟用户所在的Vuser Group来代替。但在VuGen中运行时,Group Name将会是None。
  • l  Load Generator Name:在实际运行中,LoadRunner使用该虚拟用户所在Load Generator的机器名来代替。
  • l  Iteration Number:在实际运行中,LoadRunner使用该测试脚本当权循环的次数来代替。
  • l  Random Number:随机数。在属性设置中可以产生随机数的范围。
  • l  Unique Number:唯一的数。在属性设置中可以设置第一个数以及递增数的大小。(这里的递增意思是各个用户取第一个值的递增数,每个用户相邻的两次循环之间的差值为1。)例如:起始数为1,递增为5,那么第一个用户第一次循环取值1,第二次循环取值2;第二个用户第一次循环取值6,第二次循环取值7;以此类推。
  • l  Vuser ID:设置比较简单。在实际运行中,LoadRunner使用该虚拟用户的ID来代替,该ID是由Controller来控制的。但在VuGen中运行时,VuserID将会是-1。
  • l  File:需要在属性设置中编辑文件,添加内容,也可以从现在的数据库中取数据。
  • l  User Defined Function:从用户开发的dll文件提取数据。

参数化连接数据库

a.选择要参数化的数据,右键,选择“Replace with a parameter”

b.点击“Properties…”按钮

 

c.连接数据库,从数据表中选择用户名。点击“Data Wizard”按钮。

 

d.进行下一步添加数据源后。

 

e.输入连接数据库的连接字符串以及数据检索语句后,点击“Finish”。

 

f.进一步设置参数化读取数据的方式;

 

注意: LoadRunner允许最大参数化用户数为100人,如需扩大参数量,可在安装路径下vugen.ini文件中修改:MaxVisibleLines=1000。(此为设置允许最大参数化用户数为1000人)

“Select next row”有几种选择:Sequential、Random、Unique。

“Update value on”有几种选择:Each iteration、Each occurrence、Once。

组合类型:

Sequential

  • 与Each iteration组合:将为每次跌倒从数据表中提取下一个值。
  • 与Each occurrence组合:将为每一次参数的出现从数据表格中提取下一个值,即使它在同一次迭代中。
  • 与Once组合:第一次迭代中分配的值就会在每个Vuse接下来所有的迭代中使用。

Random

  • 与Each iteration组合:将会为每一次迭代从数据表中提取一个新的随机值。
  • 与Each occurrence组合:将会为每一次参数的出现从数据表中提取一个新的随机值,即使它在同一次迭代中。
  • 与Once组合:第一次迭代中分配的随机值就会在改Vuser的所有迭代中使用。

Unique

  • 与Each iteration组合:将会为每一次迭代从数据表格中提取下一个唯一值。
  • 与Each occurrence组合:将会为每一次参数的出现从数据表格中提取一个新的一直,即使它在同一次迭代中。
  • 与Once组合:第一次迭代中分配的唯一值就会在每个Vuser的所有接下来的迭代中使用。
  • .3 脚本的参数化

    如果用户在录制脚本过程中,填写提交了一些数据,比如创建一个新的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中有多个该参数,每遇到一个就要重新取一个值。

     

     

    参数列表update value on=each occurrence/each iteration/once的区别

    2007-08-03 21:42:56 / 个人分类:Loadrunner

    假如你的代码是这样的:
                 web_submit_form("reservations.pl",
                    "Name=depart", "Value={depart_city}", ENDITEM,
                    "Name=departDate", "Value=06/20/2007", ENDITEM,
                    LAST);

            web_submit_form("reservations.pl_2",
                         "Name=depart", "Value={depart_city}", ENDITEM,
                    "Name=reserveFlights.x", "Value=81", ENDITEM,
                    LAST);
    再假设参数列表中这个参数depart_city的值是:上海
                                                                    北京
                                                                    重庆
                          西安
                          合肥

    这段代码中两个地方都用到了{depart_city}, 关于这个参数的调用是如何的呢?关键取决于你自己在参数列表中对于这个参数的设置。
    假如你的设置是:
      A. update value ōn=each occurrence
          在第一个循环中,第一段代码web_submit_form("reservations.pl"....... depart_city="上海"
              第二段代码web_submit_form("reservations.pl_2".....depart_city="北京"

          在第二个循环中,第一段代码web_submit_form("reservations.pl"....... depart_city="重庆"
              第二段代码web_submit_form("reservations.pl_2".....depart_city="西安"
         
          在第三个循环中,第一段代码web_submit_form("reservations.pl"....... depart_city="合肥"
          ........................................................................
          如果参数不够用的时候,怎么办呢?那就看你参数列表中另外一个设置when out of value怎么设置呢? 这里先不谈。

      B. update value ōn=each iteration
          在第一个循环中,第一段代码web_submit_form("reservations.pl"....... depart_city="上海"
              第二段代码web_submit_form("reservations.pl_2".....depart_city="上海"

          在第二个循环中,第一段代码web_submit_form("reservations.pl"....... depart_city="北京"
              第二段代码web_submit_form("reservations.pl_2".....depart_city="北京"
         
          在第三个循环中,第一段代码web_submit_form("reservations.pl"....... depart_city="重庆"
          ..............................................................................

      C. update value ōn=once
          在第一个循环中,第一段代码web_submit_form("reservations.pl"....... depart_city="上海"
              第二段代码web_submit_form("reservations.pl_2".....depart_city="上海"

          在第二个循环中,第一段代码web_submit_form("reservations.pl"....... depart_city="上海"
              第二段代码web_submit_form("reservations.pl_2".....depart_city="上海"
         
          在第三个循环中,第一段代码web_submit_form("reservations.pl"....... depart_city="上海"


TAG:

 

评分:0

我来说两句

Open Toolbar