What?

  先說說什么是代碼覆蓋率: 它是反映測(cè)試用例對(duì)被測(cè)軟件覆蓋程度的重要指標(biāo),也是衡量測(cè)試工作進(jìn)展情況的重要指標(biāo)。它是對(duì)測(cè)試工作進(jìn)行量化的重要指標(biāo)之一。

  我們平時(shí)所說的測(cè)試覆蓋率分為三大類:

  1、行覆蓋率度量被測(cè)代碼中每個(gè)可執(zhí)行語句是否被執(zhí)行到

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

  測(cè)試用例:

TeseCase:  a = 10, b = 5

  2、分支覆蓋率:度量程序中每一個(gè)判定的分支是否都被測(cè)試到

  3、條件覆蓋率:度量判定中的每個(gè)子表達(dá)式結(jié)果true和false是否被測(cè)試到

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

  分支覆蓋率

TestCaes1: a = 5, b = 任意數(shù)字  覆蓋了分支一
TestCaes2: a = 15, b = 15          覆蓋了分支二


  條件覆蓋率

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


  我想這里,大家可能會(huì)問這樣的幾個(gè)問題。的行覆蓋率能證明代碼是正確的嗎?

  的條件覆蓋能否代表的分支覆蓋?

  當(dāng)然,答案非常明顯,測(cè)試覆蓋率僅僅能夠告訴我們什么沒有被測(cè)試,根本回答不了軟件是否經(jīng)過了有效測(cè)試!上面條件覆蓋的例子都只覆蓋率分支一,對(duì)于分支二都沒有涉及到。

  WHY

  為什么我們要做覆蓋率統(tǒng)計(jì)?