1. 程式人生 > >軟體設計師--判定覆蓋,判定條件覆蓋,條件組合覆蓋--一個栗子

軟體設計師--判定覆蓋,判定條件覆蓋,條件組合覆蓋--一個栗子

針對上圖的一個判斷條件,在這裡將分別討論判定覆蓋、判定條件覆蓋、條件組合覆蓋的情況:

設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組合就滿足了條件組合覆蓋,可見條件組合覆蓋是包含著判定條件覆蓋的,而判定條件覆蓋不一定包含判定覆蓋。

    注:本例中給出的測試用例嚴格來講都是錯誤的,因為一個完整的測試用例,還要給出結果,這裡只是為了說明問題,程式是截塊的,所以就只給了輸入,沒有給輸出。