目录
继上篇:LoadRunner(一)
参数化概述
- 录制飞机订票系统使用的用户、密码等数据都是相同的,与实际系统运行时的真实环境不一样。
- LoadRunner提供了参数化的功能
- 针对脚本中的某些常量,定义一个或者多个包含数据源的参数,达到模拟多用户真实使用环境的目的。
需求描述:模拟出10个用户时,如果不参数化,会导致10个用户都是用的同一个用户名+密码,这显然是有问题的。
解决方式:将变化的数据参数化。(在数据库中创建,登录)
参数化目的
使用参数化目的:
- 模拟更真实的用户使用环境
- 有些被测应用系统不允许同一个账号多次登入
参数化过程
- 确定需要参数化的常量
- 准备参数化数据
- 对脚本进行参数化
参数化方式
参数化方式
- 参数化得方式有很多种,以下是几种常见方式。其实方式略有不同,但其结果都是将数据添加进来
- 1、编辑数据
- 2、增加dat数据文件
- 3、数据库增加数据
- 4、其他类型数据设置
连接数据库
- 一般常用连接的数据库:SQL Server、Oracle、mysql
参数化操作步骤
参数化
选中要参数化的部分(此处是将前面Name对应的Value值参数化),右击,选中replace with a Parameter
更改参数名字
更改参数类型(一般用File文件类型)
原名称
参数化后的格式为{变量名}
数据源
数据来源(点击Open Parameter List图标)
手动编写数据源(此处添加的数据都要是有效数据,不然会导致登录不成功)
在打开的文件中输入数据,一行就是一条,第一行是变量名
添加好的数据如下图所示(编写好的参数化数据源文件,是可以保存到当前项目的文件夹中的):
如果已经有历史编辑好的参数化数据源文件,可以直接点击Browse...打开文件夹选择
连接数据库
1、需要安装数据库驱动:MySQL ODBC 3.51.24-X86
安装直接下一步到安装完成
2、新建连接
点击Data Wizard...
点击确定(这个操作将覆盖文件)
选中SQL选项后,点击下一步
这里面先不用填写,直接点击创建Create..
选择 机器数据源,点击 新建
选择 系统数据源
用户数据源:会限制可以使用的用户(只有当前用户可以用)
系统数据源:所有用户都可用
选择对应的数据源(此处是MySQL ODBC 3.51 Driver)——点击 下一步——在弹出的页面点击 完成
完成后会弹出对话框——按下面两张图提示填写具体内容——填完后点击 Test (测试是否能连接上)——成功连接后点击 Ok
创建成功后会回到之前的页面,可以在下图圈出来的位置看到刚刚创建的数据源,点击 确定
在框中写入需要的语句——点击 Finsh。数据会展示在页面
取其他变量数据也和上述方法一致。
数据分配与更新方式
脚本设置完参数化,脚本运行的每一遍所取的参数化的值都不一样,那么这个值按如何取?
Select next row 【选择下一行】
- 顺序(Sequential):按照参数化的数据顺序,一个一个的来取
- 随机(Random):参数化中的数据,每次随机的从中抽取数据
- 唯一(Unique):为每个虚拟用户分配一条唯一的数据
Update value on 【更新时的值】:
- 每次迭代(Each iteration):每次迭代时取新的值,假如50个用户都取第一条数据,称为一次迭代;完了50个用户都取第二条数据,后面以此类推。
- 每次出现(Each occurrence):每次参数时取新的值,这里强调前后两次取值不能相同。
- 只取一次(once):参数化中的数据,一条数据只能被抽取一次。 (如果数据轮次完,脚本还在运行将会报错)
上面两个选项都有三种情况,如果将他们进行组合,将产生九种取值方式。
像例子中的账号密码的匹配设置,应该如下:
账号:(唯一,只取一次)
密码:(和账号同一行)
可以用以下代码验证是否成功:
Sql 语句创建测试数据
DELIMITER ;;
CREATE PROCEDURE test()
BEGIN
DECLARE Y INT DEFAULT 1;
WHILE Y<5004
DO
INSERT INTO tb_member(NAME,PASSWORD,reallyName,age,profession,email,question,result)
VALUES(CONCAT('tester',Y),CONCAT('test',Y),'linda',20,'hello','hello','hello','hello');
SET Y=Y+1;
END WHILE:4
COMMIT;
END;
loadrunner 打印函数(放到vuser _init中开头):
//打印函数:
char * ip;//验证IP欺骗用
int id,scid;//定义保存 vuser 信息的 2个整形变量
char * group;//定义保存 groupname
char * filename="c:\\work.log";//手动创建存储log 文件
long file_stream;
ip =lr_get_vuser_ip();//获取当前用户IP
if((file_stream = fopen(filename,"a+")) == NULL)//打开文件
{
lr_error_message("Cannot open %s",filename);
return -1;
}
lr_whoami(&id,&group,&scid);//获取变量
lr_save_datetime("%H:%M:%S",DATE_NOW+TIME_NOW,"times");//获取当前时间,判断用户登录时间
(放到vuser_init中结尾):
if (id >0)//用户数>0
{
fprintf(file_stream,"vuser 用户的信息:time=%s,id=%d,group=%s,scid=%d,uname=%s,password=%s ,ip=%s\n",lr_eval_string("{times}"),id,group,scid,lr_eval_string("{uname}"),lr_eval_string("{pwd}"),ip);
}
fclose(file_stream);//关闭文件
点击保存——创建测试场景:(就可以在文件夹中看到生成的日志了)