白盒測(cè)試又稱(chēng)結(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è)試柬唯。在使用這一方案時(shí),測(cè)試者必須檢查程序的內(nèi)部結(jié)構(gòu)圃庭,從檢查程序的邏輯著手锄奢,得出測(cè)試數(shù)據(jù)。貫穿程序的獨(dú)立路徑數(shù)是天文數(shù)字剧腻。
白盒測(cè)試法的覆蓋標(biāo)準(zhǔn)有邏輯覆蓋拘央、循環(huán)覆蓋和基本路徑測(cè)試。其中邏輯覆蓋包括語(yǔ)句覆蓋书在、判定覆蓋灰伟、條件覆蓋、判定/條件覆蓋儒旬、條件組合覆蓋和路徑覆蓋栏账。六種覆蓋標(biāo)準(zhǔn)發(fā)現(xiàn)錯(cuò)誤的能力呈由弱到強(qiáng)的變化分別是:
1.語(yǔ)句覆蓋每條語(yǔ)句至少執(zhí)行一次;
2.判定覆蓋每個(gè)判定的每個(gè)分支至少執(zhí)行一次栈源;
3.條件覆蓋每個(gè)判定的每個(gè)條件應(yīng)取到各種可能的值挡爵;
4.判定/條件覆蓋同時(shí)滿足判定覆蓋條件覆蓋;
5.條件組合覆蓋每個(gè)判定中各條件的每一種組合至少出現(xiàn)一次甚垦;
6.路徑覆蓋使程序中每一條可能的路徑至少執(zhí)行一次茶鹃;
語(yǔ)句覆蓋
IF CONDITION THEN
DO_SOMETHING;
ELSE
DO_SOMETHING_ELSE;
END IF;
優(yōu)點(diǎn):可以很直觀地從源代碼得到測(cè)試用例,無(wú)須細(xì)分每條判定表達(dá)式艰亮。
缺點(diǎn):由于這種測(cè)試方法僅僅針對(duì)程序邏輯中顯示存在的語(yǔ)句闭翩,但對(duì)于隱藏的條件和可能到達(dá)的隱式邏輯分支,是無(wú)法測(cè)試的垃杖。
判定覆蓋
IF CONDITION THEN
DO_SOMETHING;
ELSE
DO_SOMETHING_ELSE;
END IF;
優(yōu)點(diǎn):判定覆蓋比語(yǔ)句覆蓋要多幾乎一倍的測(cè)試路徑, 當(dāng)然也就具有比語(yǔ)句覆蓋更強(qiáng)的測(cè)試能力男杈。同樣判定覆蓋也具有和語(yǔ)句覆蓋一樣的簡(jiǎn)單性, 無(wú)須細(xì)分每個(gè)判定就可以得到測(cè)試用例丈屹。
缺點(diǎn):大部分的判定語(yǔ)句是由多個(gè)邏輯條件組合而成 (如,判定語(yǔ)句中包含AND调俘、OR、CASE)旺垒,若僅僅判斷其整個(gè)最終結(jié)果彩库,而忽略每個(gè)條件的取值情況,必然會(huì)遺漏部分測(cè)試路徑先蒋。
條件覆蓋
例:(1)IF (A>1) AND (B=0) THEN X=X/A
? ? ? ?(2)IF (A=2) OR (X>1) THEN X=X+1
優(yōu)點(diǎn):條件覆蓋比判定覆蓋骇钦,增加了對(duì)符合判定情況的測(cè)試,增加了測(cè)試路徑竞漾。
缺點(diǎn):要達(dá)到條件覆蓋眯搭,需要足夠多的測(cè)試用例窥翩,但條件覆蓋并不能保證判定覆蓋。條件覆蓋只能保證每個(gè)條件至少有一次為真鳞仙,而不考慮所有的判定結(jié)果寇蚊。
判定-條件覆蓋
優(yōu)點(diǎn):判定/條件覆蓋滿足判定覆蓋準(zhǔn)則和條件覆蓋準(zhǔn)則,彌補(bǔ)了二者的不足棍好。
缺點(diǎn):判定/條件覆蓋準(zhǔn)則的缺點(diǎn)是未考慮條件的組合情況仗岸。
條件組合覆蓋
優(yōu)點(diǎn):多重條件覆蓋準(zhǔn)則滿足判定覆蓋、條件覆蓋和判定/條件覆蓋準(zhǔn)則借笙。更改的判定/條件覆蓋要求設(shè)計(jì)足夠多的測(cè)試用例扒怖,使得判定中每個(gè)條件的所有可能結(jié)果至少出現(xiàn)一次,每個(gè)判定本身的所有可能結(jié)果也至少出現(xiàn)一次业稼。并且每個(gè)條件都顯示能單獨(dú)影響判定結(jié)果盗痒。
缺點(diǎn):線性地增加了測(cè)試用例的數(shù)量。
路徑覆蓋
優(yōu)點(diǎn):可以對(duì)程序進(jìn)行徹底的測(cè)試低散,比前面五種的覆蓋面都廣积糯。
缺點(diǎn):由于路徑覆蓋需要對(duì)所有可能的路徑進(jìn)行測(cè)試 (包括循環(huán)、條件組合谦纱、分支選擇等)看成,那么需要設(shè)計(jì)大量、復(fù)雜的測(cè)試用例跨嘉,使得工作量呈指數(shù)級(jí)增長(zhǎng)川慌。
白盒測(cè)試的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):1. 針對(duì)程序內(nèi)部進(jìn)行覆蓋測(cè)試,覆蓋率較高 ?2. 能較早期的發(fā)現(xiàn)程序中的缺陷
缺點(diǎn):1. 設(shè)計(jì)過(guò)于復(fù)雜 ?2. 無(wú)法驗(yàn)證程序的外部特性 ?3. 需求變更時(shí)祠乃,付出的代價(jià)較大