软件测试中的组合策略
组合策略是一种测试用例的选取方法,该方法是采用将被测件的输入参数根据一些组合方式进行组合来生成测试用例。不同的组合策略,生成不同的测试用例生成技术。
软件测试用例的生成技术有如下两种形式:
- 对测试输入进行建模分析,按照测试目标将测试输入分成不同的子集,同一个子集中的软件行为都是相似的。这种测试用例生成方式叫做分区测试(partition testing),软件测试中常用的等价类划分,边界值分析等都属于该方式。
- 与分区测试相对应的是随机测试(random testing),这种测试忽略先前的测试用例以及规格说明中的信息,依照一些输入分布随机的抽取数据生成测试用例。
对于这两种测试形式的分析,学术界有较长时间的争论,最终Gutjahr1在Hamlet与Taylor研究的基础上从理论上表明了分区测试在现实中比随机测试更有效能。
分区测试中一个关键问题是如何识别分区以及如何从中选择值。在等价类划分和边界值分析等问题中,测试问题的参数是确定的,而后每一个参数被单独分析以确定该参数的适合分区方式。这种特性导致了该方式应用范围在实际中很有限。
Ostrand和Balcer提出了类别分区(Category Partition,CP)方法可以部分的解决该问题。该方法的核心是将所有独立的参数按照一定的相似判据进行组合,生成测试组件,其所构成的组合数量可以用乘法原理表示:
Num=∏i=1Nvi(1)其中N为参数的个数,vi为每一个参数的值的个数。
其算法步骤如下:
从公式(1)可以看出,如果遍历所有组合,则稍微复杂一点的程序的测试用例数量将远远超出测试的资源。为了减少类别分区的测试用例,业内主要采用不同的组合策略来减少用例的数量。
下图是组合策略的分类:

组合策略可以分成确定性的和不确定性的两大类。非确定的可以分成启发式的(Heuristic)与基于人工生命的(AL-based)。启发式的有模拟退火(SA)和自动高效测试生成器(AETG),基于人工生命的分成遗传算法(GA)和蚁群算法(ACA);此外还有最简单的完全随机(Rand)。
确定性的策略生成的结果是确定的。他可以分成即时与迭代两种,即时策略主要有正交阵列(OA)与覆盖阵列(CA)直接生成完整的测试套件。迭代组合策略逐步构建测试套件。主要有基于参数的组合策略(IPO),基于用例的组合策略:每一个选择(Each Choice,简称EC),部分成对(PPW),基本选择(BC),所有组合(AC),反随机(AR),CATS, K-perim, k-bound.
- W.J.Gutjahr. Partition Testing vs. Random Testing: The Influence of Uncertainty. ?
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!