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