2、给出用例,计算以上六种覆盖率的值
  执行CASE:A=2;B=1;X=3。
  在计算覆盖率之前,我们首先要看判定中的子条件在做什么运算,第一个判定中,这两个子条件在做与运算,(一个假即为假)。第二个判定中,这两个子条件在做或预算,(一个真即为真)。
  (1)语句覆盖率:1/2 (50%)
  分析:第一个判定中子条件的值为T1、F2(一真一假),所以我们走F这条分支,此时X=X/A这条语句没有被执行到;接下来,我们看第二个判定,它的子条件的值为T3、T4(都为真),所以我们走T这条分支,这时,语句X=X+1这条语句被执行到了。也是说,我们只执行到一条语句,所以语句覆盖率位1/2。
  (2)判定覆盖率:2/4 (50%)
  分析:我们刚才在分析语句覆盖的时候,我们提到第一个判定语句走的是F分支,第二个判定语句也的是T分支,所以我们共走了两条分支,分支总数为4,所以判定覆盖率为:2/4。
  (3)条件覆盖率:4/8 (50%)
  第一个判定中子条件的值为T1、F2;第二个判定的子条件的值为T3、T4。也是说我们执行到的条件总数为4;总共的条件操作总值为8,所以条件覆盖率为:4/8。
  (4)判定条件覆盖率:6/12 (50%)
  前面我们已经分析过了,判定条件覆盖率实际上是判定覆盖率和条件覆盖率的组合,所以判定条件覆盖率等与,2/4 (判定覆盖率)+ 4/8(条件覆盖率)=6/12(注意,这里的“+”代表的是组合,而不是算数相加,所以是分子分母分别相加即可)。
  (5)条件组合覆盖率:2/8 (25%)
  同样的,在条件覆盖率分析中我们已经提到过了,第一个判定中子条件的组合为T1F2;第二个判定的子条件的组合为T3T4,也是说我们执行到了两种组合;我们在分析流程图的时候已经提到过,总的可能的条件总数为八种组合,所以说条件组合覆盖率为:2/8。
  (6)路径覆盖率:1/4 (25%)
  在流程图分析中我们已经提到,路径共有四条,而我们走到的路径为只有abe一条,所以路径覆盖率为:1/4。
  范例二:
  被测程序流程图还是上面范例一的图1。
  执行case1:A=2,B=0,X=3;
  执行case2:A=1,B=0,X=1。
  计算这两种情况下的6种覆盖率。
  (1)语句覆盖率:2/2 ()
  case1:第一个判定中子条件的值为T1、T2(都为真),所以我们走T这条分支,执行到X=X/A这条语句;接下来,第二个判定,它的子条件的值为T3、T4(都为真),所以我们走T这条分支,这时,语句X=X+1这条语句被执行到了。也是说,我们把两条语句都执行到了,所以语句覆盖率位2/2。
  所以说case1这一条用例可以到达的语句覆盖,我们不用再去执行case2了。
  (2)判定覆盖率:4/4 ()
  case1:我们刚才在分析语句覆盖的时候,我们提到第一个判定语句走的是T分支,第二个判定语句走的也是T分支;
  case2:第一个判定语句中子条件的值为F1、T2,所以我们走F分支;第二个判定语句中子条件的值为F3、F4,所以我们依然走F分支;
  上面两个用例把我们两个判定中的4个分支都执行到了,所以判定覆盖率为4/4()。
  (3)条件覆盖率:7/8()
  case1:第一个判定语句中子条件的值为T1、T2,第二个判定条件中子条件的值为T3、T4;
  case2:第一个判定语句中子条件的值为F1、T2,第二个判定条件中子条件的值为F3、F4;
  这两个用例执行了七种条件,F2没有执行到,所以条件覆盖率为:7/8()。
  (4)判定条件覆盖率:11/12。
  判定条件覆盖率=判定覆盖率和条件覆盖率的组合 = 4/4 + 7/8 = 11/12。
  (5)条件组合覆盖率:4/8 (50%)
  case1:第一个判定语句中子条件的组合为T1T2,第二个判定条件中子条件的组合为T3T4;
  case2:第一个判定语句中子条件的组合为F1T2,第二个判定条件中子条件的组合为F3F4;
  我们可以看出:这两个用例只执行到八种组合中的四种组合,所以条件组合覆盖率为4/8(50%)。
  (6)路径覆盖率:2/4(50%)
  case1:在这条用例中我们所执行到的路径为:ace。
  case2:在这条用例中我们所执行到的路径为:abd。
  这两条用例执行到两条路径(ace和abd),还有两条路径(abe和acd)没有执行到,所以路径覆盖率为2/4(50%)。