本文主要分为四个部分:“梦想和现实——测试自动化理想与现状”、“冲出迷雾——真实的测试自动化及发展趋势”、“拨云见日——建立企业的测试自动化体系”和“过犹不及——谨防测试的过度自动化”。在这四个部分的介绍中,我们首先讨论自动化测试的现状,然后介绍测试自动化的过去和现在,在接下来的部分中,我们介绍在企业中建立测试自动化体系的具体方法,并用几个案例和大家分享这方面的经验,在最后一个部分中,我们讨论如何预防测试过度自动化。

  在介绍自动化测试之前,我们先看看“什么是测试”。简单来说,测试的目标是两个:“发现系统中存在的问题”和“证明系统能够满足用户的需求”。就“发现系统中存在的问题”来说,其主要的工作是“寻找一个最小的测试集合,使其能够发现大多数问题”。

  那么,如何评价一个已有的测试呢?一般来说,可以从四个方面对一个测试进行评价:“测试能否发现问题或是证明系统功能的正确性?”、“测试的覆盖如何(能够测试多个行为)?”、“测试执行、分析、调试的开销如何?”、“测试的维护开销如何?”。一个好的测试,就是能够发现问题或是证明系统功能正确性、能够良好覆盖需求、具有较少的测试执行、分析、调试,以及维护开销的测试。

  接下来我们看看自动化测试。第一个问题是,为什么需要自动化测试?Boris Beizer在《黑盒测试:软件和系统功能测试技术》中有一段经典的描述:“我看到的最悲哀的景象之一就是一个人在键盘上手动操作一些可以自动运行的东西。这是悲哀的但也是有趣的。”为什么说是悲哀的?——对于从事这件重复的冗余的事情来工作者说,日复一日的重复工作是悲哀的;为什么又说是有趣的?——对旁观者来说,一个人用一些机械的手工工作来完成本可以用自动化测试工具完成工作,有时候也是一件有趣的事情。

  那么,自动化测试到底能给我们带来什么呢?首先,自动化测试是建立在测试的基础上的,因此我们不能指望自动化测试能解决我们所有的问题——至少,一个设计不出来的测试自动化测试也对此无能为力。自动化测试能够带来的好处主要是两个方面:减少测试的维护开销,以及减少测试的执行、分析和调试开销。对于其他的两个评价测试的方面,自动化测试也不能比手工测试做得更好。

  曾经有个测试工程师向我描述过他对于“自动化测试”的梦想:“一个宽大的控制台,控制台上有一个闪烁着红光的按钮,只要轻轻一按这个按钮,一阵喀嚓喀嚓声音之后,一张完整的报告就出现在面前”——很美好的梦想,可惜,这个梦想距离现实还很有些距离。

  自动化测试的现状究竟如何呢?其实就目前来说,自动还测试还远远不能达到完全不需要测试工程师干预的程度。我们都知道,软件测试可以被划分成软件测试需求、软件测试计划、软件测试设计、软件测试执行和软件测试评估总结这几个阶段,自动化测试仅仅能够在软件测试设计、执行和评估总结的阶段发挥有限的作用,因此,我们通常把测试自动化理解为“测试的部分过程的部分自动化”

  那么,测试自动化究竟是什么呢?要回答这个问题,我们先看看“测试自动化不是什么”。

  测试自动化不是录制回放——更准确的说,测试自动化不仅仅是录制回放;通过录制回放方式的确可以进行一些简单的自动化测试工作,但这种纯粹的录制回放存在相当多的问题——首先是对结果的验证方式,纯粹的录制回放缺乏对结果的验证支持;其次,如果有多组不同的数据需要进行测试,纯粹的录制回放也很难应付。

  测试自动化不仅仅是测试工具的应用——一说起测试自动化,很多人头脑中立刻反映出来的就是测试工具,当然,测试自动化一定需要工具的支持,但测试自动化不仅仅是测试工具的堆积,就好像在原始社会,有了汽车,那也不能就说明进入了现代社会,测试自动化是一个系统的工程。

  测试自动化不是自发的冲动——在有些组织中,测试自动化是一些测试工程师自发的行为,甚至这些组织还会认为,只要这些工程师足够聪明,他们就能逐渐鼓捣出一个适合公司的自动化测试体系来,这种认识显然是不对的。

  测试自动化不是发现问题的最佳手段——很容易理解,由于测试自动化是建立在手工测试的基础上的,因此测试自动化最合适的是用在验证性质的回归测试阶段,而不能指望它去发现最多的错误。

  因此,我们可以明显地看到,测试自动化具有明显的约束。那么,测试自动化具有这么多的约束,那么它到底能做什么呢?接下来我们就看看“真实的测试自动化及发展趋势”。

  ......

本文转载自51Testing软件测试网,查看全文:http://www.51testing.com/html/95/n-230095.html