What?

  先说说什么是代码覆盖率: 它是反映测试用例对被测软件覆盖程度的重要指标,也是衡量测试工作进展情况的重要指标。它是对测试工作进行量化的重要指标之一。

  我们平时所说的测试覆盖率分为三大类:

  1、行覆盖率度量被测代码中每个可执行语句是否被执行到

intfoo(inta,intb)
{  return  a / b;
}

  测试用例:

TeseCase:  a = 10, b = 5

  2、分支覆盖率:度量程序中每一个判定的分支是否都被测试到

  3、条件覆盖率:度量判定中的每个子表达式结果true和false是否被测试到

intfoo(inta,intb)
{     if(a < 10 || b < 10)// 判定  {        return0;// 分支一   }    else   {       return1;// 分支二    }
}

  分支覆盖率

TestCaes1: a = 5, b = 任意数字  覆盖了分支一
TestCaes2: a = 15, b = 15          覆盖了分支二


  条件覆盖率

TestCase1: a = 5, b = 5    true, true
TestCase2: a = 15, b = 15  false,false


  我想这里,大家可能会问这样的几个问题。的行覆盖率能证明代码是正确的吗?

  的条件覆盖能否代表的分支覆盖?

  当然,答案非常明显,测试覆盖率仅仅能够告诉我们什么没有被测试,根本回答不了软件是否经过了有效测试!上面条件覆盖的例子都只覆盖率分支一,对于分支二都没有涉及到。

  WHY

  为什么我们要做覆盖率统计?