4.2.2 问题的提出
使用MC/DC覆盖准则测试工程aa200c(http://www.moshier.net/),这个工程包括77个函数,BFS-BB使用了110 min。BFS-BB相对较高的时间代价是其一个弱点。BFS-BB的另一个弱点是它无法提前检测不可达路径。根据统计显示,在aa200c中有大概34%的不可达路径。如果不检测出这些路径而认为其可达,那么在其后的测试用例生成阶段将会在这些路径上面花费大量的时间。我们使用图4-11中的程序test 1来说明BFSBB无法检测不可达路径这个问题。为了简便起见,假定待覆盖路径是经过所有if语句的真分支到达打印语句的那条路径。在最后一个分支处(x 2>10),所有变量的区间集是{x 1:[-∞,-11],x 2:[11,+∞]},大致可以看出x 1是负数,x 2是正数,其实这与第一个谓词x 1>x 2是相矛盾的。换句话说,待覆盖路径实际上是不可达路径。但是由于区间运算的保守性(经常会得到比实际变量范围更大的区间),BFS-BB无法提前检测到不可达路径,从而后续花费在搜索上的计算量就没有意义了。
(https://www.daowen.com)
图4-11 程序test 1