结论

我希望这篇文章可以让你确信软件测试的真正目标是寻找bug。即使是在交付时间表很紧的情况下,采取一个步骤来想一下从哪里开始着手,你的测试将会是有效率的。但即使在时间非常充足的情况下,你也不可能测试出每一个bug,所以你必须将你的测试划分优先级,划分的根据是基于产品目前的状态(新的,修改的或者只是纯漏洞)和对客户的可能影响而进行的诚实的评估。避免采用你知道软件可以处理的测试数据和操作;你的任务是在测试中扩大软件的边界。在你设计自动化测试时,也要避免“踩灭”失败条件的误区。你的任务不是创造大量的总是可以干净的成功运行的测试。你需要去寻找和理解故障条件。不要浪费时间去想你的软件产品中是否存在bug。它肯定有bug,并且你不可能全部找出它们。你的组织和你的顾客指望你找出那些有影响的bug。你必须要做的是,你要从消极的角度考虑这些问题。

注释

1 某种程度上,这些误解说明了开发者和测试者怎样持有不同的观点和立场。开发者要开发出能够起作用,正常工作的软件;测试者想要找到软件中的bug。在Glenford Myers的经典书籍软件测试的艺术(第一版在1979年出版,2004年改版)中,他讨论了测试者的目标,以及本文中提到的一些观点。如果你是在软件开发或者测试部门工作,那么这本书对你很有必要。见下面的注释5。

2 Len DiMaggio, "Looking Under the Hood," STQE Magazine, Jan. 2000.

3 Bev Littlewood 和 Lorenzo Stringini, "The Risks of Software," Scientific American, Nov. 1992.

4 那是为什么这一职业吸引那些喜欢破坏东西的人的原因。我的第一个经理是这样。他在他的办公室放了一根长4英尺的铜管。当有人问他的时候,他会解释说:“我用这个来打开新文件”

5 Glenford J. Myers, The Art of Software Testing. Wiley, 1979, p. 6.