自动测试的概念炙手可热,但它能代表一切吗?微软的一名测试技术领导(Test Technical Lead)Michael 问道:“你怎么才能知道你到底是把自动化进行得恰如其分,还是行之过甚了?”
自动化测试的用例非常容易。稍微花点精力,我们就可以以固定频率对代码进行回归测试,而很少或者根本不需要开发人员介入。然而,和大多数技术一样,并不是所有时候它都按照你的计划工作。
自动测试生来就是用脚本写成的,而不是探索性的。即便我们使用的是一个引入了所有可能情况的自动测试组合,我们的测试也只能在它们覆盖的地方游刃有余,但 对于其它没有涵盖到的地方,它们就鞭长莫及了。如果出现了哪些没有预料到的情况,那么它们很可能就挂掉了,而且即使它们能够从这些情况中恢复过来,它们还 是无法停止正在处理的任务并检查没有预料到的情况。另外,别忘了要保持测试运行的维护,但这个过程并不能帮你找到程序中的缺陷。那么,你还有时间使用你的 程序吗?
Michael 接着讨论了手工测试优缺点,包括探索式测试的涵盖度和无法在每次构建之后进行完整的测试。
另外一种极端的方式是不对任何东西进行自动测试。在这种情况下,每个测试用例都是由人使用鼠标和键盘手动执行的。这种方式能带来显而易见的回报:每个测试 都会是探索性的。整个产品的方方面面都很可能被完全涵盖。如果出现任何意外问题,很容易就能跟进并处理。我们不需要进行任何维护来保证测试用例与应用程序 的变更保持一致,每个人都在不断使用着应用程序。太美妙了,不是吗?
最后,他提出了一个问题:“对于我来说,很显而易见将所有测试都自动化是不切实际的,反之亦然。目前为止我还没有找到最合适的平衡点。你呢?”
评论