比“语句覆盖”稍强的覆盖标准是“判定覆盖”(或称分支覆盖)标准。含义是:执行足够的测试用例,使得程序中的每一个分支至少都通过一次。
对图6.4的程序,如果设计两个例子,使它们能通过路径ace和abd,或者通过路径acd和abe,就可达到“判定覆盖”标准,为此,可以选择输入数据为:
①A=3,B=0,X=1(沿路径acd执行); ②A=2,B=1,X=3(沿路径abe执行)
|
程序中含有判定的语句包括IF-THEN-ELSE、DO-WHILE、REPEAT-UNTIL等,除了双值的判定语句外,还有多值的判定语句,如PASCAL中的CASE语句、FORTRAN中带有三个分支的IF语句等。所以“判定覆盖”更一般的含义是:使得每一个判定获得每一种可能的结果。
“判定覆盖”比“语句覆盖”严格,因为如果每个分支都执行过了,则每个语句也就执行过了。但是,“判定覆盖”还是很不够的,例如上面两个测试用例未能检查沿着路径abd执行时,X的值是否保持不变。