软件测试工具LoadRunner模拟真实用户访问

发表于:2010-05-05来源:作者:点击数: 标签:软件测试loadrunnerLoadRunnerLoadrunnerloadRunner
软件测试工具 LoadRunner 模拟真实用户访问、 在进行 压力测试 设计时,总会碰到一些case需要考虑用户实际的行为对系统的影响。使用 lr 录制脚本时,有很多方法都可以模拟用户的真实使用状态,例如: 1、lr_think_time()函数的使用可以模拟用户浏览的操作;

软件测试工具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),有很多宝物的掉率就是根据随机数判断来决定的。

原文转自:http://www.ltesting.net