Robot Framework做者建议如何选择自动化测试框架

转载:http://www.infoq.com/cn/news/2012/06/robot-author-suggest-autotest程序员

 

软件自动化测试,做为手工测试的替代,愈来愈受到关注。Pekka Klärck,做为Robot Framework的建立者和核心开发者,按照系统级别,介绍了几种不一样的自动化测试方法的区别正则表达式

1、记录回放的方式流行于商业工具之中,无需编程技能便可快速上手。然而这种方法相对脆弱,一旦UI变化测试就会受到影响,分散的脚本不可重用且难以维护,并且系统在测试前必须可用(也就意味着没法使用A-TDD方法)。所以这种方法并不适合大型自动化测试。数据库

2、线性脚本容许使用各类语言来编写非结构化脚本,脚本直接与被测系统交互。可以快速上手,灵活性强。可是编写脚本须要编程技能,系统中一个改动会影响全部脚本,没有通过模块化或重用的大量脚本难以维护。所以这种方法适合简单任务,不适合大型自动化。编程

3、模块化脚本由两部分组成:驱动脚本执行测试,测试库函数完成与被测系统交互。驱动脚本编写起来很是简单,这样能够更快地创建新测试,容易维护。然而须要花时间和编程技能创建测试库,并将测试数据嵌入脚本,创建新测试就须要新的测试脚本。所以,只要拥有编程技能,这种方法仍是适合大型项目,但不适合非编程人员。服务器

4、数据驱动方法,将数据与测试脚本分离,基于模块化的测试库,一个驱动脚本能够执行多个类似测试,这样很是容易创建新测试。维护工做能够分离,测试人员负责数据,程序员负责写测试库。然而,不一样类型测试仍须要新的驱动脚本,初始创建数据解析器和重用组件须要花人力。这种方法适合大型项目,只须要较少的编程技能。框架

5、关键字驱动,将数据与关键字结合来描述如何使用数据执行测试。这种方法具有数据驱动的优点,同时非编程人员也能创建新类型测试。全部测试由同一个框架来执行,无需不一样的驱动脚本。然而初始成本很大,可是可使用开源方案!所以很是适合大型项目。ide

Pekka对以上五种方法的介绍其实也是对自动化测试发展史的介绍,同时也体现了RobotFramework背后的设计思想。模块化

除了测试框架的选择,要想作好自动化测试,还要关注其余方面。函数

自动化测试须要关注可测性。自动化最难的部分是与被测系统交互,特别是GUI层。确保系统容易被测试,好比给GUI元素增长标识、输出易于解析的文本、提供自动化接口等。工具

系统通常能够分为GUI层以及GUI之下的业务层。GUI层测试须要调用与普通用户一样的接口,可是某些GUI技术缺少好的工具支持,会使测试变得脆弱,并且执行相对较慢。从业务层开始测试相对容易,执行快。但GUI层仍然须要被测试,以保证GUI正确链接到了业务层,甚至有时GUI层也具备业务功能。Pekka建议考虑对业务层进行彻底测试,而部分地对GUI层实行端到端测试。 不是全部系统都具备GUI层,却可能具备API、数据库、服务器、命令行等。自动化测试框架能够调用不一样驱动来进行测试。这些非GUI层相对容易测试,只要把测试用例看做另外一个客户端而已。

那么自动化测试应该在什么阶段进行?若是开发完成后单独作自动化,这是典型的瀑布式过程,不一样团队之间存在沟通障碍,反馈周期慢,产品在后期难以得到可测性,从而致使复杂和脆弱的测试方案。相反,典型敏捷式过程当中,程序员和测试人员协同完成自动化。把自动化看做团队开发的一部分,可测性再也不是问题,团队作技术决定时就能够考虑可测性和工具选择,程序员能够提早加入提供可测性的钩子特性。

自动化测试须要版本控制和持续集成来支持。将测试和代码放在一块儿,像管理代码同样管理测试脚本,那么多可用工具,SVN、GIT、Mercurial,没道理不用。持续集成是全方位自动化的关键,当测试或代码有所改动当即执行测试。若是测试运行时间比较长,也能够按期运行。使用JenkinsHudsonCruise Control、 BuildBot吧,本身写定时脚本或Cron Job能够休矣。

选择商业自动化工具仍是开源工具?好东西确定贵,可是贵的不见得好,再便宜的许可证也会阻止整个团队的协做。并且商业化工具难以和其余自动化工具(特别是其余厂商的)或版本控制、持续集成进行整合和定制化。另外,产品终止或公司关门是潜在的风险。开源工具可供选择余地很大,固然也是参差不齐。开源工具一般容易与其余工具整合,关键是免费,谁均可以随意使用和定制化,还永远不会消失。至于免费软件,愈来愈少了,不少自由软件都已经开源。免费软件一样不能定制化,且存在停止的风险。

作自动化须要哪些技能?通常来讲,包括Python、Ruby、Perl、JavaScript、正则表达式、XPath和CSS定位、SQL语句、版本控制等。

有了自动化,手工测试还须要吗?固然须要!! 不过,要避免手工执行脚原本测试,仍是将其彻底自动化吧,测试人员能够更多关注于探索性测试。 记住,机器擅长回归测试,人类善于寻找Bug。

相关文章
相关标签/搜索