软件测试的目标:失败等于成功(3)

发表于:2014-10-08来源:uml.org.cn作者:不详点击数: 标签:软件测试
让我们再看一下我们之前讨论的简单程序,那个需要6,000次测试才能包括所有可能的程序。如果你要设计只在合法的输入,环境,操作等情况下的测试,那

  让我们再看一下我们之前讨论的简单程序,那个需要6,000次测试才能包括所有可能的程序。如果你要设计只在合法的输入,环境,操作等情况下的测试,那么你的测试只涵盖了对你系统运行来说最好的场景。但是,如果有些地方出错会怎样?如果用户手指滑了一下,或者错误的配置了什么,或者删除了非常重要的信息,你的软件会怎样表现?或者当一个系统/服务器出现挂起,或者出现达到一些资源的上限(比如内存,磁盘空间,数据库记录的 ID等),会发生什么?当一些应该被标识为损坏的数据进入或者通过系统会怎么样?如果操作中断,系统处于含糊不清的状态?或者如果太多的人在同样的时间做同样的事情?潜在错误的列表是无限的,并且如果你只想确认“它可以工作”的话,你可能就会忽略掉这些场景中的大部分。

  结论

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

原文转自:http://www.uml.org.cn/Test/200803271.asp