组合测试(CT)_追逐梦想的顾咏丰_新浪博客

Combinatorial Testing 组合测试
---

在软件测试中,为了对系统进行充分的检测,测试用例的数量会随着参数组合的增大而增大。但是这么一来,问题也就来了,一旦该系统的(输入)参数有很多,可选项有很多,这个时候我们的参数组合数量会急剧增长,甚至是一个天文数字!这也稍稍涉及到了测试充分性的问题,于是人们为了既保证测试质量,又想减少测试的数量,想到了一个方法,就是组合测试(Combinatorial Testing 以下简称 CT)。

准确的来说,组合测试是在保证错误检出率的前提下,尽可能减少测试用例的数量的一个方法。看似相互矛盾,其实不然。Kuhn及其同行 [3] 通过对两大开源软件项目browser 和 web server的统计表明,超过70%的错误是由2个参数相互作用而引发的,接近90%的错误是由3个参数相互作用而引发的,如下图所示(论文原图)

组合测试(CT)

(论文原话:Our finding suggest that more than 95% error in software studied are detected by test case covered all 4-way combinations of values.)
这组数据给了人们启示,人们逐渐意识到在设计测试用的时候,只要保证测试用例能够对任意 t(t可以等于2或者3)个参数进行覆盖,就会在保证错误检出率的同时,降低了测试的开销。

举例说明(该例子来源于 [1]),假设我们的系统中需要4个参数,每个参数又有3个可选项,如果按照传统测试方法,我们需要设计 3^4=81 个测试用例来进行测试。但是如果我们运用组合测试的方法,使之覆盖任意2个参数的组合,这样一来,我们只需要设计9个测试用例了,如下图表1,表2所示,

组合测试(CT)

组合测试(CT)

以上就是组合测试的基本概念。由表2可知,组合测试的测试用例集可以用一个矩阵来表示,矩阵的每一行表示一个测试用例,矩阵的每一列表示系统的每一个参数。我们可以建立覆盖数组(Covering Array,CA)和混合覆盖数组(Mixed level Covering Array,MCA)用来描述测试用例集。

除了这些基本概念,我们实际上还需要考虑:种子组合(某些参数取值组合必须取到,这种取值组合就叫做种子),参数之间的限制等。


【参考文献】
-----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值