zoukankan      html  css  js  c++  java
  • LoadRunner测试Google Suggest

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

    如果使用LoadRunner进行测试,采用AJAX(Click 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 suggest的AJAX行为并没有被录制下来,从回放日志的服务器返回记录中也找不到google suggest返回结果的踪影。

    采用WEB(HTTP/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 suggest的AJAX行为被分别录制成一个个的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]

  • 相关阅读:
    很不错的WebCart控件,分享给大家
    Atitit 功能扩展法细则条例 目录 1. 界面ui扩展 2 1.1. 使用h5做界面 2 1.2. 自制h5 ide。。简化ui自定义配置 2 2. 业务逻辑扩展 2 2.1. Bpm流程引擎还
    Atitit 持久化与数据存储标准化规范 目录 1. 存储的附加功能 2 1.1. 基本存取功能 2 1.2. 全文检索(imap 2 1.3. 属性检索 2 1.4. 查询语言 2 2. 基于内容
    Atitit 常见硬件集成列表 目录 1.1. 小程序设备类 1 1.2. atitit.常见手机的传感器与外设 attilax总结 1 1.3. Pc机外设 1 1.4. 设备管理器 2 1.1
    Atitit 项目wechat微信截屏生成vcf通讯录384 个 384个人 42个节拍,平均每个8个人 技术点 im图像裁剪, ocr Tesseract Vcf格式 /wechatTel
    atitit 音频 项目 系列功能表 音乐 v3 t67.docx Atitit 音频 项目 系列功能表 音频 音乐 语言领域的功能表 听歌识曲功能 酷我功能。 铃声 功能。。 音频切割(按照副歌部
    Atitit spring springboot 集成mybatis法 目录 1.1. 使用spring管理数据源。。需要修改spring、 配置 1 1.2. 直接代码集成,无需修改任何配置 1
    Atitit 艾提拉音频资源列表与统计 t6 六月份战果与7月份规划.docx 目录 1. 第一层次 原始资源类 采集资源类 1 1.1. K歌类采集资源 整理 1 1.2. K歌类资源初步分类
    Atitit 长距离无线通信法 LoRa NBIoT NBCIoT LoRa是Semtech公司的创新发明,该技术向用户提供显著的长距离、低功耗、安全数据传输机制。使用LoRa技术构建的公用网
    Atitit 读取音频音乐文件的bpm 目录 1.1. Librosa是一个用于音频、音乐分析、处理的python工具包, 1 1.2. \bpm.py 1 1.3. Echo 2 1.4. Cod
  • 原文地址:https://www.cnblogs.com/hushaojun/p/5651652.html
Copyright © 2011-2022 走看看