MC/DC测试数据生成:策略与实证评估
1. 逻辑操作与约束转换
在MC/DC测试数据生成过程中, select(p) 常与 forAll(p) 、 exists(p) 和 one(p) 配合使用,并会应用它们相应的否定形式。当 select(p) 与 size() 操作一起使用时,意味着集合中指定数量的实例需满足谓词,此时与 size() 搭配的布尔操作会被取反。
为了从配对表的最小子集中获得所需的精确真值,仅对给定子句取反是不够的,因为求解器可能仍会跳过求解所需子句。这是由于一些逻辑操作(如 or 、 xor 和 implies )的现有启发式方法旨在优化搜索,倾向于求解“最简单”的子句。例如,对于谓词 “A or B”,计算分支距离的启发式方法是:如果 (d(A) <= d(B)) 则求解 A,否则求解 B 子句。即使 B 子句被取反,生成的测试数据也可能无法求解 B 子句,因为子句取反可能会使其更难求解。
为确保生成的测试数据包含与 MC/DC 每个所需组合相对应的值,我们的策略会进行第二次遍历来重新表述约束:
- or 运算符 :将其改为取反子句之间的 and 运算符。
- implies <
超级会员免费看
订阅专栏 解锁全文
13

被折叠的 条评论
为什么被折叠?



