讀書心得#重構JavaScript 3.1.1 測試覆蓋率 Coverage
測試的術語 3.1.1 測試覆蓋率 Coverage 測試覆蓋率以百分比表示,用來測量有多少行程式碼已經被 測試程式 執行過。 如果你的程式碼有 4 行,但只有其中 3 行被測試程式執行過,那麼測試覆蓋率就會是 75%。剩下的 25% 可能是應該要廢棄的程式碼,或者是不屬於這個類別的工作責任,應該被移動至屬於他的地方。 以下列出多種測試覆蓋率的用途: 中文名稱 英文名稱 用途 函式覆蓋率 Function Coverage 確保每一個方法至少執行一次,且沒有發生錯誤。 行數覆蓋率 Line Coverage 確保程式每一行至少執行一次,且沒有發生錯誤。 決策覆蓋率 Decision Coverage 確保每個以真偽 (true/false) 控制程式走向的分支,至少被執行一次且沒有發生錯誤。 條件覆蓋率 Condition Coverage 確保每個分支是至少執行一次,並且沒有發生錯誤。 注意:為了滿足決策覆蓋率與條件覆蓋率有多個分支,必須針對每個分支的情境撰寫一個測試案例。 對測試覆蓋率的觀點: 覆蓋率數據只能代表你測試過哪些代碼,不能代表你是否測試好這些代碼。 不要過於相信覆蓋率數據。 測試人員不能盲目追求測試覆蓋率,而應該想辦法設計更多更好的案例,哪怕多設計出來的案例,對覆蓋率一點影響也沒有。 結論: 測試人員不應該為了滿足測試覆蓋率而撰寫測試案例,應該要以「使用情境」撰寫測試案例。