background image

                         a

     b         F                   T      c

     d        F                 T         e

 

(a)

语句覆盖:设计若干个测试用例,运行被测程序,使得每一个可执行语句
至少执行一次。例如在上图所给出的例子中,正好所有的可执行语句都在
路径 L1(a->c->e)上,所以选择路径 L1 设计测试用例,就可以覆盖所
有的可执行语句。
L1(a->c->e)
={(A>1) and (B=0) } and {(A=2) or (x/A>1)}
=(A=2) and (B=0) or {(A>1) and (B=0) and  (x/A>1)}
测试用例可以设计为:【(2,0,4),(2,0,3)】覆盖 ace【L1】
从程序中每个可执行语句都得到执行这一点来看,语句覆盖的方法似乎能
够比较全面的检验每一个可执行语句。但与后面介绍的其它覆盖相比,语
句覆盖是最弱的逻辑覆盖准则。

(b)

判定覆盖
所谓判定覆盖就是设计若干个测试用例,运行被测试程序,使得程序中每
个判断的取真分支和取假分支至少经历一次。判定覆盖又称为分支覆盖。如
上例如果选择路径 L1(a->c->e)和 L2(a->b->d),可得满足要求
得测试用例:
L2(a->b->d)
={(A<=1) or (B≠0) } and {(A≠2) and (x<=1)}
=( A<=1) and (x<=1) or {( B≠0) and (A≠2) and (x<=1)}
测试用例可以设计为:
【(2,0,4),(2,0,3)】覆盖 ace【L1】
【(1,1,1),(1,1,1)】覆盖 abd【L2】

如果选取路径 L3(a->b->e)和 L4(a->c->d)
L3(a->b->e)
={(A<=1) or (B≠0) } and {(A=2) or (x>1)}
={( A<=1) and (x>1)} or {( B≠0) and (A=2) } or {( B≠0) and (x>1)}

(A>1) 

 

(B=

0)

(A=2) 

 

(x>1)

x=x/a

x=x+1