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

1.4.3 测试选择问题

“测试选择问题”是指如何在给定的资源约束下,从测试输入空间选择最合适的测试用例。“测试选择问题”与“测试完整性问题”呈现出对偶的关系:“测试完整性问题”关注如何扩展测试的范围,而“测试选择问题”关注如何压缩测试的范围。

测试输入空间的规模与被测对象所处环境的复杂性密切相关。客观世界的复杂性决定了被测对象真实使用环境的复杂性。环境的复杂性越高,可能对理想产生影响的因素就越多,每个因素可能的取值就越多,测试输入空间的规模就越大。我们所面对的真实的被测对象,其测试输入空间的规模往往近乎无穷大。

在绝大多数情况下,为了将测试的成本控制在可接受范围之内,我们不能在整个测试输入空间上进行“穷尽”的测试,只能从中选取一部分事件作为测试用例。资源约束决定了用例数量的上限,剩下的关键问题就是如何选择:选择哪些事件,才能更准确地评估被测对象的质量?选择哪些事件,才能更有效地检出缺陷?或者一言蔽之:选择哪些事件,才能实现最充分的测试?

有所“取”,必然有所“舍”。“舍”也就意味着测试目标的实现会受到一定程度的不利影响。但这是在刚性的资源约束条件下必须要做出的妥协。我们所能做的,就是通过尽量合理的测试选择,最大限度地减少这一不利影响。

选出的具体事件构成的集合称为测试用例集,或简称测试集。需要注意的是,测试集是一种有序集合。在实施测试时,通常会按某一顺序,逐一执行测试集中的用例,实现用例对应的具体事件,观察被测对象在事件中的表现。一旦发现某个事件中理想与现实不符,我们就成功地检出了缺陷。在以检出缺陷为目的的测试中,我们不仅希望尽可能多地检出被测对象中隐藏的缺陷,还希望能尽早检出这些缺陷。因为缺陷检出得越早,被测对象的质量就能越快得到改善。然而,测试用例集的规模有可能会很大,每个用例的执行也可能非常耗时。这两种情况都会导致执行测试用例集的过程相当漫长。因此对于缺陷检出效率来说,用例的执行顺序就显得非常重要。从这个角度讲,“测试选择问题”不仅涉及空间上的选择,即如何从测试输入空间选出测试用例;也涉及时间上的选择,即在测试执行序列的每一个时间节点上,如何选出最合适的用例。