技术开发 频道

Ajax性能测试面临的挑战

  Ajax测试面临的问题

  Ajax模糊了Web界面和传统图形界面之间的分界,基斯杜化·莫里尔,WebPerformance(一家测试工具和服务提供厂商)的总工程师说道:“对各种测试来说,Ajax存在一项特别的挑战。我们已知的测试套件是把网站当作一连串的页面。如果你想抓取Ajax的所有内容,你将停止在一个页面上。你只能获取一个页面,而不是一系列页面。而JavaScript通过操作下层的对象模型,使得这个页面内容随着时间的变化而变化。”

  “使用网站测试专用工具,你能享受到把一个页面部分地作为一个整体的优待。而Ajax剥夺了这些优待,”莫里尔说。“这要求测试工具能对页面有更深入的理解,而不只是简单的把一个请求发送给服务端,然后将其响应结果取回来。”现在,当一个工具模拟Ajax应用时,它必须按照正确地顺序得到全部页面元素,这些在以前可能是无关紧要的。

  所有的问题总结来说,就是Ajax是一种更复杂的Web页面显示方式。“从测试和质量的立场来说,开发人员和测试人员面临的挑战之一就是应用变得越来越复杂,”莫里尔说。

  “极端Ajax应用”正变得越来越像经典的富客户端应用程序(Rich Client Application)。例如,通过使用Ajax,应用程序的状态能从一个操作持续到下一个操作,这意味着对某一状态进行测试的话,需要考虑到所有从其它状态到达该状态的路径。换句话说,到达应用的某个状态存在多种可能。

  Ajax性能测试的两个层次

  在去年波士顿举行的Ajax Experience会议上,鲍勃·布芬建议,Ajax性能问题和已经在传统的面向对象开发中发现的问题有许多相似之处。为了避开陷阱,开发者必须返回到基础,明白你的代码是做什么的,是如何做的,这令人头疼。

  “这是一种不同的环境,因为通过使用Ajax,各种应用在客户端都有其状态,因此捕获并重放测试脚本可能更加困难,”Web客户端开发工具公司Nexaweb的首席架构师布芬说:“测试人员必须改变他们使用测试工具的方式。更多的是回迁到C/S测试,而不是基于表或者基于页的测试。”

  他推荐,在各种不错的工具中,能发现问题的是Yslow。这是雅虎开发的一个Firefox插件,它能在Ajax网页创建过程中对资源的请求使用及其它因素标出级别。

  对所有Ajax应用性能来说,JavaScript性能都是内在的,并且它至少应该从两个角度来看,布芬说:“我把JavaScript性能描述为执行期间性能(runtime performance)和启动期间性能(startup-time performance)。当陷入到使用Ajax应用时,你必须处理这个问题。这意味着你将面临处理一堆JavaScript文件,这一堆文件的数量可能是20,甚至30。”

  布芬提到的另一个JavaScript分析工具是jsLex,它能系统地注入分析代码。

  上面介绍的Ajax多层复杂性也许可以让某些开发经理对一些Ajax开发计划重新进行考虑。“在JavaScript编程中有更多的抽象层,”布芬说,并举出JavaScript调用屏幕画图对象的例子进行描述。“我确实看见人们遇到限制,他们应该意识到:Ajax没办法满足他们所有的应用。”

  从设计阶段开始考虑Ajax性能

  “当设计一个Ajax应用时,你需要考虑期望用户去做什么操作。一个天才的应用——比如Google Maps(谷歌地图)——能预料到用户的下一个需求会是什么,并把这些需求呈现出来,”Gomez的技术副总裁布林说道。

  在最开始的一到两年里,Ajax的一个消极影响是,当人们看到一个类似Google Maps的应用时,会说‘我也要做成那样。’但是,这并不容易做到。打造一个高品质、并且达到性能要求的Ajax应用,必须从设计阶段就开始考虑你的用户将会做什么。

  Ajax的未来充满变数。在沉寂了一段时间之后,浏览器制造者可能已经准备好推出升级版本。布林说:“我们注意到几大主流浏览器都很快就会推出新版本,它们都受到人们现在遇到问题的影响和推动。”

  他以即将到来的、微软公司的IE 8的种种变化为例,“一个根本性的改变就是用户的可用连接数。微软现在改为允许一个主机一次能发起6个连接,而在以前对每个浏览器,这个数字是2。

  布林指出,Ajax框架的权变方案允许更多的连接。但是,这些权变方案可能造成严重破坏,因为一些网站管理员可能并不知道期望连接数出现增加。

  在去年秋季举行的AEEC会议(Ajax Experience East Conference,Ajax Experience东部会议)上,会议内容包括提供网络化的Firebug和IBM Page Detailer,以及用于客户端分析的Firebug、Firebug Lite以及Dojo.Profile。

  提高Ajax性能的建议

  Ajax无疑是一个Web现象,同样的,Web也是Ajax非常好的性能实践的展示平台。程序员和测试人员都能从同行的经验中获益。特别是Google和Yahoo,提供了不少构建Ajax应用方面的有用建议。这两个站点都有着丰富的Ajax使用经验。

  在Ajax应用中,更大程度上的目标不是减低延迟,而是减低“用户可觉察的延迟”。 因此,Google开发者计划(Google Developer Program)的雅各布·穆恩(Jacob Moon)建议团队把精力集中在减少初始页面载入时HTTP请求的数量,以及把JavaScript和CSS文件整合到单一文件中以提升Ajax代码的性能。

  Yahoo则为此提供了一系列规范来加快网站性能。同样的,把HTTP请求数量尽量减少仍是一个提升客户端用户可察觉速度的基本手段。Yahoo建议把终端用户80%的响应时间消耗在前端,主要是组件下载上。降低组件在页面渲染上的请求数量是创建更快速页面的关键。Yahoo组员们的另一个基本建议是:减少DNS查询,避免重定向,把JavaScript代码数量减至最少,并尽量减少重复脚本。

0
相关文章