51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1871|回复: 5
打印 上一主题 下一主题

[转贴] 细说LoadRunner参数化

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-7-17 14:22:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前言:为什么这里说是细说LoadRunner参数化,在书和网上到处都能找到关于LoadRunner参数化的内容,但是细心的读者不能难发现,虽然现在很多资料都有关于参数化的内容,但写的都不够详细,对于初学者来说是一件很困难的事,而参数化又是编辑脚本最重要的一部分之一,没有学好参数化就不能算是一名合格的性能测试工程师,因此,在这里我将自己理解的关于参数化的内容写出来和初学者共享,希望这份资料对大家学好参数化部分的知识有帮助。
首先:为什么要对脚本进行参数化
a)         为了减少脚本的大小和脚本数量,借助参数化我们可以减少脚本的数量,如果不进行参数化我们为了达到目标可能要拷贝并修改很多个脚本。
b)        使业务更接近其实的客户的业务,每个虚拟用户使用不同参数值来模拟这样才接近客户的实际情况。
第二:怎么进行参数化
首先在这里先声明一下,下面所有使用的例子都是录制LoadRunner中自带的的那个例子的注册过程。
这里包括两部分的部分:
a)         编辑脚本,使用参数代替常量;
b)        设置参数的属性和数据源;
那么如何进行参数化呢?选中要参数化的内容点右键-->Replace with a parameter(如下图)。输入参数化的名称,假设为password。
这时要我们要注意的一个问题是,当参数化结束后,脚本保存的根目录下会多出一个参数化的文件,
接下来的工作就是将参数化文件合并,这里只有两个参数化文件,合不合并可能不会有多大影响,但是如果当有多个参数化文件并且每个文件都占很大空间时,
图中多出两个参数化的文件(pw和user)就是刚才对两个数进行参数化后的文本文件,当然一般的情况下不要将这个参数化的文件放到脚本的目录下,而应该是放到一个专门的文件下,这样可以保证参数化文件与脚本分离,如我们新建一个文件夹parameter,将所有参数化的文本文件都放到这个文件夹下。
这里我们只是两个参数化文件,那么当有很多参数化文件怎么办呢,因为当一个项目很大时,其录制的业务很多时,参数化文件会很多,甚至上几百MB时,这时为了方便管理参数化文件和节约空间我们会对参数化文件进行合并到一个文件夹中,如果上面两个参数化文件就可以合并,参数化之间用逗号隔开即可,如下图合并好后的参数化文件。
再看一下参数化的属性:
a)        参数类型属性:
1.         "Date/Time"(日期/时间)参数类型:
"Date/Time"类型用当前的日期和/或时间替换参数。要指定日期/时间的格式,可以从菜单列表中选择,或者指定实际需要的格式。该格式应该与脚本中录制的日期/时间格式相对应。还可以单击该对话框中相应的按钮对格式进行添加、删除、还原等操作。
2.         "Group Name"(组名)参数类型:
用Vuser组的名称替换参数。创建方案时,要指定Vuser组的名称,否则运行VuGen的脚本时,组名始终为"无"。但在VuGen中运行时,Group Name将会是None。
3.         "Iteration Number"(迭代编号)参数类型:用当前的迭代编号替换参数。
4.         "Load Generator Name"(负载生成器名)参数类型:用Vuser脚本的负载生成器名替换参数。负载生成器是运行Vuser的计算机。
5.         "Random Number"(随机编号)参数类型:用一个随机生成的整数替换参数,可以通过指定最小和最大值,设置随机编号的范围。
6.         "Unique Number"(唯一编号)参数类型:用一个唯一编号替换参数。"Block size"(块大小)指明分配给每个Vuser的编号块的大小。每个Vuser都从其范围的下限(start)开始,在每次迭代时递增该参数值。
7.         "Vuser ID"参数类型:LoadRunner使用该虚拟用户的ID来代替参数值,该ID是由Controller来控制。在VuGen中运行脚本时,VuGen将会是-1。
8.         File参数类型:可以在参数属性中编辑参数文件,也可以直接编辑好参数文件通过路径来选择,还有从现成的数据库中提取。这是参数化最常的一种参数类型。
b)        Browse属性:
这里是用来选择参数文件的路径,这里要注意的一个问题是,一般我们在做参数化的时候没有单独把参数文件放到一个文件夹下,所以一般我们都没有更改过这块,但我们上面已经讲过,一般都会将参数化文件合并到一个文件下并放到一个专门管理参数的文件夹下,这样我说就要选择参数的路径,否则无法读到参数文件中的参数,具体的如下图。
选择好之后,会列出参数化文件中所有的项,如下图:
注意:读者可能会发现,这样如果我们换一个把这个脚本拷贝到另外一台机器上去这个路径不就出错了吗?也就是我们的脚本可移植性不好,对是的,会出错,因为这里写的是绝对路径,如果换到其它的一个盘或机器,运行就报错了,那么怎么解决这个问题?这里我们采用相对路径来解决这个问题,这是我们Browse设置为相对路径,将脚本的根目录使用“。“来代替。见下图,这样就不会出错了。
这样就解决了上面的那个问题,具体更好的可移植性了。
c)         导入数据方法:
LoadRunner允许使用Microsoft Query或者指定数据库连接字符串与SQL语句,利用参数化从已存在的数据库中导入数据。在这里这两种导入数据的方法的区别在于使用Microsoft Query时,不要新建数据源,在导入向导过程中直接连接数据库,而手动指定数据库字符器,需要先做好数据源,现在一般都使用这种方法。
下面我们来看一下使用Data Wizard中的Specify SQL statement manually如何导入数据库中的数据。
首先建立一个数据源,在这里我个做一个数据源,名称为LR,点击Data Wizard按钮,选择使用SQL语句(如下图)。
接下来是选择数据源和写SQL语句(如下图)。
连接成功后,数据将会被成功的导入,下面我们看一下数据库中数据被导入到的情况。
d)        Select next now属性:
注意:这里要注意的是所有的Select next now属性选择是针对虚拟用户来说的,也就是这里的策略是针对Controller设置的,在调试脚本的过程中是看不出来的,其决定虚拟用户如何选择参数的过程。
Ø         Sequential:虚拟用户Vuser按照行顺序的进行读取参数文件中的数据,如果参数文件中没有足够的数据,则返回到第一个值,并一直循环到结束。
例:如上图我们这里有arivn01到arivn07七个数据,假设我们有10个Vuser,那么第1个Vuser读到的参数为arivn01,于此类推,到第8个Vuser的时候,这里表中已经没有数据了,于是又从第一个数据开始读取,故第8个Vuser读到的数据是arivn01,第9个Vuser读到的数据是arivn02。
Ø         Random:每个Vuser从表中随机的读起参数数据,假设有50个数据,那么随机数
将在1~50之间随机取一个,然后把这个数做为行号,去读取相应行的参数数据。
Ø         Unique:唯一的数,即每个Vuser取到的参数均不一致,这里强调了用户的差异性。
Ø         Same link as ***:如果一个脚本中定义了多个参数,而有一些参数应该是对应的关系,如上图中的用户名和密码就是对应关系,即密码应该始终和用户名对,这时就要用到这个选项。
e)        Update value on属性:
注意:这里设置的策略是针对脚本的迭代来讲的,也就是说这里的一切策略其仅仅在脚本迭代次数发挥作用,而对Vuser选择参数没有影响。
Ø         Each iteration:脚本每迭代一次都访问数据表中的下一个值。
注意:如果在一次迭代过程中,某个参数使用到两次,如下图这个例子中,在一次迭代中使用到两次用户名和密码,这两次使用的同一个数据,而并不是两个数据。
下面我们来看一下编辑的结果
第一次迭代使用表中数据的结果
再看第二次迭代使用表中数据的结果
Ø         Each occurrence:参数在每次迭代的过程中,参数的值都的更新。
注意:如果一个参数在一次迭代过程中出现多次,在同一次迭代过程中也得更新,下面同样看这个例子,其迭代的结果。
Ø         Once:在同一个Vuser中一直取同一个参数,表中的数据不参于迭代的过程。
还是看我们上面的例子的结果:
到这里参数化的过程已经全部讲完,这里总结一下,参数化过程中要注意的问题:
1)        参数化文件尽可能少,因为参数是放在内存中的,占用了内存的资源;
2)        参数化文件与脚本分离;
3)        参数文件的路径应该以相对路径来取;
4)        一些时候为了使参数更具有真实性,参数应该从数据库中来获得;
5)        参数类型的选择;
6)        参数的数据一般要由业务决定;
后记:参数化到这里已经彻底讲完了,主要涉及的内容是:
1)        为什么要进行参数化;
2)        如何进行参数化;
3)        参数化过程中要注意那些问题:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2
回复

使用道具 举报

该用户从未签到

2#
发表于 2017-7-17 16:42:10 | 只看该作者
参数化再怎么样都说不够细啊
回复 支持 反对

使用道具 举报

  • TA的每日心情
    慵懒
    9 小时前
  • 签到天数: 2804 天

    连续签到: 3 天

    [LV.Master]测试大本营

    3#
    发表于 2017-7-18 08:16:57 | 只看该作者
    有图就更好了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2017-7-21 13:31:10 | 只看该作者
    请问一下,日期如何参数化啊,不是取当前时间。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-8-25 10:40
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]测试营长

    5#
    发表于 2017-8-4 10:42:00 | 只看该作者
    有视频更好了
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-6 17:22 , Processed in 0.071580 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表