loadrunner12(三) :参数化

loadrunner12(三) : 参数化


参数化往脚本中动态地代入数据,使脚本运行迭代时能够更加近似地模拟真实用户的操作行为。如下图所示,从工具栏入口进入参数化界面
在这里插入图片描述


1. 新建参数

新建参数时的窗口如图所示
在这里插入图片描述
需要注意的是,每个参数都必须对应一个.dat格式的数据文件,因为参数的本质就是引用数据文件中的值,点击 创建表,LR将会为我们自动生成本地数据文件。另外,一个数据文件可以同时被多个参数引用。


2. 编辑参数值

参数创建后,需要对参数的值进行编辑,实际上是向.dat文件中以表的等式存入数据。编辑区功能如下图所示:
在这里插入图片描述
向表中导入数据的方式有多种:

  • 1、使用图中1、2可以手动添加数据,1:修改表结构,2:编辑表中的数据。
  • 2、使用图中3,使用记事本方式编辑数据。
  • 3、导入数据库中的数据。

这里主要介绍一下从数据库中导入数据

  • 在使用数据向导之前,需要先去官网(请点我)下载MySQL8.0 ODBC驱动并安装,否则无法创建连接。(64位不行就用32位,本人64位的数据库,不知为啥要用32位的驱动才能使用)
  • 依次点击数据向导-->手动指定SQL语句-->创建-->机器数据源-->用户/系统(都行)-->在驱动列表中找到MySQL ODBC 8.0 ANSI Driver-->完成,如果一切顺利,会弹出创建连接窗口:
    在这里插入图片描述
    按照图中所示要求填写参数后,点击Test,如果提示成功,则表示可以连接,点击OK跳到 机器数据源 窗口,选择刚刚创建的连接,确定后回到 输入SQL语句 页面,连接字符串输入框中会自动填入信息,如图:在这里插入图片描述
    在SQL语句框中输入SQL查询语句,点击完成,导入成功。
  • 例:
    1. 数据库中的数据
      数据库名称在创建连接时已经选择
      在这里插入图片描述
    2. 输入SQL语句
      在这里插入图片描述
    3. 结果
      在这里插入图片描述

3. 设置参数的取值逻辑

数据文件中往往包含了很多行数据,甚至还有多列数据,每次调用参数时,它的取值逻辑影响着脚本的仿真程序,甚至错误的逻辑还会导致脚本迭代时发生错误。
在这里插入图片描述
如图,参数的取值逻辑是由图中的6、7来点来设置的。6决定了参数取哪一列的值,如果只有一列则无需设置;7决定了脚本运行中遇到参数替换时,取哪一个值。
这里主要说明一下7的设置:

  • 选择下一行
    即当脚本中的参数需要从数据表中取新值的的取值逻辑。
    在这里插入图片描述
    1. Sequential:从第一行开始取值,当需要更新值时,会按顺序取下一个值。如果迭代次数超过值的数量,将会自动从第一个值开始新循环。类似听歌时的顺序循环。
    2. Random:需要更新值时,随机从表中选取一个值,可重复。类似听歌时的随机播放。
    3. Unique:从第一行开始取值,当需要更新值时,会按顺序取下一个值,但表中值均只能取一次。因此当迭代次数超过表中的值的数量时,需要选择当值超出时如何处理。
      在这里插入图片描述
      只有选择Unique时该选项才是可选的。三个选项作用分别是:中止运行、从第一行开始取值、取最后一行的值
    4. Same line as xxx
      当参数列表中有多个参数时,选项表中会多出此选项。作用是将另一个参数作为参照,取值时选取与参照的参数同样的行数的值。这个在参数之前有关联时发挥着作用,例如用户名与密码,将会在本小结最后给出例子。
      在这里插入图片描述
  • 更新值的时间
    即何种情况下参数需要从数据表中重新取值。
    在这里插入图片描述
    1. Each iteration 开始新一轮迭代时,从数据表中重新取值。
    2. Each occurrence 运行过程中,每次遇到该参数时,从数据表中重新取值。与迭代无关系,新一轮的迭代时,仍承接上一轮迭代的最后一次更新。
    3. Once 只取一次值,之后遇到的所有该参数无论是否新的迭代,都使用这个值。

4. 范例:模拟用户名、密码登录

LR自带的旅游订票系统,从数据库中导入了账号密码的表,并设置了两个参数,分别为usernamepassword,对应表中的第一列与第二列。数据表及两个参数的设置分别如下

  1. 数据表:
    在这里插入图片描述

  2. username的参数设置
    在这里插入图片描述

  3. password的参数设置
    在这里插入图片描述

现在我们运行脚本时,password始终与当前选用的username对应,以确保以正确的账号密码登录系统。
但是需要注意的是,password的值是随着username的取值来应对的,这意味着直到下一次username更新为止,password的值是始终不变的。例如我将脚本范例1中的登录部分(25-39行部分)的username与password位置互换:

 	web_submit_data("login.pl",
 	"Action=http://127.0.0.1:1080/cgi-bin/login.pl",
 	"Method=POST",
 	"RecContentType=text/html",
 	"Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home",
 	"Snapshot=t42.inf",
 	"Mode=HTML",
 	ITEMDATA,
 	"Name=userSession", "Value={userSession}", ENDITEM,
 	\*...*\
 	"Name=password", "Value={password}", ENDITEM,
 	"Name=username", "Value={username}", ENDITEM,
 	\\"Name=password", "Value={password}", ENDITEM,
 	\*...*\
 	"Name=JSFormSubmit", "Value=on", ENDITEM,
 	"Name=login.x", "Value=60", ENDITEM,
 	"Name=login.y", "Value=1", ENDITEM,
 	LAST);

之后再运行脚本,会发现运行错误,查看日志发现从第二次迭代开始报错,我们截取各次迭代中的参数取值部分如下:

  1. 第1次迭代
    在这里插入图片描述
  2. 第2次迭代
    在这里插入图片描述
    第2次迭代时,由于password参数先于username,而username的值未更新,因此此时的password的值对应第1次迭代中的username对应的值,为第5行。接下username参数更新为第3行,将第3行的username与第5行的password作为用户名和密码进行登录,显然会无法登录。
    至于为什么第1次迭代时在username未取值的情况下,password能先行取值,并且能与后取值的username对应,希望有大神能够留言帮忙解惑一下~
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值