(转)数字文件存储

上一篇 / 下一篇  2009-01-06 13:20:26 / 个人分类:LoadRunner

数据文件能保存脚本执行期间Vuser访问的数据,这些数据可以被存储在本地或全局文件中。如果拥有大量已知参数值,数据文件是非常有用的。

数据文件中的数据以表格的形式存储。一个文件可以包含大量参数值,每一列都保存一个参数的数据。列的分隔由分隔符标记,例如逗号、"-"或者Tab符号等。如果使用文件作为参数的数据源,必须指定文件的名称和位置、包含数据的列、文件格式,包括列的分隔符、更新方法等内容。

在下例中,就是使用文件作为参数的数据源,其数据文件包含了每个数据的ID编号及其相对应的名称,如图3-25所示。

498)this.style.width=498;" border=0> 图3-25  数据文件存储设置

在"File path"框中输入数据文件的名称,或者单击"Browse"(浏览)按钮指定现有数据文件的文件位置。默认情况下,所有新数据文件均被命名为"parameter_name.dat"并且存储在脚本的目录中。

单击"Edit with Notepad"按钮,将打开记事本,在记事本文档中编辑此数据,其中第一行是参数名,第二行是参数的初始值。用表格的形式将其他列名和值输入到该文件中。使用分隔符(例如逗号或者制表符)来指示列分隔。对表格中的每个新行都要另起一行开始。

"Select next row"下拉列表框有以下几个选项:

1.Sequential:按照顺序一行行地读取。每一个Vuser都会按照相同的顺序读取文件中的参数值,选择"Sequential"方法系统会按照顺序向Vuser分配参数值。当正在运行的Vuser访问数据表格时,Vuser会提取下一个可用的数据行。

如果在"Update Value on"(更新值的时间)列表框中指定了"Each iteration"(每次迭代),则Vuser将为每一次迭代从数据表格中提取下一个值。

如果在"Update value on"列表框中指定了"Each occurrence"(每次出现),则Vuser将为每一次参数的出现从数据表格中提取下一个值,即使它在同一次迭代中。

如果在"Update Value on"列表框中指定了"Once(一次)",则第一次迭代中分配的值就会在每个Vuser接下来所有的迭代中使用。

例如表3-2列出了数据文件的参数值。

表3-2  数据表格

Kim

David

Michael

Jane

Ron

Alice

Ken

Julie

如果选择了"Each iteration",则所有Vuser就会在第一次迭代中使用Kim,第二次迭代中使用David,第三次迭代中使用Michael,依此类推。

如果选择了"Each occurrence",则所有Vuser就会在第一次出现时使用Kim,第二次出现时使用David,第三次出现时使用Michael,依此类推。

如果选择了"Once",则第一个Vuser为所有的迭代提取Kim,第二个Vuser为所有的迭代提取David,依此类推。

如果在数据表格中没有足够的值,则VuGen返回到表格中的第一个值,循环继续直到测试结束。

2.Random:在每次循环里随机地读取一个数据,但是在循环中一直保持不变。当测试开始运行时,"随机"方法为每个Vuser分配一个数据表格中的随机值。

如果在"Update Value on"列表框中指定了"Each iteration",则Vuser将会为每一次迭代从数据表格中提取一个新的随机值。

如果在"Update Value on"列表框中指定了"Each occurrence",则Vuser将会为每一次参数的出现从数据表格中提取一个新的随机值,即使它在同一次迭代中。

如果在"Update Value on"列表框中指定了"Once",则第一次迭代中分配的随机值就会在该Vuser的所有迭代中使用。

当从LoadRunner控制台运行一个方案时,您可以指定随机顺序的种子数。每个种子值代表用于测试执行的一个随机值顺序。每当使用该种子值时,都会将相同顺序的值分配给方案中的Vuser。如果在测试执行中发现问题,并且要使用相同的随机值顺序重复该测试,请启用"Random"选项。

3.Unique:该方法为每一个Vuser的参数分配一个唯一的顺序值。

如果在"Update Value on"列表框中指定了"Each iteration",则Vuser将为每一次迭代从数据表格中提取下一个唯一值。

如果在"Update Value on"列表框中指定了"Each occurrence",则Vuser将会为每一次参数的出现从数据表格中提取一个新的唯一值,即使它在同一次迭代中。

如果在"Update Value on"列表框中指定了"Once",则第一次迭代中分配的唯一值就会在每个Vuser的所有接下来的迭代中使用。

请确保表格中的数据对所有的Vuser和它们的迭代来说是充足的。如果拥有20个Vuser,并且要运行5次迭代,则表格中必须至少包含有100个唯一值。

如果数据表格中没有足够的值,可以在"When out of value"下拉框中指示VuGen如何继续运行:"中断Vuser"、"以循环方式继续"或者"使用最后的值继续"。如果选择"使用最后的值"继续运行,则Vuser将会为所有接下来的迭代使用表格中最后一行的数据。

如果想要给每一个Vuser都分配值,并且不想让那些值在Vuser之间共享,要实现该目标,可以在图3-25中的"Allocate Vuser values in the controller"(在控制台中分配Vuser值)组合框中指示VuGen为每个Vuser的值分配一个特定的编号。默认情况下,VuGen自动为Vuser的值分配必需的编号。

要跟踪上述说的分配编号情况,请启用日志运行时设置中的"扩展日志">"参数替换"选项。当没有足够的数据时,VuGen将会向Vuser日志中写入警告消息:"在表<表名>中,此参数没有其他唯一值"。

注意:

使用该类型必须注意数据表有足够多的数。比如,控制台中设定20个Vuser进行5次循环,那么编号为1的Vuser取前5个数,编号为2的Vuser取6~10的数,依此类推,这样数据表中至少要有100个数据,否则控制台运行过程中会返回一个错误。

假如你的代码是这样的:
   
          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