LoadRunner测试Google Suggest

 

Google的搜索框是典型的AJAX应用,用户在输入关键字的同时,前端页面通过xmlhttp与后台服务器动态交互,根据用户输入的关键字查找匹配的内容,向用户提示建议的搜索项,也就是所谓的“google suggest”。

 

如果使用LoadRunner进行测试,采用AJAXClick and Script)协议录制的话会得到以下脚本:

 

Action()

{

 

       web_add_cookie_ex("Cookie=PREF=ID=372e76ef6c7e842e:U=1961d03ffd7ab924:NW=1:TM=1264934277:LM=1264934316:S=OYfvCjRzGq1u4u4z; domain=google.cn; path=/", ENDITEM,

              "Cookie=NID=31=hwv9eoM6IVUuD1ssILGftThmu8fjLzTdRUZXJTwcEggxBjCoy4Fh3dEsZVLVZ66_WndMz03It6xuCCWAqW28ZCj2r2wJxmfKM4_UHMZGk_mnybPjA6tDdB9HFqVkX1EU; domain=google.cn; path=/", ENDITEM,

              "Cookie=SNID=31=BZul31Bwi_B97OMZlOIjZOeSm05tZw_9bw9T4zsT=kqUHVr3rOWtmkOvF; domain=google.cn; path=/verify", ENDITEM,

              LAST);

 

       web_browser("www.google.cn",

              DESCRIPTION,

              ACTION,

              "Navigate=http://www.google.cn/",

              LAST);

 

       web_edit_field("q",

              "Snapshot=t1.inf",

              DESCRIPTION,

              "Type=text",

              "Name=q",

              ACTION,

              "SetValue=AJAX",

              LAST);

 

       web_button("INPUT",

              "Snapshot=t2.inf",

              DESCRIPTION,

              "Type=submit",

              "Tag=INPUT",

              "ID=",

              "Value=Google 搜索",

              ACTION,

              "UserAction=Click",

              LAST);

 

       return 0;

}

 

可以看到google suggestAJAX行为并没有被录制下来,从回放日志的服务器返回记录中也找不到google suggest返回结果的踪影。

 

采用WEBHTTP/HTML)协议来录制,则得到下面的脚本:

 

Action()

{

 

       web_add_cookie("PREF=ID=372e76ef6c7e842e:U=1961d03ffd7ab924:NW=1:TM=1264934277:LM=1264934316:S=OYfvCjRzGq1u4u4z; DOMAIN=www.google.cn");

 

       web_add_cookie("NID=31=hwv9eoM6IVUuD1ssILGftThmu8fjLzTdRUZXJTwcEggxBjCoy4Fh3dEsZVLVZ66_WndMz03It6xuCCWAqW28ZCj2r2wJxmfKM4_UHMZGk_mnybPjA6tDdB9HFqVkX1EU; DOMAIN=www.google.cn");

 

       web_url("www.google.cn",

              "URL=http://www.google.cn/",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=",

              "Snapshot=t1.inf",

              "Mode=HTML",

              EXTRARES,

              "Url=/extern_js/f/CgV6aC1DThICY24rMAo4V0ACLCswDjgLLCswETgVLCswFjgXLCswFzgFLCswGDgFLCswGTgTLCswJTjKiAEsKzAmOAksKzAnOAQsKzA8OAIsKzBEOAEsKzBFOAEs/qft1hKbTw2Q.js", ENDITEM,

              "Url=/favicon.ico", "Referer=", ENDITEM,

              "Url=/intl/zh-CN/images/toolbar_animation_20090618.png", ENDITEM,

              "Url=/complete/search?hl=zh-CN&xhr=t&q=A&cp=1", ENDITEM,

              "Url=/complete/search?hl=zh-CN&xhr=t&q=AJ&cp=2", ENDITEM,

              "Url=/complete/search?hl=zh-CN&xhr=t&q=AJA&cp=3", ENDITEM,

              "Url=/complete/search?hl=zh-CN&xhr=t&q=AJAX&cp=4", ENDITEM,

              LAST);

 

       web_url("csi",

              "URL=http://www.google.cn/csi?v=3&s=webhp&action=&e=17259,23361,23603&ei=kMFrS-GQB8qNkAWljIX6AQ&expi=17259,23361,23603&imc=2&imn=2&imp=2&rt=prt.110,xjsls.125,ol.437,iml.250,xjses.437,xjsee.468,xjs.500",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://www.google.cn/",

              "Mode=HTML",

              LAST);

 

       web_url("search",

              "URL=http://www.google.cn/search?hl=zh-CN&source=hp&q=AJAX&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://www.google.cn/",

              "Snapshot=t2.inf",

              "Mode=HTML",

              LAST);

 

       web_url("gen_204",

              "URL=http://www.google.cn/gen_204?mgmhp=shp1&ct=v&cd=false",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://www.google.cn/search?hl=zh-CN&source=hp&q=AJAX&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=",

              "Mode=HTML",

              LAST);

 

       web_url("csi_2",

              "URL=http://www.google.cn/csi?v=3&s=web&action=&e=17259,23361,23603&ei=msFrS5anH8qGkAX5rJDwAw&expi=17259,23361,23603&imc=1&imn=1&imp=1&rt=prt.125,ol.343,iml.156,xjses.375,xjsee.390,xjsls.390,xjs.437",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://www.google.cn/search?hl=zh-CN&source=hp&q=AJAX&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=",

              "Mode=HTML",

              LAST);

 

       return 0;

}

 

 

 

google suggest的行为被录制到第一个web_url的请求中,被作为资源进行HTTP请求。Web_url函数中的EXTRARES表示表示后面的url所指的内容都是作为资源来请求的,LR的帮助文档中是这样说的:

A list of resources generated by non–HTML mechanisms in the Web page. These include the resources requested by Javascript, ActiveX, Java applets and Flash. VuGen's Recording Options allow these elements either to be recorded within the current script step (the default mode) or recorded as separate steps (see "Recording in HTML–Based Mode" in the VuGen Online Book).

 

如果想把google suggest的行为分别录制成一个个的web_url请求,则需要修改录制模式,改为用“URL-Based”模式录制:

 

Action()

{

 

       web_add_cookie("PREF=ID=372e76ef6c7e842e:U=1961d03ffd7ab924:NW=1:TM=1264934277:LM=1264934316:S=OYfvCjRzGq1u4u4z; DOMAIN=www.google.cn");

 

       web_add_cookie("NID=31=hwv9eoM6IVUuD1ssILGftThmu8fjLzTdRUZXJTwcEggxBjCoy4Fh3dEsZVLVZ66_WndMz03It6xuCCWAqW28ZCj2r2wJxmfKM4_UHMZGk_mnybPjA6tDdB9HFqVkX1EU; DOMAIN=www.google.cn");

 

       web_url("www.google.cn",

              "URL=http://www.google.cn/",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=",

              "Snapshot=t1.inf",

              "Mode=HTTP",

              LAST);

 

       web_concurrent_start(NULL);

 

       web_url("logo_cn.gif",

              "URL=http://www.google.cn/intl/zh-CN/images/logo_cn.gif",

              "Resource=1",

              "RecContentType=image/gif",

              "Referer=http://www.google.cn/",

              "Snapshot=t2.inf",

              LAST);

 

       web_url("cn_icp.gif",

              "URL=http://www.google.cn/intl/zh-CN_cn/images/cn_icp.gif",

              "Resource=1",

              "RecContentType=image/gif",

              "Referer=http://www.google.cn/",

              "Snapshot=t3.inf",

              LAST);

 

       web_concurrent_end(NULL);

 

       web_concurrent_start(NULL);

 

       web_url("qft1hKbTw2Q.js",

              "URL=http://www.google.cn/extern_js/f/CgV6aC1DThICY24rMAo4V0ACLCswDjgLLCswETgVLCswFjgXLCswFzgFLCswGDgFLCswGTgTLCswJTjKiAEsKzAmOAksKzAnOAQsKzA8OAIsKzBEOAEsKzBFOAEs/qft1hKbTw2Q.js",

              "Resource=1",

              "RecContentType=text/javascript",

              "Referer=http://www.google.cn/",

              "Snapshot=t4.inf",

              LAST);

 

       web_url("nav_logo7.png",

              "URL=http://www.google.cn/images/nav_logo7.png",

              "Resource=1",

              "RecContentType=image/png",

              "Referer=http://www.google.cn/",

              "Snapshot=t5.inf",

              LAST);

 

       web_url("favicon.ico",

              "URL=http://www.google.cn/favicon.ico",

              "Resource=1",

              "RecContentType=image/x-icon",

              "Referer=",

              "Snapshot=t6.inf",

              LAST);

 

       web_concurrent_end(NULL);

 

       web_url("csi",

              "URL=http://www.google.cn/csi?v=3&s=webhp&action=&e=17259,23361,23603&ei=9MRrS62DC8yTkAX285SPAw&expi=17259,23361,23603&imc=2&imn=2&imp=2&rt=prt.94,xjsls.109,ol.437,iml.328,xjses.452,xjsee.484,xjs.515",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://www.google.cn/",

              "Mode=HTTP",

              LAST);

 

       web_concurrent_start(NULL);

 

       web_url("toolbar_animation_20090618.png",

              "URL=http://www.google.cn/intl/zh-CN/images/toolbar_animation_20090618.png",

              "Resource=1",

              "RecContentType=image/png",

              "Referer=http://www.google.cn/",

              "Snapshot=t7.inf",

              LAST);

 

       web_url("search",

              "URL=http://www.google.cn/complete/search?hl=zh-CN&xhr=t&q=A&cp=1",

              "Resource=1",

              "RecContentType=application/json",

              "Referer=http://www.google.cn/",

              "Snapshot=t8.inf",

              LAST);

 

       web_url("search_2",

              "URL=http://www.google.cn/complete/search?hl=zh-CN&xhr=t&q=Aj&cp=2",

              "Resource=1",

              "RecContentType=application/json",

              "Referer=http://www.google.cn/",

              "Snapshot=t9.inf",

              LAST);

 

       web_url("search_3",

              "URL=http://www.google.cn/complete/search?hl=zh-CN&xhr=t&q=AjA&cp=3",

              "Resource=1",

              "RecContentType=application/json",

              "Referer=http://www.google.cn/",

              "Snapshot=t10.inf",

              LAST);

 

       web_url("search_4",

              "URL=http://www.google.cn/complete/search?hl=zh-CN&xhr=t&q=AjAX&cp=4",

              "Resource=1",

              "RecContentType=application/json",

              "Referer=http://www.google.cn/",

              "Snapshot=t11.inf",

              LAST);

 

       web_concurrent_end(NULL);

 

       lr_think_time(14);

 

       web_url("search_5",

              "URL=http://www.google.cn/search?hl=zh-CN&source=hp&q=AjAX&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://www.google.cn/",

              "Snapshot=t12.inf",

              "Mode=HTTP",

              LAST);

 

       web_url("nav_logo7.png_2",

              "URL=http://www.google.cn/images/nav_logo7.png",

              "Resource=1",

              "RecContentType=image/png",

              "Referer=http://www.google.cn/search?hl=zh-CN&source=hp&q=AjAX&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=",

              "Snapshot=t13.inf",

              LAST);

 

       web_url("gen_204",

              "URL=http://www.google.cn/gen_204?mgmhp=shp1&ct=v&cd=false",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://www.google.cn/search?hl=zh-CN&source=hp&q=AjAX&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=",

              "Mode=HTTP",

              LAST);

 

       web_url("csi_2",

              "URL=http://www.google.cn/csi?v=3&s=web&action=&e=17259,23361,23603&ei=BMVrS-fpFMqGkAWXrpzwAw&expi=17259,23361,23603&imc=1&imn=1&imp=0&rt=prt.468,ol.499,iml.468,xjses.546,xjsee.561,xjsls.561,xjs.608",

              "Resource=0",

              "RecContentType=text/html",

              "Referer=http://www.google.cn/search?hl=zh-CN&source=hp&q=AjAX&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=",

              "Mode=HTTP",

              LAST);

 

       return 0;

}

 

这样录制下来的脚本会长很多。Google suggestAJAX行为被分别录制成一个个的web_url请求,并且放在web_concurrent_startweb_concurrent_end之间。关于web_concurrent_start函数的描述,可以参考LR帮助文档:

The web_concurrent_start function marks the beginning of a concurrent group. All functions within the group are executed concurrently. The end of the group is marked by the web_concurrent_end function. Within the concurrent group, you may include Action functions and several Service functions.

Note that the functions included within the concurrent group are not executed immediately. Instead they are registered for concurrent execution. When the concurrent group is closed, all of the functions registered as concurrent are executed together.

Concurrent中的函数都会先注册,而不是马上执行,直到web_concurrent_end才一起执行,这个从回放的日志也可以看出来:

 

Action.c(73): web_concurrent_start was successful         [MsgId: MMSG-26392]

Action.c(75): Registering web_url("toolbar_animation_20090618.png") was successful         [MsgId: MMSG-26390]

Action.c(83): Registering web_url("search") was successful     [MsgId: MMSG-26390]

Action.c(91): Registering web_url("search_2") was successful        [MsgId: MMSG-26390]

Action.c(99): Registering web_url("search_3") was successful        [MsgId: MMSG-26390]

Action.c(107): Registering web_url("search_4") was successful      [MsgId: MMSG-26390]

Action.c(115): web_concurrent_end was successful, 8506 body bytes, 1355 header bytes, 84 chunking overhead bytes     [MsgId: MMSG-26385]

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值