测试设计思想
上QQ阅读APP看书,第一时间看更新

1.4.1 正确性判定问题

在各个领域中,针对被测对象功能的测试是最普遍的、占比最多的测试活动。如前所述,当被测对象的现实结果与理想结果完全一致时,称被测对象是“正确”的。显然,只要找到一个缺陷,我们就可以判定被测对象并非正确。通常来说这并不难。但我们要如何确定被测对象确实是正确的呢?这就是“正确性判定问题”。

如果一个被测对象通过了测试,没有暴露出任何缺陷,我们能声明该被测对象是正确的吗?从测试者的角度讲,显然我们很愿意给出这样掷地有声的结论,它有力地表明了测试的价值。更何况,对一些安全攸关、风险敏感的领域和产品来说,正确性判定是真实且迫切的需求。然而遗憾的是,在实际工程中进行正确性判定的难度非常大。

绝大多数情况下,测试是基于具体事件的。也就是说,首先找到与理想有关的所有可能的具体事件,然后从中选择一部分,在特定的环境予以实现,观察这些事件的实际结果与理想结果的异同。这就是测试活动的一般过程。我们称所有可能的具体事件的集合为“测试输入空间”,称其中被选中用于测试的具体事件为“测试用例”。“正确”的含义是被测对象不存在任何缺陷,理想与现实在任何可能的情形下都完全相符。要确认这一点,就意味着测试者必须考察与理想有关的所有事件,任何一个都不能放过。换言之,测试必须覆盖测试输入空间的每一个角落。很多时候,需要无穷多的测试用例,或者说需要投入无穷多的成本,这并非可取之举。正因如此,有测试者认为,测试只能证明缺陷存在,而不能证明缺陷不存在。

尽管如此,判定被测对象的正确性,仍然是测试者在质量评估方向的极致追求。很多研究和实践围绕这一问题展开,并切实地推动了测试理论与技术的发展。