跳到主要內容

深入解析 Condition Coverage:讓每個子條件都經歷 True 與 False 的細緻測試策略

在軟體測試中,Condition Coverage(條件覆蓋率)是一種比分支覆蓋率更細緻的測試指標。它要求複合判斷式內的每個獨立子條件,都必須被測試到 True 與 False 兩種結果,讓潛藏的邏輯缺陷無所遁形。

什麼是 Condition Coverage?

當一個判斷式包含多個子條件(如 A AND B),分支覆蓋率只關心整體判斷結果(True/False),而 Condition Coverage 則進一步要求:A 本身需被測試到 True 與 False,B 也同樣如此。以 if (isLogin && hasPermission) 為例,必須設計測試案例使 isLogin 分別為 True/False,hasPermission 也分別為 True/False,共需至少 2 組測試組合才能滿足條件覆蓋率。這讓每個子條件的行為都被獨立驗證,而非依賴整體判斷的偶然結果。

Condition Coverage 的限制與定位

Condition Coverage 雖比分支覆蓋率嚴格,但它不保證所有子條件組合都被覆蓋。例如 A 與 B 各自都達到 True/False,但 (A=True, B=True) 這個組合可能從未被測試到。若需覆蓋所有組合,需採用更高階的 Multiple Condition Coverage(需 2ⁿ 組測試)。在實務中,Condition Coverage 是平衡「測試細緻度」與「測試成本」的務實選擇,常見於安全關鍵系統(如航空、醫療軟體)的測試規範中,作為基本達標門檻。

💡 重點整理

  • 聚焦子條件:每個獨立子條件必須各自達到 True 與 False,而非只看整體判斷結果。
  • 優於分支覆蓋:能捕捉分支覆蓋率遺漏的子條件邏輯錯誤。
  • 非全組合覆蓋:不等同於 Multiple Condition Coverage,無法保證所有子條件交叉組合均被測試。
  • 實務定位:適合作為中等嚴格度測試標準,常見於安全關鍵軟體規範(如 DO-178C)。

Condition Coverage 在分支覆蓋與完整組合覆蓋之間取得平衡。掌握它的能力邊界,才能在不同風險等級的專案中,選擇最適切的測試策略,有效提升程式品質。

📚 參考文獻

  1. ISTQB Glossary — https://glossary.istqb.org/:條件覆蓋率的標準定義與測試術語說明。
  2. RTCA DO-178C — Software Considerations in Airborne Systems and Equipment Certification:安全關鍵系統中覆蓋率標準的權威規範。
  3. Paul Ammann & Jeff Offutt, Introduction to Software Testing, Cambridge University Press:覆蓋率分類與測試策略的系統性教材。

⚠️ 本文內容基於撰寫時的最新資訊,實際應用時請參考官方文件的最新版本。

留言