脚本开发遇到的问题:
1)被业务场景所迫: 所有用户都输入相同的数据,不能体现出真实的业务环境。(搜索操作)
2)被系统体系所迫: 存在缓存,不能体现出真正的性能。
3)被系统业务约束所迫: 有些系统禁止一个用户多次登陆的系统,也就严重到无法测试的地步 了。
Loadrunner中提供一种机制帮助解决上述问题, 叫参数化(parameterization)
参数化
LoadRunner中的参数化和 函数的参数 不要混淆
那些能参数化
大部分情况下只有函数的参数才能参数化,但也不是所有函数的参数都可以参数化。
需要参数化的:
1、登陆认证信息
2、一些和时间相关的,违反时间约束的
3、一些受其他字段约束的
4、一些来自于其他数据源(例如数据库的)
5、其他在运行过程中需要变动的
Action() { int i={NewParam}; //错误的参数化 return 0; } Action.c (3): undeclared identifier `NewParam'
参数化方法
下面演示参数化
Action() { web_url("s", "URL=https://www.baidu.com/s?wd=ccc", "Resource=0", "RecContentType=text/html", "Referer=http://www.baidu.com/", "Snapshot=t6.inf", "Mode=HTTP", LAST); return 0; }
运行结果
下面对,kw进行参数化。右键ccc
这时候参数化后,显示参数化变量。前后大括号在 tool-generaloptions设置。
设置参数内容:右键参数名
可添加列,searchtext.dat文件在保存路径下。
用记事本编辑,记事本最后一定要且只有一个空行。不然lr会报错。
设置action迭代次数为3.可将每次请求的kw换成数据列中的数据。
运行将参数输出到log。
运行结果:
Action.c(3): 通知: 参数替换:参数“searchtext”=“ccc” Action.c(3): 通知: 参数替换:参数“searchtext”=“bbb” Action.c(3): 通知: 参数替换:参数“searchtext”=“aaa”
2、参数化取值方法
select next row : 获取下一行数据的方式
Sequential:顺序
Random:随机
当参数文件为:
text 1 2 3 4 5
前面2种对于虚拟用户来讲,都是按以下顺序执行:
user1:1,2,3,4,5, user2:1,2,3,4,5, user3:1,2,3,4,5, user4:1,2,3,4,5,
Unique:唯一。这个值,我这个user选了这个参数,其他的user都不能选。
参数searchtext的值为
searchtext 1 2 3 4 5
代码
Action() { lr_output_message("当前的参数值是:%s",lr_eval_string("{searchtext}")); return 0; }
1、选择AbortVuser。Action迭代6次返回结果。超出范围,Vuser被终止。
Action.c(3): 通知: 参数替换:参数“searchtext”=“5” Action.c(3): 当前的参数值是:5 正在结束操作 Action。 正在结束迭代 5。 正在开始迭代 6。 错误: 参数 'searchtext': 表 'searchtext.dat' 中没有该参数的其他唯一值[唯一范围是 1-5]。根据“When Out Of Values”策略,Vuser 被中止。