跳到主要內容

發表文章

目前顯示的是有「Branch coverage」標籤的文章

Branch Coverage 深入解析:白箱測試中的分支覆蓋率原理與實踐指南

Branch Coverage 深入解析 白箱測試中的分支覆蓋率原理與實踐指南 在白箱測試中, Branch Coverage(分支覆蓋率) 是衡量測試完整性的關鍵指標。它比語句覆蓋率更嚴格,能有效揭露隱藏在條件判斷中的邏輯缺陷。 什麼是 Branch Coverage? Branch Coverage 又稱 決策覆蓋率(Decision Coverage) ,要求每個條件判斷的 True 與 False 分支都必須被至少一個測試案例執行過。舉例來說,一個 if-else 語句,兩條路徑都需走過才算覆蓋。與語句覆蓋率(Statement Coverage)相比,後者只需執行到該行程式碼即可,無法保證所有分支被測試。當程式含有複合條件(如 A && B ),Branch Coverage 關注整體決策結果的 True/False,而非各子條件的獨立組合。 如何計算與提升分支覆蓋率? 計算公式為: 已執行分支數 ÷ 總分支數 × 100% 。一個含有 3 個 if 的函式共有 6 條分支,若測試案例只覆蓋 4 條,覆蓋率即為 67%。業界普遍以 80% 以上 為基準門檻,關鍵模組(如金融、安全)則要求達 100%。提升覆蓋率的實務做法是:針對每個條件判斷,設計能分別觸發 True 與 False 的獨立測試案例,並搭配覆蓋率工具(如 Istanbul/nyc、JaCoCo)自動回報未覆蓋的分支。 function getDiscount(age) { if (age >= 65) return 0.2; // Branch A: True else return 0; // Branch A: False } // 測試案例 1:age = 70 → 覆蓋 True 分支 // 測試案例 2:age = 30 → 覆蓋 False 分支 💡 重點整理 定義: 每個條件判斷的 True/False 兩條分支都必須被執行。 嚴格度: 比 Statement Coverage 嚴格,但比 Condition Coverage 寬鬆。 覆蓋率門檻: 一般專案 ≥ 80%,關鍵系統要求 100%。 工具支援...