語句覆蓋、判斷覆蓋、條件覆蓋、條件判定組合覆蓋、多條件覆蓋、修正條件覆蓋

'''

int function(bool? a,bool? b,bool? ?c){

? int x;

? x=0;

? if(a&&(b||c)){

? ? x=1;

? ? return x;?

? ? }

}

'''

1、語句覆蓋(SC)

選擇足夠多的測試數(shù)據(jù),使得被測程序中的每條語句至少執(zhí)行一次。

測試用例:a=T,b=T,c=T

2、判斷覆蓋(DC)

設計足夠的測試用例,使得程序中的每個判定至少都獲得一次真值或假值?;蛘呤沟贸绦蛑械拿恳粋€取真分支和取假分支至少經(jīng)歷一次,因此判定覆蓋又稱為分支覆蓋。

上述兩組測試用例不僅滿足了判定覆蓋,而且滿足了語句覆蓋,從這一點看,判定覆蓋要比語句覆蓋更強一些,但是同樣的,假如這一程序段中判定的邏輯運算有問題。判定的第一個運算符? &&? 錯寫成運算符? || ?;蛘叩诙€運算符 ||? 錯寫成運算符 &&,這時使用上面的測試用例可以達到100%的判定覆蓋,仍然無法發(fā)現(xiàn)上述的邏輯問題。

3、條件覆蓋(CC)

構造一組測試用例,使得每一判定語句中,每個邏輯條件的可能是至少滿足一次。

用例一:

a=F,b=T,c=F

a=T,b=F,c=T

用例一在滿足條件覆蓋的同時,把判定的兩個分支也覆蓋了。是否可以說,達到了條件覆蓋就必然實現(xiàn)了判定覆蓋呢?

用例二:

a=F,b=T,c=T

a=T,b=F,c=F

用例二覆蓋了條件的測試用例并沒有覆蓋分支。

?4、條件判定組合覆蓋(CDC)

設計足夠的測試用例,使得判定中的每個條件的所有可能真或假,至少出現(xiàn)一次,并且每個判定本身的判定結果真或假也至少出現(xiàn)一次。

5、多條件覆蓋(MCC)

設計足夠多的測試用例,使得每個判定中條件的各種可能組合都至少出現(xiàn)一次。顯然,滿足多條件覆蓋的測試用例是一定滿足,判定覆蓋、條件覆蓋、條件判定組合覆蓋的。

測試用例指數(shù)級增加(2**conditions)

6、修正條件覆蓋(MCDC)

它要求滿足兩個條件,首先,每一個程序模塊的入口和出口都要考慮至少要被調(diào)用一次,每個程序的判定到所有可能的結果值要至少轉(zhuǎn)換一次;其次程序的判定被分解為通過邏輯操作符(and、or)連接的bool條件,每個條件對于判定的結果值是獨立的。

?從表中我們可以看出,布爾變量a可以通過用例1和5達到MCDC的要求(用例2和6或者用例3和7也可以滿足相應要求)。變量b也可以通過用例2和4 達到MCDC的要求。變量c可以通過用例3和4達到MCDC的要求。因此用例集{1,2,3,4,5}即可滿足MCDC的要求。顯而易見,這不是唯一的用力結合。

a? 1,5 (TF)? ? ? ? 2,6(TF)? ? ? ?3,7(TF)? ? ? ?4,8(FF)? ---->符合條件:1,5 (TF)? ? ? ? 2,6(TF)? ? ? ?3,7(TF)??

b? ?1,3 (TT)? ? ? ?2,4(TF)? ? ? ?5,7(FF)? ? ? ?6,8(FF)? ---->符合條件:??2,4(TF)?

c? ?1,2(TT)? ? ? ? 3,4(TF)? ? ? ?5,6(FF)? ? ? ?7,8(FF)? ---->符合條件:? 3,4(TF)?

用例集:{1,2,3,4,5}

? ? ? ? ? ? ? ? {2,3,4,6}

? ? ? ? ? ? ? ? {2,3,4,7}

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

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

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