概念:
設計足夠多的測試用例,使被測程序中每個判定的所有可能的條件取值組合至少執行一次。
與其他覆蓋的關係:
顯然,滿足“條件組合覆蓋”的測試用例是一定滿足語句覆蓋、判定覆蓋、條件覆蓋和條件判定覆蓋的。
條件覆蓋率:
條件覆蓋率=條件組合至少出現一次的數量/條件組合的總數
eg:
以上爲例,案例代碼中有判定兩個(x>0&&y>0)(magic<0)判定,條件三個(x>0)(y>0) (magic<0) ,判定(x>0&&y>0)條件組合爲4個,判定(magic<0)條件組合爲2個。假如設計測試用例執行了5個條件組合,條件組合覆蓋率爲5/(4+2)≈83%。
測試用例:
依照上圖:我們要想覆蓋率爲百分之百
判定條件如下:
- if(x>0&&y>0)判定:記爲P1
- if(magic<0)判定:記爲P2
- x>0:記爲C1
- y>0:記爲C2
- magic<0:記爲C3
測試用例設計
從上表我們可看到C1C2滿足了這四種組合,而C3只可滿足真假兩種組合就行,以上測試用例滿足了100%的條件覆蓋率。
優缺點:
優點:
多重條件覆蓋準則滿足判定覆蓋、條件覆蓋和判定/條件覆蓋準則。
缺點:
1.線性地增加了測試用例的數量。
2 可能不會覆蓋所有的路徑,例如上圖的abdf路徑就沒有執行。
參考:https://www.bilibili.com/video/BV1wE411379A?from=search&seid=14475425139925644892