白盒测试中的六种覆盖方法案例分析
一、语句覆盖(Statement coverage) “ 语句覆盖 ”是一个 比较弱的 测试 标准,它的 含义是:选择足够的测试用例, 使得程序中每个语句至少都能被执行一次。 图 6.4 是一个被测试的程序,它的源程序是: PROCEDURE M(VAR A , B , X : REAL) ; BEGIN IF (A>1) AND (B=0) THEN X := X/A ; IF (A=2)OR (X>1) THEN X := X+1; END. 为使程序中每个语句至少执行一次,只需设计一个能通过路径 ace 的例子就可以了,例如选择输入数据为: A=2 , B=0 , X=3 就可达到“语句覆盖”标准。 从本例可看出,语句覆盖实际上是很弱的,如果第一个条件语句中的 AND 错误地编写成 OR ,上面的测试用例是不能发现这个错误的;又如第三个条件语句中 X > 1 误写成 X > 0 , 这个测试用例也不能暴露它,此外,沿着路径 abd 执行时, X 的值应该保持不变,如果这一方面有错误,上述测试数据也不能发现它们。 总之,一般认为“语句覆盖”是很不充分的一种标准。 二、判定覆盖(Decision coverage) 比“语句覆盖”稍强的覆盖标准是“ 判定覆盖 ” ( 或称 branch coverage分支覆盖 ) 标准。 含义 是:执行足够的 测试 用例,