在本系列的第一篇文章“我们的测试为什么不够敏捷”中,根据实例总结出敏捷自动化的两大阻碍:“脚本维护困难”、“断言条件繁琐”。本文针对如何降低脚本维护难度分享一些实践经验。
近几年,Web技术发展势头迅猛,浏览器市场群雄争霸、各种UI组件库也如雨后春笋。现在互联网上已经很少有仅支持一种浏览器,并且不基于任何可复用的UI组件库进行开发的应用了。开发人员基于各种优秀的UI组件库(如,JQuery、Dojo、ExtJS)可以很容易的开发出功能强大、展现绚丽、兼容各种浏览器的页面(如下图):
UI组件库的广泛采用在提高开发效率的同时,也极大的提升了用户体验。基于UI组件库之所以能快速开发出功能强大的页面,是因为UI组件库可以自动生成海量、结构类似的HTML源码(如下图):
开发人员是幸福的,因为这一切对于他来说完全透明。于是只剩下自动化测试人员独自面对这样“恐怖”的页面源码。
相关厂商内容
一路走来技术人的创业故事
未来物联网中智能硬件的角色
人工智能的技术版图
GMTC全球移动技术大会,6折优惠,最后一周!
不要写死!天猫App的动态化配置中心实践
相关赞助商
ArchSummit深圳2016将于7月15-16在华侨城洲际大酒店举行,现价8折抢购,团购报名更多优惠!
如前文“我们的测试为什么不够敏捷”中所言,业界常见测试工具的脚本本质上还是针对页面源码的,因此原本就举步维艰的自动化测试在开发使用UI组件库之后变得雪上加霜:
页面DOM结构非常复杂
导致所录制/编写脚本的复杂度变的更大、可读性变得更差。
UI框架的升级很可能会导致DOM结构的变化
因此即使开发人员没对代码做任何改动,测试脚本也会因为UI框架的升级变得无法回放。
控件ID是自动生成的,甚至在每次刷新页面后都会变化
大部分自动化测试工具在“录制”脚本时,都会优先使用ID定位策略,自动生成的ID会导致这种关键的控件定位策略变得无效。
UI框架在各种浏览器下自动生成页面源码可能不完全相同
为了在不同浏览器下“看起来一样”,实际的DOM结构有时也可能是不同的,因此所录制脚本的浏览器兼容性会比较差。
技术的发展是为了让生活变得越来越轻松。从用户的角度来看确实如此:Web应用的功能覆盖范围越来越广、操作越来越方便、界面越来越美观。
为什么自动化测试人员没有感觉工作变得轻松呢?
要回答这个问题,首先要分析“用户使用软件”与“自动化测试软件”之间的一些重要差异:
用户使用软件时只关注界面上能“看”到的,而不用总是“查看页面源码”;
用户会更关注整体业务的正确性、稳定性,而不仅仅是每个孤立页面功能的正确性;
用户对页面样式、响应时间、浏览器兼容性要求越来越高; 如果我们能像用户使用软件一样进行自动化测试,测试就会变得更敏捷:
根据界面快速编写测试脚本:敏捷应对需求的变化;
降低对技术实现(UI框架、页面样式/布局)的依赖:敏捷应对设计/开发的变化;
测试脚本可以稳定支持各种浏览器:敏捷应对环境的变化;
(一)根据界面快速编写测试脚本的实现思路
还是以前文“我们的测试为什么不够敏捷”中用到的“用户增加”界面为例:
如果你是作为用户在使用上述功能时,心里一定也会默念下面内容吧:
原文转自:http://www.infoq.com/cn/articles/Agile-test-automation-2