Loadrunner Web(HTTP/HTML)脚本开发之Ajax call

上一篇 / 下一篇  2013-02-20 13:41:44 / 心情: 高兴 / 精华(1) / 置顶(1) / 个人分类:Test Script

    Ajax是流行的web开发技术,Asynchronous Javascript. and XML的缩写。在性能测试脚本开发过程中Ajax call很容易被忽略。如果要进行大用户量测试,脚本中是否包含完整的(如:Ajax Call)请求对性能测试结果有较大的影响。

    Ajax执行过程大概是什么样的呢?就是嵌入网页中的java script被浏览器下载并执行,然后java script调用浏览器的发送请求的对象,发一个请求到后台。后台的servlet处理完以后返回前台,前台有一个回调函数回调函数中有后台返回的响应结果。虽然发送了请求,但是并没有刷新页面 因为他的请求是异步调用的。(来自互联网,有关Ajax具体详细的工作原理,大家可以去网络上搜索)

    大概了解了Ajax的工作原理,接下来讨论下怎么获取Ajax call.目前有2种方法,第一种:录制方式。录制脚本的时候,选择HTML-based script,进Advanced HTML,在Non HTML-generated elements(e.g. JavaSript,VBScript, Activex, Applets) 选中Record in separate steps and use concurrent groups。录制的时候就可以捕捉到Ajax call。录制完毕,可以把一些不必要的代码删除,只保留Ajax call即可。还有就是选择URL-based script,按默认设置录制就好。

    既然它是走HTTP协议的,另外一种方法就是通过HTTP的监控工具捕捉到。以后的处理就简单了,类似处理重定向: 我们通过工具监控到请求,然后把请求加入到脚本(按默认设置(HTML-based script)录制的脚本)里即可。

    并不是所有被浏览器下载的java script都会触发Ajax call,对于怎么甄别哪些是Ajax call,可以借助监控工具来判断。另外对于如何确定某个HTTP请求中是否包含Ajax call, 除了跟开发同事确认外,利用监控工具来查看也是个好办法。当然对于复杂业务,要具体问题灵活应用。

    有些同学可能会说,java script是属于Non-Html Resource的一种, 我在跑测试(使用没有包含Ajax call的脚本)的时候设置download Non-Html Resource不就可以了么?通常情况下,跑性能测试的时候这项是不会被选中的。原因有2,第一也是最重要的,如果选中这个选项,服务器会不堪重负;第二,经过验证,LG并不是像浏览器那样:下载完整页面(包含java scrit),也不能执行java script并触发Ajax call。工具不是万能的,loadrunner是比较笨的,这也是其缺点之一。


结束语:我们开发的是Web(HTTP,HTML)脚本,其中对HTTP协议以及Ajax工作原理的深入研究与理解是基础也是最重要的。如果html比较熟悉,对做脚本也会有很大的帮助。即使换另外一个性能测试工具,如果对HTTP&HTML有深入的了解,我想也会很容易上手。同理对于其它协议也是一样。有位博友说的好:"在做性能测试过程中,知识广度和深度的积累是必不可少的"。也只有这样才能做好测试。在大多数情况下,一般我们遇到的问题很多都是已经成熟了的技术。但是,(部分人或大多数?)通常很多时候会感到不知所措或有种无力感(或者对技术畏惧,或不自信?)。我相信只要迈出那关键的第一步,静下心来,努力钻研、交流、总结,很多问题总会迎刃而解。广而扩散之,有很多问题都有本质的类似,即便是跨行业、领域的。其中的解决方法的思想也是可以复用的,你觉得呢?


注:以上内容如有描述不当或错误,欢迎大家指正,谢谢!


TAG:

引用 删除 Snow_ck   /   2017-02-28 22:20:02
5
 

评分:0

我来说两句

日历

« 2024-03-29  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 17904
  • 日志数: 6
  • 建立时间: 2013-01-23
  • 更新时间: 2017-11-08

RSS订阅

Open Toolbar