现在,让我们快进到2008年。动态HTML和Ajax(Asynchronous JavaScript and XML,异步JavaScript和XML)应用大量出现,Flash和Silverlight以浏览器插件方式递送RIA(Rich Internet Applications,富因特网应用程序),终端用户期望通过界面进行更便捷的互动,UI测试再次变得复杂起来。
虽然Ajax和RIA的出现并没有改变客户端性能这一基本问题,但是因为描述架构出现大量的、甚至是根本性的变化,所以对测试人员的技能水平提出比以往更高的要求。
Ajax为何对现有测试造成挑战
Ajax为什么会对现有的测试计划造成挑战,有多方面的原因。一方面,通过把更多工作转移到客户端,准HTML(pre-HTML)用户界面变得越来越相似,Ajax应用变得越来越复杂。因为Ajax以异步方式运行,所以测试程序没法设定状态,需要Ajax开发者从语法上分析服务端调用是如何影响性能及测试策略的。
另一方面,和任何语言一样,JavaScript作为大多数Ajax应用的基础,存在一些独有的测试问题。从某方面来说,JavaScript是一种啰嗦的脚本语言,调试起来非常困难。测试人员需要找出JavaScript引擎在什么地方出现问题,然后与开发者一起围绕该问题点进行设计和改进。Ajax应用倾向于调用JavaScript程序,并且程序的加载顺序需要测试人员事先明确指定。
再退回到C/S时代。当需要在多个浏览器上测试某个应用程序时,我们对原先的HTML页面重新请求一下即可。而今天,因不同的浏览器对Ajax的处理也不同,测试人员必须为此做更多的修改工作。
除了浏览器的不同以外,测试人员还必须对Ajax的不同风格进行测试。已经涌现出许多种Ajax框架,然而每一种框架各自对Ajax理念的理解都有不同的一面。因为浏览器在最初设计时并没有考虑到支持Ajax,所以不同的Ajax框架对浏览器的不足之处都有不同的权变方案。测试人员必须针对此权变方案做相应的调整,并且随着下一轮浏览器软件的升级,又可能要做新的变动。
Ajax框架还可能引起其他很多方面的变化。以JSON(JavaScript Serialized Object Notation,JavaScript对象符号)为例, 其通过把Ajax架构作为一种提升JavaScript对象特性并在Ajax中部分取代XML的方法,从中获益。另外,不同Ajax框架的编码请求方式也有所不同,所以当使用Ajax应用时,测试人员需要花更多时间来弄清楚相应请求报文的含义。
Ajax自身面临的挑战
马特·布雷伯格(Borland Silk Performer和Silk Test测试套件专家)提到,Ajax并不算新事物。“最新情况是它已经变得非常受欢迎,” 他说,“并且它改变了性能测试和功能测试。”
Ajax不存在一个确定的目标。“Ajax不是一种标准,它更大程度上是一种技术,而没有任何标准实施。”布雷伯格表示,并补充说他注意到JSON风格的Ajax正变得比XML风格更为普遍。
多样性更容易激发创新。既然Ajax框架起始于由五湖四海的成员组成的开源Web社区,维护Ajax应用可能就成为当前的唯一问题了。
“在Ajax之前,我们能忽视客户端的数据处理,而现在再也无法如此。”布雷伯格说。现在,测试人员必须考虑把多少工作量分配给客户端,多少工作量分配给服务器.
“Ajax有好有坏,” 布雷伯格继续说道。“它的目的是把一些处理工作从服务器转移到客户端。” 但是,他指出,运行在浏览器的JavaScript脚本使客户端更容易遭受安全攻击。
同时,匆忙奔向Ajax已经导致一些“设计说明不足”的应用软件开发。测试人员可能问一个非常好的问题“在开发之前,它被设计好了吗?”
在过去的几年里,我们已经看到应用向Ajax客户端的偏移,但开发经理同样有理由转移到RIA系统,它们有更严格的程序边界。RIA已经出,例如,Adobe Flash和微软Silverlight。
“我们注意到在安全性和一致性等方面Ajax正面临着许多挑战,”布雷伯格说。“在我看来,Ajax过后的下一波就是Flex(注:Flex 是Adobe公司提供的一种Presentation Server,展现服务,它是Java Web Container或者.Net Server的一个应用,根据.mxml文件,纯粹的XML描述文件和ActionScript,产生相应的.swf文件,传送到客户端,由客户端的Flash Player或Shockwave Player解释执行,给用户以丰富的客户体验。)。”
实际上,当最新的Borland Silk测试套件工具附件最终瞄准在更好的Ajax测试上时,第一个可用的RIA脚本性能测试工具就出现了。