LoadRunner参数化详解

一、 参数化的方法

选中需要参数化的数据

方法一,右键---Replace with a new parameter

方法二,菜单【insert----new Parameter…

 

 

Parameter Properties (参数属性对话框)----我们的参数化设置就通过这个对话框完成.

 

 

二、参数化的方式:

其实参数化得方式有很多种,这里简述几种比较常见人方式。其实方式略有不同,但其结果都是将数据添加进来。

1 编辑数据

点击Create Table 会出现表格,在表格,再次点击Edit with Notepad ,然后会打开一个记事本,我们可以对记事本进行添加数据

 

 

2 添加dat数据文件

 点击File输入框后面的Browse..按钮,找到本地的txt数据文件,进行添加就可以了。

注意点:使用相对路径,把.txt文件放到脚本所在的目录,然后使用“./data.txt”,如果是脚本所在目录下的文件夹内,则“./file/data.txt”

 

需要注意的是,文件里面的数据不要乱写,每条数据一行,数据最后有且仅有空一行,不然会读取有误。

 

3 数据库添加数据

在很多情况下,我添加的数据不是十条二十条,也不是一百两百,如果还通过上面的两种方式添加,我想会是一件非常纠结的事情。所以我们可以通过数据库将数据导入。你是否疑虑数据库的数据怎么弄,数据库的数据生成非常简单,可以写一段简单的代码生成,也可以通过数据库数据生成工具来完成

点击Date Wizard 打开连接数据库向导。 

选择对应数据库的驱动程序,win7中自带没有MySQL的数据源驱动,需要下载安装。(mysql-connector-odb)

选择新建好的数据源,点击确定后会有

点击“finish”,则数据库中的数据就会被导出到参数化列表中,如下图所示:

意外情况:有时候,mysql服务器出于安全考虑,默认只允许本地登录数据库服务器,则会出现以下这种情况(使用客户端连接的话,错误码是1130)

解决办法 :

   改mysql的user表,具体方法如下:

        1、(进入mysql)先用use mysql;进入名字为mysql的数据库;

        2、mysql>update user set host='%' where host='localhost' and user='root';

        3、mysql>flush privileges;

        4、使用查询语句查看是否修改过来:mysql>select host,user from user;

结果中若有,host为“%”的root用户,则直接在SQLyog等客户端重新连接,就会连接成功,问题解决。

解决方法二:如果在服务器本机有装了连接工具,则可以使用以下命令赋予权限:

授权所有数据库的所有表的所有权限给ip为任意值用户名为test密码为pwd的用户

GRANT ALL ON *.* TO 'test'@'%' IDENTIFIED BY 'pwd';

通常不用这种方式,而是直接在数据库中把数据查询出来,然后放到参数化列表当中。(数据库中的表数据有中文,貌似读出来是乱码)

 

4 时间类型参数化

如果我们要参数化的不是一个文件,比如是特定的日期时间,可以从Parameter type 列表中进行选择

 

这里可以设置日期时间格式(可自定义),循环迭代方式,不过除了file类型外。

5 参数化之Unique Number

天开发人员让最近刚写的一个游戏做性能测试,由于这款游戏是刚刚写了一部分,为了选择框架,所以想在前期做一个性能对比,但是要求比较多:

1、所有的链接进来的线程不能关闭并且不能重复,所以socket这块就要设置惟一数

2、所有用户的use_id当然也不能重复,所以这也要一个惟一数

3、游戏的座位号也要求惟一数

由于以上需求,不得不对参数化这块要研究一下了,刚开始打算自己写一个呢,但是考虑的并发和多台压力机并发的时候无法保证其唯一性,所以感觉自己写一个压力不小,所以放弃了该想法。

于是尝试loadrunner自动的参数化功能,但是对这块的功能不是很了解,不过还好设置不多,多做几次试验就可以明白,于是着手研究。经过多次测试终于发现了该规律,在下图注释一下:

例如:

如果start=1,Block size per Vuser=10000时,就相当于给每个用户分配了10000个惟一数字,第一个用户从1开始,第二个用户从10001开始,第三个用户从20001开始,依次加10000;

但是如何设置好start 和Block size per Vuser这也是一门学问,设置不好就会出现数字不够用的情况,刚开始我就在这块走了很多弯路,经过百度发现如果一下个公式供大家参考:

设:块大小设置为:B(block),起始值为:S(start),当前用户为:N(number),当前取值为V(value)

则:

V = B*(N-1)+S

6 参数化之Random Number

 

三、参数化之间的关联

  前面我们已经对用户名进行了参数化,或对密码进行了参数化,这样是不是脚本就能正常跑了,不好说。因为用户名和密码不是一一对应关系,每次运行脚本时取的用户名和密码没有对应上的话肯定就会出问题。

假设,我们已经对用户名已经进行了参数化,参数名为【username】,下面设置密码参数化与用户名关联。

 

点击Properites…会打开编辑用户名参数化窗口。File列表框中,刚才保存用户名信息的文件"username.dat"

 

点击Add Column,添加新的一列信息,用于放置密码。

 

点击Edit with Notepad再次编辑参数化数据文件,使用户名密码建立一一对应关系。

 

完成之后,我们已经成功对用户名和密码进行了参数化,并且让用户名和密码形成了对应关系。

 

四、数据分配与更新方式  -- 重点

  脚本设置完参数化,脚本运行的每一遍所取的参数化的值都不一样,那么这个值按照个什么情况来取呢?会有很多种方式

Select next row【选择下一行】:

 

顺序(Sequential:按照参数化的数据顺序,一个一个的来取。

随机(Random:参数化中的数据,每次随机的从中抽取数据。

唯一(Unique:为每个虚拟用户分配一条唯一的数据

 

Update value on【更新时的值】: 

 

每次迭代(Each iteration) :每次迭代时取新的值,假如50个用户都取第一条数据,称为一次迭代;完了50个用户都取第二条数据,后面以此类推。

每次出现(Each occurrence):每次参数时取新的值,这里强调前后两次取值不能相同。

只取一次(once) :参数化中的数据,一条数据只能被抽取一次。(如果数据轮次完,脚本还在运行将会报错)

 

上面两个选项都有三种情况,如果将他们进行组合,将产生九种取值方式。

Select Next Row

【选择下一行】

Update Value On

【更新时的值】

Replay Result

【结果】

顺序(Sequential

每次迭代(Each iteration)

结果:分别将15条数据写入数据表中

功能说明:每迭代一次取一行值,从第一行开始取。当所有的值取完后,再从第一行开始取

如:如果参数化文件中有15条数据,而迭代设置为16次,那执行结果中,参数化文件第一行的数据有两条

顺序(Sequential

每次出现(Each occurrence)

结果:分别将15条数据写入数据表中

功能说明:每取值时(不管是否迭代)取一行值,从第一行开始取。当所有的值取完后,再从第一行开始取

如:如果参数化文件中有15条数据,而迭代设置为16次,那执行结果中,参数化文件第一行的数据有两条

顺序(Sequential

只取一次(once)

结果:表中写入15条一模一样的数据。

功能说明:每次迭代都取参数化文件中第一行的数据。

随机(Random

每次迭代(Each iteration)

结果:表中写入15条数据,但可能有重复数据出现

功能说明:每次从参数化文件中随机选择一行数据进行赋值

随机(Random

每次出现(Each occurrence)

结果:表中写入15条数据,但可能有重复数据出现

功能说明:每次从参数化文件中随机选择一行数据进行赋值

随机(Random

只取一次(once)

结果:表中写入15条相同数据

功能说明:第一次迭代时随机从参数化文件中取一行数据,后面每次迭代都用第一次迭代的数据。

唯一(Unique

每次迭代(Each iteration)

自动分配块大小

结果:分别将15条数据写入数据表中

功能说明:第一次迭代取参数化文件中的第一条数据,第二次迭代取第二条数据,以此类推。

注:如果设置迭代次数为16次。结果:在执行第16次迭代时会抛异常,异常日志可在LoadRunner的回放日志(replayLog)中看到。

唯一(Unique

每次出现(Each occurrence)

步长为1

结果:分别将15条数据写入数据表中

功能说明:第一次迭代取参数化文件中的第一条数据,第二次取值时(不管是否迭代)取第二条数据,以此类推。

注:如果设置迭代次数为16次,而参数化文件中只有15条数据,明显数据不够。此时可以设置“when out of values属性来判断当数据不够时的处理方式

Abort Vuser:中断虚拟用户

Countinue in a cylic manage:循环取参数化文件中的值,即:当参数化文件中的值取完后又从参数化文件的第一行开始取值。

Countinue with last value:继续用最后一条数据

唯一(Unique

只取一次(once)

结果:表中写入15条相同数据

功能说明:每次都取参数文件中的第一条数据进行赋值

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值