51Testing丛书连载:(十九)性能测试从零开始——LoadRunner入门

发表于:2008-8-19 17:55

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:柳胜    来源:51Testing软件测试网

  5.7  数据驱动——参数化(Parameters)
  数据驱动就是把测试脚本和测试数据分离开来的一种思想,脚本体现测试流程,数据体现测试案例。数据不是hard-code在脚本里面,这样大大提高了脚本的可复用性。而LoadRunner的参数化功能是数据驱动测试思想的一个重要实现。
  在本节中,我们要学习的是:理解参数的局限性,建立参数,定义参数的属性,理解参数的类型,为局部数据类型设置参数的属性,为数据文件设置参数的属性,从已经存在的数据库中引入数据。
  5.7.1  为什么需要参数化
  在录制程序运行的过程中,Vugen(脚本生成器)自动生成了脚本以及录制过程中实际用到的数据。在这个时候,脚本和数据是混在一起的。
  比如,你用VU的Web Vuser录制一个用户登录Web系统的过程,对于登录的操作,会生成以下脚本:

web_submit_form("auth",
        "Snapshot=t2.inf",
        ITEMDATA,
        "Name=ssousername",
        "Value=robin", ENDITEM,
        "Name=password", "Value=123456", ENDITEM,
        "Name=remember", "Value=<OFF>", ENDITEM, 
        LAST);

  web_submit_form是登录触发的动作,而“robin”和“123456”是填入的数据。如果Controller里以多用户方式运行这个脚本的时候,每个虚拟用户都会以同样的用户名“robin”、密码“123456”去登录Web系统。这样做性能测试,我们的客户可能不会答应,因为这显然不是一个真实的业务场景。尤其现在服务器大多会采用Cache功能提高系统性能,用同样的用户名/密码登录系统的Cache命中率会很高,也要快得多。
  因此,我们的客户希望当用LoadRunner多用户多循环运行时,不会只是重复一个用户的登录,也就是说,此函数中的数据要能变化,这样的话,就把这些数据用一个参数来代替,其实就是把常量变成变量。参数化后的脚本如下:

web_submit_form("auth",
        "Snapshot=t2.inf",
        ITEMDATA,
        "Name=ssousername",
        "Value={username}", ENDITEM,
        "Name=password",
        "Value={passwd}", ENDITEM,
        "Name=remember", "Value=<OFF>", ENDITEM, 
        LAST);

  参数化后,用户名“robin”被一个参数{username}替换,密码“123456”被另外一个参数{passwd}代替。{username}和{passwd}分别和参数文件关联,在脚本运行时,用户名和密码的值从参数{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”)中定义参数括号种类。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号