可维护的自动化验收测试

发表于:2009-12-17 13:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Chris Sims    来源:InfoQ

  Dale Emery认为,有些自动化测试因为比较脆弱而且维护成本高,已导致很多公司放弃了实施测试自动化的意愿。在一篇最近发表的文章中,Dale共享了一些避免测试自动化中这些共性问题的实用方法。他以一些比较典型的自动化代码做引子,推演出一些有利于增强代码健壮性,降低维护成本的方法。

  Dale文章背后的基本理念其实是:测试自动化也是软件开发。这个简单但却毋庸置疑的事实,是他从Elisabeth Hendrickson的理念中借鉴而来的。

  对大多数软件而言,在代码的整个生命周期中,维护成本很可能比开始的开发过程成本还要高。在测试自动化领域,这点在录制-回放脚本的应用中体现得尤其明显。这些脚本容易创建,但往往难于维护。

  Dale认为,要让自动化测试脚本更易于维护,有两个必知的关键因素:附属信息和代码重复。

  附属信息泛指那些可以让测试正常运行所需的所有“材料”,但本质上并非测试的真正组成部分。变量赋值、循环、调用下级子程序、自动点击按钮,甚至是脚本语言自己的语法都可以算是附属信息。所有这些都是必需的,它们描述了测试代码的工作方式,但也正因为它们,代码真正要达成的目标也变成了雾里看花。

  重复就是指多次重复出现的简单代码;众所周知,这是可维护性的死敌。一个系统的小改动就可能牵动有重复代码的每个实例。这是录制-回放类型的自动化测试的一个关键问题:到处充斥着重复代码。

  为了明确概念,Dale举了个测试账户创建程序的代码实例。这是段正确而且很常用的代码,但有很多附属信息和重复。通过成功重构,Dale把那些附属信息藏了起来,去掉了重复代码。重构后的代码显然更易维护。还有一个额外的好处:重构后的代码清晰显示了每段测试想要验证的本质目标。即使对测试工具或相关上下文一无所知,当这段代码运行失败时,我们仍然能够知道是因为没能实现哪个系统需求才导致失败。

  回溯到1997年,在洛斯阿尔托斯软件测试研讨会(LAWST)上,齐聚一堂的软件测试专家们也发现了类似的测试自动化方面的问题。Cem Kaner记录了这次集会的成果并在97年的Quality Week 上做了相关演讲。在名为《改进自动化测试套件的可维护性》的论文中,Cem指出:

  “写测试用例最常见的方法是利用你自动化测试工具的捕获功能。太荒谬了……对程序中的用户界面所做的任何微小改动都会导致脚本瘫痪。与录制测试用例紧密相连的维护成本实在让人难以接受。”

21/212>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • superman1983che
    2009-12-18 11:05:08

    其实在我们公司,自动化测试真的跟软件开发差不多了。我们用的是框架,只抓取UI上的对象,其余的业务逻辑,验证逻辑都是用代码写的,这部分是共用的,提供给最上层的脚本调用,当然脚本也是用代码写的。不过与开发不同的是,写的时候不用去太多考虑性能方面的问题。

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号