要想回答这个问题,首先要搞明白另外一个问题。那是自动化是什么?
   
    首先回答自动化是什么?常见的答案:自动化是写代码。如果是写代码,那与软件开发有什么区别。要想回答这个问题前提是代码是什么。代码是人的知识与逻辑思维的一种固化方式。软件本身是人们为解决某一问题所需要知识与做事的处理流程的固化。 而测试脚本是人们测试逻辑思维的固化。一旦把知识与逻辑思维固化下来后,相当于建立一种制度。
   
    自动化能提高效率吗,是不可以换一种方式问,制度能不能不效率?这样一问,大家自然也明白了,制度不一定能提高效率。只有一个好的制度才能效率。因为有了制度之后,人们的会受制于制度,缺乏了灵活度。像上一篇文章的自动化测试三个发展阶段:依赖工具阶段,依赖人的阶段,依赖架构阶段。过第一阶段之后,这种感觉越明显。严重的话,会出现测试绑架开发的情况。例如软件想进行重构,但会引起接口的变化,而接口的改变,测试脚本要跟着改了并且改动一般都不会是一比一关系,而是一比N(这个N有多大,看测试case设计的合理性而定了)。如果测试改动量特别大,可能会迫使软件放弃重构。违背了做自动化的初衷了。
   
    现在流行的敏捷开发模式,代码重构会贯穿于整个开发流程,同样自动测试是保证敏捷顺利进行一个不可或缺的基石。没有自动化,不可能快速持续集成。
   
    所以,成也自动化测试,败也自动化测试。是成是败要看自动化框架的设计。