2、组合测试相关算法介绍
前文已经有所阐述,组合测试策略本质上是从被测系统的可能输入数据的组合中进行选择的算法。组合测试策略通过一定的算法从不同输入项中选择值进行有限组合,避免组合爆炸同时又能确保完全测试的效果。由于组合测试研究目标明确,效益明显,所以其一直是一个很活跃的研究领域,从1985年到2003年,针对组合测试的策略研究已经产生了15项算法成果(如表1所示)。
表 1算法研究历程
如表2所示。考虑到部分算法没有用例集没有大小边界或者算法本身没有描述,还有的具有随机性,所以我们只在表中列示有明确边界的算法。
我们在使用组合测试策略的过程中有时会发现,在某些情况下,组合测试给出的组合只有一些近似的。出现这种情况的主要原因是因为这些算法存在一定程度的随机性,针对一个测试问题会给出不同的方案。
表2测试组合规模比较
通过对组合测试的研究和分析,我们可以看到组合测试在用例集的“瘦身”和测试覆盖两者的平衡上相当出色。在现有软件测试体系下,研究和应用组合测试对于缩短测试周期,提高测试效率和质量都具有很强的现实意义。目前,有为数不少的工具依据不同的组合策略被研制开发出来,用以支持组合测试的应用,比如Pro-Test、PICT、OAI等。当然,组合测试的长项是测试数据的组合和筛选,要将组合测试广泛的应用于软件测试领域,仍有一些问题需要去研究和解决,这些问题主要集中在以下几个方面:
● 数据组合如何扩展到业务进程组合?
● 逻辑描述可否参与组合?
● 测试数据与测试用例(以简短描述为主的组合测试集,称之为测试序列更形象)的关联;
● 测试组合的管理和执行跟踪;
● 测试组合的复用;