2013,一个即忙碌又精彩的一年。虽然它已经过去,但是总想写点什么总结一下。作为一名QA,过去一年是我的软件质量知识体系和自动化测试知识体系收获丰的一年,让我对于软件质量和自动化测试有了一个更高层次的认识。所以我写下了一些自己更新了的知识,以及在和其他公司的QA交谈之后发现的一些他们应该更新的知识。借此希望能对各位看官起到一些提示或者补充作用,当然我也希望各位与我进行联系,并共同探讨未来的QA到底应该具有什么样的能力和知识体系。
  Web应用程序视觉感知测试
  视觉感知测试,对于很多QA,包括我在2013以前对于它的认知都是手动测试领域的一个成员。在这个Web系统爆炸的年代,Web UI界面布局测试,多浏览器测试,CSS的refactor等都成为了Web UI测试的痛中之痛,特别是大型Web应用的功能回归测试量太大,从而导致很多时候根本无法完成,所以很少会有团队去做全方位的UI界面布局回归测试,特别是对于使用Agile流程开发的团队更加困难。
  为了缓解这样的困境,不断地有人思考怎么自动化UI测试,我以前的公司有人尝试在手机上做自动UI测试,但是后也没有什么成效。几年,Web应用程序发展得如火如荼,所以在去年,有两个工程师,一个来自于Google,一个来自于ThoughtWorks在尝试解决Web应用程序测试上的这个问题。不过他们的思路和以前不一样,不是想做一个全自动的UI测试框架,而是基于Agile的持续集成和持续部署的概念上,使用半自动的方法来减少UI回归测试的时间,从而减少WEB应用程序UI回归测试的时间。
  来自Google的工具是Dpxdt,而来自ThoughtWorks的是Viff. 这两个工具的基本原理都是类似的,只是使用了不同的语言开发,以及适用的范围有点区别。
  Dpxdt是基于Python和PhantomJS开发的一个Web Service系统,其中PhantomJS可以理解为一个没有UI的浏览器。用户使用其提供的RESTFul API可以十分方便的对比两个页面,而且它还提供一个功能十分强大的报表系统。 对于全部是静态页面的Web系统来说非常适用,不过对于需要手动导航,比如需要进行输入,点击等之后才能进行比较的页面,它现在的版本并不适合。它还提供了一个方式可以把他很方便的部署到GWS上,所以对于国内在GFW下的用户可以暂时不用考虑这个功能。
  Viff是基于NodeJS和Selenium开发的一个本地工具。通过编写JavaScript代码来调用Selenium API, 并在真实的浏览器中进行截图比较。所以它比较适合动态的Web系统,因为可以编写代码模拟用户输入和点击操作。由于它底层使用的是Selenium作为驱动,所以他支持多种浏览器,比如IE,Chrome,Firefox等。在新的Selenium中加入了对Android和iOS的支持,不过现在还不是很稳定,所以Viff还支持Android和iOS上的浏览器测试。如果对你来说搭建多浏览器环境比较困难,比如需要同时测试IE8,IE9,IE10等,可以选择BrowserStack。
  BrowserStack是一个商业产品,他同时通过Web界面和API接口提供多浏览器环境给客户进行Web测试,Viff可以使用期API进行进行多浏览器截图。对于Viff,由于编写JavaScript代码也需要一定的门槛,所以对于没有代码能力的使用者在测试静态网页的时候应该选择Dpxdt,但是如果你有一定的代码能力,建议选用Viff。现在Viff正在开发Web Service功能,这样以后可以作为一个Service进行部署和使用。
  不过现在这两个工具都还不是很成熟,还存在一些Bug,其中Viff还在继续开发新的功能中,不过基本使用还是可以的。如果在使用这两个工具的过程中发现任何Bug,请通过Github的Issues跟踪功能来及时反馈给作者,帮助这两个开源系统越来越好。我在BQConf上有一个Perceptual Testing的演讲,有兴趣的可以听一听。
  下图为实施了视觉感知测试之后对于Web系统回归测试的时间示意图: