51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1777|回复: 2
打印 上一主题 下一主题

Loadrunner与kylinPET的能力对比测试

[复制链接]
  • TA的每日心情
    擦汗
    昨天 09:02
  • 签到天数: 1046 天

    连续签到: 4 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-12-31 13:22:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     被对象分析
      被测试对象URL:http://59.110.158.28/Example/,这是一个简单的登录和内容加载页面。
      首面登录界面:

    页面登录成功后的内容:

    登录过程过程中,按下F12按钮,可以看到页面加载过程所有请求。getNews共有6个动态的并发请求。
    LoadRunner12.60录制脚本并运行:
      · 脚本录制
      使用LoadRunner12.60自带的录制功能,使用Chrome浏览器进行脚本录制(注意:录制过程需要安装一个fiddler,在录制脚本前,启动fiddler),录制完成后要进行自动关联和手动关联两个动作,
      自动关联ticket和手动关联:validateCode,否则脚本无法运行。以下是关联后,action部分内容展示,脚本中手工增加了一个页面加载事务(从提交登录至脚本请求结尾)
    1. Action()
    2. {

    3.     web_add_auto_header("Upgrade-Insecure-Requests","1");

    4.     web_reg_save_param_ex("ParamName=validateCode", "LB=validateCode\">","RB=<\/span>",LAST);

    5.     web_url("Example",
    6.         "URL=http://59.110.158.28/Example/",
    7.         "Resource=0",
    8.         "RecContentType=text/html",
    9.         "Referer=",
    10.         "Snapshot=t45.inf",
    11.         "Mode=HTML",
    12.         EXTRARES,
    13.         "Url=images/button/btn_login.png", "Referer=http://59.110.158.28/Example/css/login.css", ENDITEM,
    14.         LAST);

    15.     web_add_auto_header("Origin",
    16.         "http://59.110.158.28");

    17. /*相关性注释 - 切勿更改!  Original value='ST-1610868492644' Name ='ticket' Type ='ResponseBased'*/
    18.     web_reg_save_param_regexp(
    19.         "ParamName=ticket",
    20.         "RegExp=ticket=(.*?)\\\r\\\n",
    21.         SEARCH_FILTERS,
    22.         "Scope=Headers",
    23.         "IgnoreRedirections=No",
    24.         "RequestUrl=*/login*",
    25.         LAST);

    26. lr_start_transaction("页面加载");

    27.     web_submit_form("login",
    28.         "Snapshot=t46.inf",
    29.         ITEMDATA,
    30.         "Name=name", "Value=admin", ENDITEM,
    31.         "Name=password", "Value=admin", ENDITEM,
    32.         "Name=validate", "Value={validateCode}", ENDITEM,
    33.         LAST);

    34.     web_revert_auto_header("Upgrade-Insecure-Requests");

    35.     web_add_auto_header("X-Requested-With",
    36.         "XMLHttpRequest");


    37.     web_submit_data("getNews",
    38.         "Action=http://59.110.158.28/Example/getNews",
    39.         "Method=POST",
    40.         "RecContentType=text/plain",
    41.         "Referer=http://59.110.158.28/Example/index.jsp?ticket={ticket}",
    42.         "Snapshot=t47.inf",
    43.         "Mode=HTML",
    44.         ITEMDATA,
    45.         "Name=times", "Value=6", ENDITEM,
    46.         LAST);

    47.     web_submit_data("getNews_2",
    48.         "Action=http://59.110.158.28/Example/getNews",
    49.         "Method=POST",
    50.         "RecContentType=text/plain",
    51.         "Referer=http://59.110.158.28/Example/index.jsp?ticket={ticket}",
    52.         "Snapshot=t48.inf",
    53.         "Mode=HTML",
    54.         ITEMDATA,
    55.         "Name=times", "Value=1", ENDITEM,
    56.         LAST);

    57.     web_submit_data("getNews_3",
    58.         "Action=http://59.110.158.28/Example/getNews",
    59.         "Method=POST",
    60.         "RecContentType=text/plain",
    61.         "Referer=http://59.110.158.28/Example/index.jsp?ticket={ticket}",
    62.         "Snapshot=t49.inf",
    63.         "Mode=HTML",
    64.         ITEMDATA,
    65.         "Name=times", "Value=4", ENDITEM,
    66.         LAST);

    67.     web_submit_data("getNews_4",
    68.         "Action=http://59.110.158.28/Example/getNews",
    69.         "Method=POST",
    70.         "RecContentType=text/plain",
    71.         "Referer=http://59.110.158.28/Example/index.jsp?ticket={ticket}",
    72.         "Snapshot=t50.inf",
    73.         "Mode=HTML",
    74.         ITEMDATA,
    75.         "Name=times", "Value=5", ENDITEM,
    76.         LAST);

    77.     web_submit_data("getNews_5",
    78.         "Action=http://59.110.158.28/Example/getNews",
    79.         "Method=POST",
    80.         "RecContentType=text/plain",
    81.         "Referer=http://59.110.158.28/Example/index.jsp?ticket={ticket}",
    82.         "Snapshot=t51.inf",
    83.         "Mode=HTML",
    84.         ITEMDATA,
    85.         "Name=times", "Value=2", ENDITEM,
    86.         LAST);

    87.     web_submit_data("getNews_6",
    88.         "Action=http://59.110.158.28/Example/getNews",
    89.         "Method=POST",
    90.         "RecContentType=text/plain",
    91.         "Referer=http://59.110.158.28/Example/index.jsp?ticket={ticket}",
    92.         "Snapshot=t52.inf",
    93.         "Mode=HTML",
    94.         ITEMDATA,
    95.         "Name=times", "Value=3", ENDITEM,
    96.         LAST);
    97. lr_end_transaction("页面加载",LR_AUTO);
    98.     return 0;
    99. }
    复制代码
    录制完成,设置LoadRunner的运行代理功能,主要是方便Fiddler工具抓取HTTP请求(Fiddler只能通过代理方式抓取请求,不支持网卡抓取)。
    脚本执行:
      使用录制好的脚本,新建测试场景,这里不要建的过于复杂,只要能让脚本运行一次即可。运行成功后,从Fiddler上抓取的HTTP请求瀑布图看,6个并发的动态请求,全部变为串行执行,页面的加载时间由原来最大的请求时间决定,现变为6个请求时间之和(11.7秒),相同网络下,真实结果为:1-4秒不等。


     kylinPET脚本录制并运行

    录制完成后,设置proxy代理,方便fiddler抓取HTTP请求。
    脚本执行
      从执行结果看,页面加载事务时间是2.8秒,Fiddler的抓包图看,最后6个动态请求是并发请求。


    总结
      对于页面的动态请求,LoadRunner12.60版本(笔者采用发稿时最新版本),是串行请求,导致测试结果的页面加时间变长,而kylinPET是并发请求(与真实浏览器情况相同),测试结果更接近于浏览器的真实结果。
      也就是说LoadRunner12版本,对于静态请求的测试结果与真实情况比较接近,而如果是动态的请求,变得非常不可信。这也是为什么论坛中有人说,测试结果与真实结果差距大的原因。






    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-15 01:44 , Processed in 0.065348 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表