含无界参数值时组合测试工具报错的解决方法咨询
无界参数组合测试建模解决方案
现有主流组合测试生成工具(含CTWedge)均基于有限离散值域实现覆盖算法,本身不支持x/m类无明确边界的占位符输入,该场景有成熟的工业界标准处理方案,不需要修改工具本身:
- 基于约束关联的等价类边界,将无界值域替换为有限的代表值集合
组合测试的核心覆盖目标是参数间的交互逻辑、以及约束的分支判定结果,不需要覆盖连续/无界区间内的所有取值,仅需提取和该参数相关的所有约束临界值,补充边界两侧的代表值即可实现等价覆盖,这也是PICT、ACTS等工业级工具处理连续值参数的通用逻辑:- 若参数被约束引用:提取所有约束中和该参数相关的比较阈值,取阈值两侧的临界值作为代表。比如示例中
textLines仅关联约束textLines > 28,不管取值上限x多大,该参数对约束结果的影响只分三类:≤28(不满足约束判定)、=29(刚好满足阈值的临界情况)、>29(满足约束判定的常规情况),三个值即可覆盖所有和该参数相关的交互分支。 - 若参数未被任何约束引用:仅需取2个不同取值作为代表即可,因为该参数的取值不会触发任何约束逻辑,两个值就足够覆盖它和其他参数的组合交互,取值多少、上限多大都不会影响测试覆盖有效性。
- 若参数被约束引用:提取所有约束中和该参数相关的比较阈值,取阈值两侧的临界值作为代表。比如示例中
修正后可直接在CTWedge运行的模型代码如下:
Model Phone Parameters: emailViewer : Boolean // 替换原[1..x]无界区间,取约束对应的等价类代表值 textLines: {1, 29, 30} // param2无关联约束,取2个代表值即可 param2: {1, 2} display : {16MC, 8MC, BW} Constraints: # emailViewer => textLines > 28 #
- 后续新增约束时同步补充对应临界值即可
如果后续给无界参数新增了约束规则,比如新增textLines > 50 => display != BW,只需要给textLines补充51这个临界代表值,不需要调整其他参数定义,生成的测试集依然可以完整覆盖所有交互分支。多余的取值只会不必要地增加测试用例总量,不会提升组合覆盖度。
注意:不要为了“模拟无界”刻意给参数设置远大于约束阈值的超大取值范围,这类操作对覆盖度没有任何增益,反而会提升工具的计算开销,甚至导致用例生成时间过长。
内容的提问来源于stack exchange,提问作者foobar
相关产品推荐
相关产品推荐

