1.4.2 测试完整性问题
有些缺陷就像遁藏在被测对象中的炸弹,一旦它们逃过了测试者的法眼,就会给测试之后的研发生产环节带来危机,甚至在用户手中爆炸,使用户的利益受损。测试者都希望自己完成的测试是“充分”的——即便不能证明被测对象的正确性,也足以证明被测对象达到了预期的质量水平,不会在实际使用过程中暴露出这种用户无法接受的严重缺陷。
然而残酷的事实是,由于测试者很少有机会获得所需的资源,严重缺陷的遗漏经常在所难免。有经验的测试者会逐渐接受这一点。实际上,一次测试活动可能留给测试者的最大遗憾,并不是遗漏了某些严重缺陷,而是这些缺陷发生在完全出乎自己意料的事件中。因为这种“没想到”的缺陷遗漏与资源约束无关,而只与测试者能力的不足、工作的不到位有关。
为了避免这种遗憾,测试者首先面对的问题是:如何全面地掌握与理想有关的所有可能事件,从而完整地建立起被测对象的测试输入空间,这就是“测试完整性问题”。
完整的测试输入空间囊括了被测对象实际使用过程中可能发生的所有事件。测试者根据资源约束,从中选择一部分作为测试用例,在测试活动中进行实际的观察。尽管无法把测试输入空间中的所有事件都选作测试用例,但完整的测试输入空间是实现“充分测试”的基础。只有在一个完整的候选列表之上,才有可能作出最好的选择。即使有缺陷遗漏到了测试之后的环节,至少这些缺陷都是意料之中有可能发生的,风险一般可控。