逻辑覆盖.pptVIP

  • 72
  • 0
  • 约4.74千字
  • 约 39页
  • 2017-08-15 发布于河南
  • 举报
5.2判定覆盖(Decision Coverage) (又称分支覆盖) 比语句覆盖稍强的覆盖标准是判定覆盖。 判定覆盖的含义是:设计足够多的测试用例,使程序中的每个判定至少都获得一次“真值”或“假值”。 if(a1b==0) x=x/a; if(x1||a==2) x=x+1; 4 3 2 1 5 a b c d e B A C E F D 测试用例 测试用例 a,b,x a1b==0 a==2x1 执行路径 测试用例1 2,0,3 真 真 ace 测试用例2 1,0,1 假 假 abd 测试用例3 3,0,3 真 假 acd 测试用例4 2,1,1 假 真 abe 除了双值判定语句外,还有多值判定语句,如case语句,因此判定覆盖更一般的含义是:使得每一个判定获得每一种可能的结果至少一次。 1 6 3 5 2 7 8 9 4 10 不仅满足了判定覆盖还满足了语句覆盖,因此比语句覆盖稍强。但仍然无法发现程序段中存在的逻辑判定错误。 if(a1b==0) x=x/a; if(a1 || b==0) x=x/a; a=2,b=1 练习 void DoWork(int x,int y,int z) { int k=0,j=0; if((x3)(z10)) { k=x*y-1; //语句块1 j=sqrt(k); } if((x= =4)||(y5)) { j=x*y+10; //语句块2 } j=j%3; //语句块3 } 5.3条件覆盖(Condition Coverage) 在设计程序中,一个判定语句是由多个条件组合而成的复合判定,判定a1b==0包含了二个条件:a1和b==0。为了更彻底的实现逻辑覆盖,可以采用条件覆盖。 条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。 if(a1b==0) x=x/a; if(x1||a==2) x=x+1; 4 3 2 1 5 a b c d e B A C E F D 第一个判定中,考虑到各种条件取值: a1为真,记为T1 a1为假,记为-T1 b==0为真,记为T2 b==0为假,记为-T2 第二种判定考虑情况: a=2为真,记为T3 a=2为假,记为-T3 x1为真,记为T4 x1为假,记为-T4 测试用例 a,b,x 覆盖条件 执行路径 测试用例1 2,0,3 T1,T2,T3,T4 ace 测试用例2 1,1,1 -T1,-T2,-T3,-T4 abd 测试用例 a,b,x 覆盖条件 执行路径 测试用例3 1,0,3 -T1,T2,-T3,T4 abe 测试用例4 1,1,1 T1,-T2,T3,-T4 abe 练习 void DoWork(int x,int y,int z) { int k=0,j=0; if((x3)(z10)) { k=x*y-1; //语句块1 j=sqrt(k); } if((x= =4)||(y5)) { j=x*y+10; //语句块2 } j=j%3; //语句块3 } 2.4 判定/条件覆盖(CDC) 含义:设计足够的测试用例,使得判定中每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。 测试用例 a,b,x 覆盖条件 执行路径 a1b==0 a==2||x1 测试用例1 2,0,3 T1,T2,T3,T4 ace 真 真 测试用例2 1,1,1 -T1,-T2,-T3,-T4 abd 假 假 练习 void DoWork(int x,int y,int z) { int k=0,j=0; if((x3)(z10)) { k=x*y-1; //语句块1 j=sqrt(k); } if((x= =4)||(y5)) { j=x*y+10; //语句块2 } j=j%3; //语句块3 } 2.5组合条件覆盖(MCC) 含义:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。 显然满足组合条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和判定/条件覆盖的。 条件组合 2个条件,3个变量,8种组合 a1,b=0 T1,T2 a1,b0 T1,-T2 a=1,b=0 -T1,T2 a=1,b

文档评论(0)

1亿VIP精品文档

相关文档