讀書心得#重構JavaScript 3.1.1 測試覆蓋率 Coverage


測試的術語

3.1.1 測試覆蓋率 Coverage


測試覆蓋率以百分比表示,用來測量有多少行程式碼已經被測試程式執行過。
如果你的程式碼有 4 行,但只有其中 3 行被測試程式執行過,那麼測試覆蓋率就會是 75%。剩下的 25% 可能是應該要廢棄的程式碼,或者是不屬於這個類別的工作責任,應該被移動至屬於他的地方。

以下列出多種測試覆蓋率的用途:

中文名稱 英文名稱 用途
函式覆蓋率 Function Coverage 確保每一個方法至少執行一次,且沒有發生錯誤。
行數覆蓋率 Line Coverage 確保程式每一行至少執行一次,且沒有發生錯誤。
決策覆蓋率 Decision Coverage 確保每個以真偽 (true/false) 控制程式走向的分支,至少被執行一次且沒有發生錯誤。
條件覆蓋率 Condition Coverage 確保每個分支是至少執行一次,並且沒有發生錯誤。
注意:為了滿足決策覆蓋率與條件覆蓋率有多個分支,必須針對每個分支的情境撰寫一個測試案例。

對測試覆蓋率的觀點:

  1. 覆蓋率數據只能代表你測試過哪些代碼,不能代表你是否測試好這些代碼。
  2. 不要過於相信覆蓋率數據。
  3. 測試人員不能盲目追求測試覆蓋率,而應該想辦法設計更多更好的案例,哪怕多設計出來的案例,對覆蓋率一點影響也沒有。

結論:

測試人員不應該為了滿足測試覆蓋率而撰寫測試案例,應該要以「使用情境」撰寫測試案例。

留言

這個網誌中的熱門文章

Git Commit Message 這樣寫會更好,替專案引入規範與範例

PHP OO 物件導向基礎教學

Gitlab 合併請求 Merge Request 是什麼?