軟體設計師--判定覆蓋,判定條件覆蓋,條件組合覆蓋--一個栗子
針對上圖的一個判斷條件,在這裡將分別討論判定覆蓋、判定條件覆蓋、條件組合覆蓋的情況:
設T1=A>3,T2=B>3;為該判定節點的兩個子條件。
(一)判定覆蓋:
所謂的判定覆蓋就是讓判定的真分支和假分支各執行一次,只要列出的子條件能夠滿足真假分支各一次就可以了:
例如: A=4,B=3(T1=True,T2=False)走了真分支,A=3,B=3(T1=False,T2=False)走了假分支。
當然,能走真假分支都走的條件組合還有很多種,這裡隨便選一種就可以了。
(二)判定條件覆蓋(條件覆蓋):
所謂判定條件覆蓋就是給出的條件組合裡面每個子條件的真、假都出現過,也就是T1(True,False),T2(True,False)都出現過。現在如果我們拿過問題(一)的條件組合,那麼得到的就是:
A=4,B=3(T1=True,T2=False)
A=3,B=3(T1=False,T2=False)
發現T1(True,False)都有了,T2(__,False)只有False,沒有出現True,所以隨便補充一個T2=True的條件組合就可以了:
A=3,B=4(T1=False,T2=True)
這樣就滿足判定條件覆蓋了,當然,如果不在問題(一)的基礎上擴充套件的話,可以用判定條件覆蓋的最暴力的方式給出答案:
A=4,B=4(T1=True,T2=True)
A=3,B=3(T1=False,T2=False)
這樣就滿足了判定條件覆蓋。
(三)條件組合覆蓋:
所謂的條件組合覆蓋,就是一個判定的所有子條件的組合情況都出現一次。一般使用列表法,把子條件的所有組合情況都列出來,然後填表:
T1 | T2 | 紅色是從問題 | A | B |
TRUE | TRUE | (二)繼承的 | 5 | 5 |
FALSE | FALSE | ------ | 3 | 3 |
TRUE | FALSE | 綠色是補充的 | 4 | 3 |
FALSE | TRUE | -------- | 3 | 4 |
在表格中的A B組合就滿足了條件組合覆蓋,可見條件組合覆蓋是包含著判定條件覆蓋的,而判定條件覆蓋不一定包含判定覆蓋。
注:本例中給出的測試用例嚴格來講都是錯誤的,因為一個完整的測試用例,還要給出結果,這裡只是為了說明問題,程式是截塊的,所以就只給了輸入,沒有給輸出。