zhu.kerry@gmail.com 软件测试 实例二一 开始 ① 是 N<0 K=K+1 R:=R+k@ (K<N) and(R<=Max 否 是 R<=Max Output ( E output(Error too arge") exrt 其中:R和K初始化为零
zhu.kerry@gmail.com 实例
zhu.kerry@gmail.com 软件测试 设计分析 N<0:如N=-1,-2,…,-10, 节点①|N>=0如N=1,2 (K<N)and(R<Max)成立(True) 节点③ (K<N)and(R<=Max)不成立( False) R<= Max 节点⑤ R> Max N=-2,MaXx=10:覆盖①→②→③→④→③→④→③→⑥ N=5,MaX=1:覆盖①→②→③④+③+④→3→⑦
zhu.kerry@gmail.com 设计分析 节点① N < 0 : 如N= -1, -2, …, -10, … N >= 0: 如N=1,2, …, 10, … 节点③ (K<N) and (R<=Max) 成立 (True) (K<N) and (R<=Max) 不成立 (False) 节点⑤ R<= Max R> Max N= -2,Max = 10: 覆盖①→②→③→④→③→④→③→⑥ N= 5,Max = 1: 覆盖①→②→③→④→③→④→③→⑦
zhu.kerry@gmail.com 软件测试 力支覆盖Vs.语句爱盏 start)result=0 i=0 N<0. yes W.NHE-N 举例: no K--- maxint N 10 i=i+1 result: =result+ 0 i<N and yes result<-maxint) 覆盖了所有语句,但不能保 证覆盖了所有分支 no yes I esults maxint no output (result) output(too large exit
zhu.kerry@gmail.com 分支覆盖 vs. 语句覆盖 i:=i+1; result:=result+i; (i<N) and (result<=maxint) result<=maxint N < 0 N := -N; output(result); output(too large); exit start yes no no yes yes no N < 0 举例: maxint N 10 -1 0 -1 覆盖了所有语句,但不能保 证覆盖了所有分支 (N>=0) result=0 i=0
zhu.kerry@gmail.com 软件测试 条件覆盖vs.分支覆盖 判断条件:a>0andb>0} 只有两个分支(.T和F),但条件有a>0,a<=0, b>0,b<=0,构成四种组合 a>0,b>0:a=1,b=1 分支 a>0,b<=0:a=1,b=-1 a<=0,b>0:a=-1,b=1 分支二 F a<=0,b<=0:a=-1,b=-1
zhu.kerry@gmail.com 条件覆盖 vs. 分支覆盖 分支一 .T. a>0, b>0 : a= 1, b= 1 分支二 .F. a>0, b<=0 : a= 1, b= -1 a<=0, b>0 : a= -1, b= 1 a<=0, b<=0 : a= -1, b= -1 判断条件:{a>0 and b>0} 只有两个分支(.T. 和 .F.),但条件有 a>0, a<=0, b>0, b<=0, 构成四种组合
zhu.kerry@gmail.com 软件测试 条件覆盖vs.分支覆盖 口条件覆盖不能保证分支覆盖,例如设计两个测试 用例N=1、MaX=-1和N=0、MaX=1 (K<N)and(R<=Max)=T.的分支没有被覆盖 口设计两个测试用例N=3、MaX=10和N=-1、 MaX=0,即覆盖了所有条件,也覆盖了所有分 支
zhu.kerry@gmail.com 条件覆盖 vs. 分支覆盖 条件覆盖不能保证分支覆盖,例如设计两个测试 用例N= 1、Max = -1和N= 0、Max = 1 (K<N) and (R<=Max)=.T. 的分支没有被覆盖 设计两个测试用例N= 3、Max = 10和N= -1、 Max = 0,即覆盖了所有条件,也覆盖了所有分 支