LoadRunner VuGen脚本增强之参数化

来源:互联网 发布:php b2c商城系统 编辑:程序博客网 时间:2024/05/16 12:15

LoadRunner学习笔记4-LoadRunner VuGen脚本增强之参数化

使用LoadRunner做测试,如果我们需要模拟不同用户登录系统,通过参数化,我们可以实现。LoadRunner中的参数化有两种,一种是俗称文件形式的参数化,一种是数据库形式的参数化。

一般参数化的应用场景有如下几种:1)真实的模拟用户操作。2)系统不允许同一个用户频繁地进行相同操作。3)系统对数据的唯一性有要求。设置参数化的一般步骤为:分析需要参数化的数据->设计数据分配方式->查找替换对象。

一、文件参数化

假设用户登录需要用户名、密码两个参数。我们先把用户名进行参数化,参数化的值分别为canshu1,canshu2,canshu3,它们的密码都是123456。操作步骤如下:

1.点击工具栏中的参数按钮,弹出下图的参数化对话框,单击new按钮,并重命名为username。

这里写图片描述

2.单击菜单中的Edit with Notepad,在弹出的文本中输入参数化的值,每个值占据一行,最后保留一个空行,然后保存关闭即可。如下图所示:

这里写图片描述

3.回到脚本中,找到要参数化的用户名,双击选中,单击鼠标右键,选择Use Existing Parameter->username。

4.完成参数化后,参数username被{}包围,这是在LoadRunner中的规则。

"Name=username", "Value={username}", ENDITEM,

5.单击菜单Vuser->Run-Time Setting->RunLogic,设置迭代次数为3,这样才能验证参数化是否正确。

这里写图片描述

6.运行并验证,经过三次迭代后,脚本没有问题,都可以正常登录。

如果用户名和密码想要一一对应,参数化方法如下:

1.重复上述步骤,参数化用户名。新建参数pwd,并选择File为username.dat.

这里写图片描述

2.单击Add Column按钮,弹出对话框后,单击OK按钮。

3.单击Edit with Notepad按钮,输入与用户名对应的密码。

这里写图片描述

4.回到脚本中替换掉密码即可,方法与用户名的替换相同,替换完成后的代码如下:

"Name=username", "Value={username}", ENDITEM, "Name=password", "Value={pwd}", ENDITEM,

二、数据库参数化

文件参数化的方法可以完成大部分的测试需求,但是可能在遇到超大数据量时并不适用。这时,我们就需要使用数据库参数化。

要想使用数据库参数化首先就需要安装ODBC,我选择的是MySQL数据库。MySQL数据库安装教程在我的博客里有:MySQL数据库安装。下载一个MySQL ODBC 并安装到本地,之后配置即可。注意:LoadRunner只能识别32位的ODBC驱动。如果在安装ODBC过程中出现找不到模块的错误,在安装VC 2010后,还是不行的话,那就更换低版本的驱动试试。

1.在脚本里新建一个参数,名为usernamedb。

2.单击Data Wizard按钮,在弹出的对话框中选择Specify SQL statement manu并单击“下一步”按钮。

3.单击Create按钮,在弹出的对话框中选择机器数据源后单击新建按钮。

4.选择系统数据源并单击下一步按钮,选择MySQL ODBC 驱动,并单击下一步按钮,出现如下界面:

这里写图片描述

5.完成上述填写并确定后,在列表看到新建的数据源。双击数据源后,可以把此数据员配置到Data Wizard中。

这里写图片描述

这里写图片描述

6.在上图中的SQL处输入想要查找的SQL语句,如select * from test,这样就可以查询出想要的数据,之后单击Finish按钮,完成所有设置。最后结果如下图所示:

这里写图片描述

在实际工作中,只需要变换MySQL信息以及对应的SQL语句即可。

三、“五彩斑斓”的数据化

LoadRunner的参数化功能十分强大,可以在参数化对话框的Parameter type下拉列表中选择参数化类型。

参数化的类型非常多,但一般最常用的是File和Table类型,其他参数的类型用法总结如下:

Date/Time:可以需要参数化日期的地方使用此类型。
Group Name:使用该虚拟用户所在的Vuser Group名称来代替参数化。
Iteation Number:使用脚本执行的当次迭代次数来代替参数化。
Load Generation Name:使用产生Vusers负载的名称来代替参数化。
Random Number:使用一个随机数来代替参数化。
Unique number:使用一个唯一的整数来代替参数化。
User Defined Functions:扩展接口,可从用户开发的DLL文件中提取数据。
Vuser ID:使用虚拟用户的ID来代替参数化。
XML:提供对XML格式数据的支持。可以从XML中读取数据进行参数化。

四、参数化数据分配方式

参数化设置完成后,更新分配值的方法设置更重要。理解如下两个概念:

1.Select Next Row:选择下一行的策略
sequential:顺序执行
Random:随机取行
Unique:使用唯一行

2.Update Value on:
Each iteration:每次迭代都要取新值。
Each Occurrence:只要发现该参数就去取新值。
Once:在所有的反复中都是用同一个值。

这两个组合起来有9种可能,详细描述见下表:

实例数据:A、B、C
虚拟用户:Vuser1、Vuser2、Vuser3
脚本中参数出现三次,脚本迭代三次。

注意:使用Unique类型必须注意数据表有足够多的数。
比如Controller 中设定20 个虚拟用户进行5 次循环,那么编号为1 的虚拟用户取前5个数,编号为2 的虚拟用户取6-10 的数,依次类推,这样数据表中至少要有100个数据,否则Controller 运行过程中会返回一个错误。
因此Unique类型例子在数据表中加入数据D、E、F、G、H、I。

Select next row Update Value on 实际运行结果 实例 sequential each iteration 在某次循环中所有用户取值相同。所有用户第一次循环取第一行值,第二次循环取第二行值 第一次迭代,无论参数任何时候出现,Vuser1、Vuser2、Vuser3,取A
第二次迭代,无论参数任何时候出现,Vuser1、Vuser2、Vuser3,取B
第三次迭代,无论参数任何时候出现,Vuser1、Vuser2、Vuser3,取C sequential each occurrence 在某次循环中或者脚本中使用参数的地方,所有用户取值相同。脚本中出现要使用参数的话,参数值就更新一次,循环一次值再更新一次 第N次迭代,参数第一次出现,Vuser1、Vuser2、Vuser3,取A
第N次迭代,参数第二次出现,Vuser1、Vuser2、Vuser3,取B
第N次迭代,参数第三次出现,Vuser1、Vuser2、Vuser3,取C sequential once 在所有的循环中所有用户取值相同。所有的用户所有的循环中,只用一个值(即参数中的第一行值) 无论如何所有用户都取A random each iteration 不同的用户,在不同的循环次数中,随机取值 第N次迭代,无论遇到该参数多少次,Vuser1都只取A,或者B,又或者C,本次迭代不再更新
第N次迭代,无论遇到该参数多少次,Vuser2都只取A,或者B,又或者C,本次迭代不再更新
第N次迭代,无论遇到该参数多少次,Vuser3都只取A,或者B,又或者C,本次迭代不再更新
在N+1次迭代,每个Vuser重新随机抽取数据 random each occurrence 不同的用户,脚本中出现要使用参数的话,随机取值一次,循环一次再随机取值一次 第N次迭代 第一次遇到该参数,Vuser1、Vuser2、Vuser3在A、B、C中随机抽取一个
第N次迭代,第二次遇到该参数,Vuser1、Vuser2、Vuser3重新在A、B、C中随机抽取一个
第N次迭代,第三次遇到该参数,Vuser1、Vuser2、Vuser3重新在A、B、C中随机抽取一个
在N+1次迭代,每个Vuser继续保持每遇到一次参数就重新抽取一次数据 random once 不同的用户,不管循环多少次,只随机取值一次 第N次迭代,无论遇到该参数多少次,Vuser1都只取A,或者B,又或者C
第N次迭代,无论遇到该参数多少次,Vuser2都只取A,或者B,又或者C
第N次迭代,无论遇到该参数多少次,Vuser3都只取A,或者B,又或者C
在N+1次迭代,每个Vuser不会重新抽取数据 unique each iteration 若选择手工自配参数,那LR按照每用户几个参数先分配参数,然后进行循环。
若选择自动分配参数:Controller中edit schedule中run until comletion:按照循环次数先分配第一个VU(例如设置的循环次数为3,那分配给第一个VU 3个参数值),然后接下来的3个参数值分配给第二个VU,依次类推….
Controller中edit schedule中run for:若选择自动分配,LR将按照用户数均分参数,剩余的参数不使用。 第一次迭代,无论参数出现多少次,Vuser1取A,Vuser2取D。Vuser3取G
第二次迭代,无论参数出现多少次,Vuser1取B,Vuser2取E,Vuser3取H
第三次迭代,无论参数出现多少次,Vuser1取C Vuser2取F,Vuser3取I unique each occurrence 只能手工分配用户,给每个用户分配好X个参数后,在脚本中有参数的地方,就使用已经分配好的X个参数 第一次迭代,第一次出现该参数Vuser1取A,Vuser2取D Vuser3取G
第一次迭代,第二次出现该参数Vuser1取B,Vuser2取E,Vuser3取H
第一次迭代,第三次出现该参数Vuser1取C Vuser2取F,Vuser3取I unique once 按照用户数分配给每个用户分配一个参数而已。以后的循环这个用户就使用这一个参数 无论进行多少次迭代,无论参数任何时候出现,Vuser1取A Vuser2取B,Vuser3取C

参考文章:LR中select next row和update value on的设置

0 0
原创粉丝点击