西门子工业以太网PROFIBUS-DP通讯电缆-西门子电缆
② 一个好的测试用例是在于它能发现至今未发现的错误。
③ 一个成功的测试是发现了至今未发现的错误的测试。
这就是软件测试的第二类方法,简单地说,就是验证软件是“不工作的”,或者说是有错误的。Myers认为,一个成功的测试必须是发现Bug的测试,不然就没有价值。这就如同一个病人(定此人确有病),到医院做一项医疗检查,结果各项指标都正常,那说明该项医疗检查对于诊断该患者的病情是没有价值的,是失败的。Myers提出的“测试的目的是为了伪”这一概念,推翻了过去“为表明软件正确而进行测试”的错误认识,为软件测试的发展指出了方向,软件测试的理论、方法在之后得到了长足的发展。第二类软件测试方法在业界也很流行,受到很多学术界*的支持。发的准则,如果没有遵守这些准则,较有可能导致质量不高。
③ 通常,有一组没有显示描述的隐含需求(如期望软件是容易维护的)。如果软件满足明确描述的需求,但却不满足隐含的需求,那么软件的验证了合适的值,但是没有发现矛盾之处),需要像丙那样,用较小工作量找出合适的反例。
IEEE把软件测试定义为:从通常是无限大的执行域中恰当地选取一组有限测试用例,对照程序已经定义的预期行为,动态地检验程序的行为。
从这个定义可以看出软件测试的4个特点:首先是“动态”,软件测试总要通过一组输入执行程序。但是,单靠输入值并不总能充分地确定一个
西门子工业以太网PROFIBUS-DP通讯电缆-西门子电缆
测试,因为对于复杂、非确定的系统,由于系统会处于不同的状态,因此对于同样的输入可能产生不同的响应。所以,特定的输入通常还要*系统的特定状态。其次是“有限”,在测试中实际能够观察的执行数量是有限的。测试永远都意味着有限资源和计划进度与本质上是无限测试需求之间的折中:正是这种矛盾带来了大家经常提到的技术(测试充分性评判准则)和管理(测试工作量估计)两个方面的测试问题。再次是“选取”,很多测试手段的本质区别就是如何选择有限的测试集。针对特定条件确定较合适的选取准则是一个非常复杂的问题,在实践中需要运用风险分析技术和测试工程专门知识。最后是“预期”,必须能够确定所观察到的程序执行输出是不是可接受的,否则测试工作就是无用的。
软件测试是伴随着软件的产生而产生的。在早期的软件开发过程中,那时软件规模都很小、复杂程度低,软件开发的过程混乱无序、相当随意,测试的含义比较狭窄,开发人员将测试等同于“调试”,目的是纠正软件中已经知道的故障,常常由开发人员完成这部分的工作。对测试的投入较少,测试介入也晚,常常是等到形成代码,产品已经基本完成时才进行测试。质量仍然是值得怀疑的。
上述的定义很抽象,我们还是根据经验,如果你想一股脑儿地把任何事情都做好,结果通常是什么都做不好,做事总是要分主次的。什么是重要的质量属性应当视具体产品的特征和应用环境而定,请读者不要受本书观点的限制。较简单的判别方式就是考察该质量属性是否被用户关注(即卖点)。