软件测试工具LoadRunner模拟真实用户访问、
在进行压力测试设计时,总会碰到一些case需要考虑用户实际的行为对系统的影响。使用lr录制脚本时,有很多方法都可以模拟用户的真实使用状态,例如:
1、lr_think_time()函数的使用可以模拟用户浏览的操作;
2、模拟Network Speed(Runtime-setting下的Network-Speedsimulation),可以模拟用户访问速度为最大带宽、自定义带宽以及各个连接模式的带宽(ADSL、ISDN等);
3、代理设置(Runtime-setting下的Internet里的proxy设置),可以模拟用户访问的代理服务器设置;
4、IP欺骗,设置IP欺骗可以模拟vuser使用不用的IP进行脚本运行,具体设置请参考51testing里的相关。帖子
如果一个页面上有很多业务项入口,我们要测试用户访问后会选择某个业务项进入浏览的压力,这个时候我们可以考虑如下设置来模拟:
1、分别录制多个脚本,在场景控制器中加载多个组,应用不同的组策略来模拟用户的业务访问:
例:有100个用户登录首页,然后有30个人去访问【新闻】业务,有40个人访问【财经】,还有30个人访问【论坛】;
(1)、分别录制访问【新闻】、【财经】、【论坛】的脚本 ;
(2)、使用场景控制器(Controller) ;
(3)、添加组(group)【新闻】脚本,设置vuser数为30;添加组(group)【财经】脚本,设置vuser数为40;添加组(group)【论坛】脚本,设置vuser数为30。
2、在一个脚本里录制多个action,然后使用集合点(rendezvous)来一起运行多个action
例如:有100个用户登录首页,然后平均访问【新闻】、【财经】、【论坛】;
(1)、分别录制访问【新闻】、【财经】、【论坛】的脚本到不同的action里 ;
(2)、在每个action脚本主函数action(){}的开始设置同一个集合点(名称相同);
(3)、使用场景控制器(Controller)设置100个vuser运行,即可达到平均访问3个业务的效果。
除了上面的方法,我再介绍一种使用随机数的方法:
例如:未知用户数量,有70%的人使用百度( http://www.baidu.com),有17%的人使用谷歌(http://www.google.cn),有7%的人使用yahoo(http://search.cn.yahoo.com),剩余的人使用搜狗(http://www.sogou.com)进行搜索,那么怎么模拟呢?
脚本示例如下:
Action() { int which; //存储随机数的变量 which = rand()%100; //生成0-99的随机数并赋值给which
lr_log_message ("DebugInfo:which=%d\n",which);//调试信息 if (which >= 30)//70%访问baidu { web_url("www.baidu.com", "URL=http://www.baidu.com/", "TargetFrame=", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t1.inf", "Mode=HTML", LAST); } else if ((which >=13) and (which <30))//17%访问Google { web_url("www.google.cn", "URL=http://www.google.cn/", "TargetFrame=", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t2.inf", "Mode=HTML", EXTRARES, "Url=/images/nav_logo3.png", ENDITEM, LAST); } else if ((which >=6) and (which <13)) //7%访问yahoo { web_url("search.cn.yahoo.com", "URL=http://search.cn.yahoo.com/", "TargetFrame=", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t3.inf", "Mode=HTML", EXTRARES, "Url=/testing/uppic/200709/20070911101206590.gif", ENDITEM, "Url=/testing/uppic/200709/20070911101207694.gif", ENDITEM, LAST); } else //6%访问sogou { web_url("www.sogou.com", "URL=http://www.sogou.com/", "TargetFrame=", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t4.inf", "Mode=HTML", EXTRARES, "Url=/images/tab.gif", ENDITEM, "Url=http://pv.sogou.com/pv.gif?t?=1181198683187446?r?=", ENDITEM, LAST); } return 0; } |
这么写脚本其实和组策略形成的效果没有什么分别,但是我觉得还是写这样的结构比较好,我自己也不知道为什么。
这个写法是从游戏脚本语言(lua)中学会的,以前测试游戏的时候总是看脚本语言(lua),有很多宝物的掉率就是根据随机数判断来决定的。
文章来源于领测软件测试网 https://www.ltesting.net/