参数化测试数据
PS:本人在51testing和sina blog上的文章全部为原创,转载请注明出处!!
制作参数化数据时,先了解参数化的一些知识:
1、参数化就是用变量取代固定的输入值,以产生不同的输入值,从而获得不同的输出结果。
例如:用户的登录测试,我们需要不同的用户名和密码才能模拟很多用户同时登录。因为不断的用一个用户登录,这个用户可能加入了服务器的缓存里,再次登录是从缓存里直接获取信息验证,造成测试效果失真;另外,有的系统也只允许同一个用户只能登录一次;这样的情况下,使用参数化就能搞定了。
2、参数化的做法请参考lr的vgn帮助手册
建议到论坛里下载lr8.1的vgn中文帮助手册
3、参数值的引用方法
参数值的引用分2种:一是直接引用,一个是使用lr_eval_string函数引用
一、直接引用
引用格式为:{参数名}
一般在web_url、web_submit_data等函数体里使用,例如:
lr_save_string("index.asp","url");
lr_save_string("410","fid");
lr_save_string("555","cid");
web_url("{url}",
"URL=http://192.168.5.113/bbs/{url}?theurl=http_Colon_//192.168.5.113/bbs/post.asp?fid={fid}_And_cid={cid}",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
EXTRARES,
"Url=images/gslt.gif", "Referer=http://192.168.5.113/bbs/top.htm", ENDITEM,
LAST);
通常,使用lr的参数替换功能形成的参数,格式都是这个。
二、lr_eval_string()
这个引用通常是在赋值和打印等操作中,用来引用形参所对应的实际值。
例如:lr_save_string("这是实际值!","values");
lr_message("实际值是:%s",lr_eval_string("{values}"));
4、参数化策略和示例
请参考:http://bbs.51testing.com/thread-78454-1-1.html
5、参数化数据最大不能超过32000行
这个是我有一次参数化大量数据时发现的,因为一旦参数化的数据超过这个数字,LR的vgn就会自动关闭,没有任何提示。
后来通过实验,才发现32000行是个限制值,目前我也不知道怎么去修改这个值。
而且,从数据库中查询值的时候,有个限制,这个限制也是不能超过32000!!
另外,我有个猜想,LR从数据库中取值后,应该也是放到dat数据文件里再取值,其实是和直接从txt、dat文件里读一样。
参数化数据的准备方法:
1、用户名和密码
用户名和密码是用参数化最多的测试输入,通常需要在DB中生成一定数量的记录,然后copy出来保存在文件里或者直接参数化都可以引用。
2、当前时间和随机数
当前时间请参考我的blog的文章:http://www.51testing.com/?6343
随机数请参考ZEE的一篇文章:http://zeeslo.bokee.com/6177214.html
3、通过关联获取
请参考关联:http://zhidao.baidu.com/question/19338536.html
4、通过相关函数获取
可使用lr_save_datetime、lr_save_string、lr_param_increment、lr_save_int、lr_save_searched_string、lr_save_var等函数将对应的值保存为参数
具体请参考LR的函数手册。