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


int function(bool a,bool b,bool c){
   int x;
   x=0;
  if(a&&(b||c)){
     x=1;
     return x;  
    }
}

1、語句覆蓋(SC)

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

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

2、判斷覆蓋(DC)

設計足夠的測試用例,使得程序中的每個判定至少都獲得一次真值或假值。或者使得程序中的每一個取真分支和取假分支至少經歷一次,因此判定覆蓋又稱為分支覆蓋。

序號 a b c a&&(b||c) a||(b||c) 判定覆蓋率
1 T T T T T 50
2 F F F F F 50

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

3、條件覆蓋(CC)

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

用例一:

a=F,b=T,c=F

a=T,b=F,c=T

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

用例二:

a=F,b=T,c=T

a=T,b=F,c=F

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

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

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

 

5、多條件覆蓋(MCC)

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

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

 

6、修正條件覆蓋(MCDC)

它要求滿足兩個條件,首先,每一個程序模塊的入口和出口都要考慮至少要被調用一次,每個程序的判定到所有可能的結果值要至少轉換一次;其次程序的判定被分解為通過邏輯操作符(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}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM