组合测试覆盖强度t对应的最小用例数推导及公式咨询
等取值参数集t路组合覆盖用例数计算逻辑
你提到的计算针对所有可配置参数取值数完全相等、参数总数远大于覆盖强度t的组合测试场景,对应给出的条件:11个参数、单参数5个取值,穷举测试用例数为5^11 = 48828125,和给出的数值完全匹配。
t=2、t=3场景下的算式推导逻辑
书里的计算式来自覆盖阵列(组合测试的核心数学模型)的可实现紧下界推导,逻辑如下:
- 先任意选一个参数作为基准参数,该参数共有5种独立取值,每条测试用例只能给这个参数赋1个值,因此至少需要5组用例才能覆盖该参数的全部取值,这就是算式里第一个乘数
5的来源。 - 当覆盖强度t=2(成对覆盖)时,对基准参数的每一个固定取值,不需要用满5条用例覆盖其余参数的组合:用组合设计里的错位循环排列方法,仅需4条用例就能覆盖完所有没被其他基准值分组覆盖的两参数值对,不会漏覆盖也不会产生冗余,因此单基准值对应4条用例,总用例数为
5 * 4 = 20。 - 当覆盖强度提升到t=3时,在t=2的构造基础上,每提升1维覆盖要求,只需要在原有每个分组的基础上乘系数
4:固定前两个参数的取值组合后,仅需4种错位排列就能覆盖所有剩余未覆盖的三元参数组合,不需要额外加冗余用例,因此总用例数为5 * 4 * 4 = 80。
该场景下的通用计算公式
当满足以下前提时,可以直接套用通用公式计算t路覆盖的最小可实现用例数:
- 所有参数的可选取值数量完全相等,记为v
- 参数总个数k≥v(即参数数量足够多,本次场景k=11、v=5,满足该条件)
通用计算公式为:最小用例数 = v * (v-1)^(t-1)
其中t为组合覆盖强度。代入本次场景验证:
- t=2时:
5*(5-1)^(2-1) = 5*4 = 20,和书中结果一致 - t=3时:
5*(5-1)^(3-1) = 5*4*4 = 80,和书中结果一致
注意:这个公式算出来的是可以实际生成有效用例集的最小下界,前提是参数间没有取值冲突约束、所有参数取值数一致、且参数总个数不少于单参数的取值数。如果场景不满足这些前提,最小用例数需要结合实际情况调整,不能直接硬套公式。
内容的提问来源于stack exchange,提问作者venkysmarty
相关产品推荐
相关产品推荐

