白盒測(cè)試中的六種覆蓋方法

白盒測(cè)試又稱結(jié)構(gòu)測(cè)試、透明盒測(cè)試、邏輯驅(qū)動(dòng)測(cè)試或基于代碼的測(cè)試。白盒測(cè)試是一種測(cè)試用例設(shè)計(jì)方法,盒子指的是被測(cè)試的軟件,白盒指的是盒子是可視的,你清楚盒子內(nèi)部的東西以及里面是如何運(yùn)作的。"白盒"法全面了解程序內(nèi)部邏輯結(jié)構(gòu)、對(duì)所有邏輯路徑進(jìn)行測(cè)試。"白盒"法是窮舉路徑測(cè)試。白盒測(cè)試并不是簡(jiǎn)單的按照代碼設(shè)計(jì)用例,而是需要根據(jù)不同的測(cè)試需求,結(jié)合不同的測(cè)試對(duì)象,使用適合的方法進(jìn)行測(cè)試。

白盒測(cè)試用例設(shè)計(jì)的一個(gè)很重要的評(píng)估標(biāo)準(zhǔn)就是對(duì)代碼的覆蓋度。白盒測(cè)試中常見的覆蓋方法有六種:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、組合覆蓋和路徑覆蓋。下面我們就分別看看這幾種不同的覆蓋吧

一、語句覆蓋(Statement Coverage)

  1. 主要特點(diǎn):語句覆蓋是最起碼的結(jié)構(gòu)覆蓋要求,語句覆蓋需要選擇足夠的測(cè)試用例,使我們?cè)O(shè)計(jì)出來的測(cè)試用例要保證程序中的每一個(gè)語句至少被執(zhí)行一次
  2. 優(yōu)點(diǎn):可以很直觀地從源代碼得到測(cè)試用例,無須細(xì)分每條判定表達(dá)式。
  3. 缺點(diǎn):由于這種測(cè)試方法僅僅針對(duì)程序邏輯中顯式存在的語句,但對(duì)于隱藏的條件和可能到達(dá)的隱 式邏輯分支,是無法測(cè)試的。
  4. 舉例
public int foo(int a,int b)
{
      return a/b;
}

這是一個(gè)求兩數(shù)之商的函數(shù)。如果我們?cè)O(shè)計(jì)如下的測(cè)試用例:
TestCase: a =2, b =1
此時(shí),該函數(shù)的代碼覆蓋率達(dá)到了100%,并且設(shè)計(jì)的case可以順利通過測(cè)試。但是顯然該函數(shù)有一個(gè)很明顯的bug:當(dāng) b=0 時(shí),會(huì)拋出異常。

二、判定覆蓋(Decision Coverage)

  1. 主要特點(diǎn):判定覆蓋又稱為分支覆蓋,它要求選擇足夠的測(cè)試用例,使得運(yùn)行這些測(cè)試用例時(shí),每個(gè)判定的所有可能結(jié)果至少出現(xiàn)一次。
  2. 優(yōu)點(diǎn):判定覆蓋比語句覆蓋要多幾乎一倍的測(cè)試路徑,當(dāng)然也就具有比語句覆蓋更強(qiáng)的測(cè)試能力。同樣判定覆蓋也具有和語句覆蓋一樣的簡(jiǎn)單性,無須細(xì)分每個(gè)判定就可以得到測(cè)試用例。
  3. 缺點(diǎn):往往大部分的判定語句是由多個(gè)邏輯條件組合而成(如,判定語句中包含AND、OR、CASE),若僅僅判斷其整個(gè)最終結(jié)果,而忽略每個(gè)條件的取值情況,必然會(huì)遺漏部分測(cè)試路徑。
  4. 舉例


X    Y   路徑
90  90  OAE
50  50  OBDE
90  70  OBCE

三、條件覆蓋(Condition Coverage)

  1. 主要特點(diǎn):要求所設(shè)計(jì)的測(cè)試用例能使每個(gè)判定中的每一個(gè)條件都獲得可能的取值,即每個(gè)條件至少有一次真值、有一次假值。
  2. 優(yōu)點(diǎn):顯然條件覆蓋比判定覆蓋,增加了對(duì)符合判定情況的測(cè)試,增加了測(cè)試路徑。條件覆蓋使得判定中的每一個(gè)條件都取到了不同的結(jié)果,這一點(diǎn)判定覆蓋則無法保證。
  3. 缺點(diǎn):要達(dá)到條件覆蓋,需要足夠多的測(cè)試用例,但條件覆蓋并不能保證判定覆蓋。條件覆蓋只能保證每個(gè)條件至少有一次為真,而不考慮所有的判定結(jié)果。
  4. 舉例
X    Y   路徑
90  70  OBC
40        OBD
參考文獻(xiàn):

談?wù)劙缀袦y(cè)試中的幾種覆蓋方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 談?wù)劙缀袦y(cè)試中的幾種覆蓋方法白盒測(cè)試用例設(shè)計(jì)的一個(gè)很重要的評(píng)估標(biāo)準(zhǔn)就是對(duì)代碼的覆蓋度。一說到覆蓋,大家都感覺非常熟...
    古佛青燈度流年閱讀 5,473評(píng)論 3 3
  • 文章轉(zhuǎn)自:http://www.51testing.com/html/44/n-3713444.html 白盒測(cè)試...
    Moonsmile閱讀 10,009評(píng)論 0 4
  • 本著共享主義,本人將PPT考點(diǎn)梳理出來,并且已經(jīng)翻譯成中文,供大家參考,歡迎各位指導(dǎo)! 本次考試題型分為選擇、判斷...
    Moonsmile閱讀 4,472評(píng)論 13 28
  • 1.語句覆蓋。這個(gè)是起碼要做到的覆蓋了,程序里的每條可執(zhí)行的語句都要至少執(zhí)行一次。這個(gè)設(shè)計(jì)起來比較簡(jiǎn)單,用例數(shù)據(jù)很...
    hmyixiu閱讀 5,735評(píng)論 0 3
  • 1.測(cè)試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過程、活動(dòng)和任務(wù)的結(jié)構(gòu)性框架。軟件項(xiàng)目的開發(fā)包括:需求、設(shè)...
    Mr希靈閱讀 22,396評(píng)論 7 278

友情鏈接更多精彩內(nèi)容