Skip to content

[Daily Questions Challenge 06]
軟體開發中評估測試指標的方法

測試覆蓋率 (Test Coverage)

看 Test Coverage 是最常見的起點,具體來說有三個指標:

  • Line Coverage — 最寬鬆,每行跑過就算
  • Branch Coverage — 每個條件分支(例如 If / Else)都要走到,才有意義
  • Mutation Testing — 修改程式碼產生「突變體(mutant)」,然後重新執行測試。若測試能抓到變化(讓突變體死亡,KILLED),代表測試有效;若突變體存活(SURVIVED),代表測試有漏洞。

我們有可能將專案的測試覆蓋率拉到 100%,但是覆蓋率高 ≠ 測試好,Code Coverage 只是基本條件。

因此我們還可以把這些指標納入考量:

缺陷逃逸率 (Defect Escape Rate)

缺陷逃逸率指的是那些沒被測試抓到、跑到 Production 才發現的 Bug 比例,能夠最直接地衡量功能交付、測試驗收的品質。

計算公式為:

缺陷逃逸率 = 產品發佈之後所發現的缺陷數 ÷ 產品發佈前後的總缺陷數 × 100%

針對 Issue 區分 Severity(嚴重程度)

我們通常會在系統服務監控中,將 Issue 以 P(Priority)做指標,定義如下:

優先級緊急程度影響範圍範例回應方式
P0緊急廣泛系統中斷立即處理
P1大範圍主要功能異常緊急但不超出常規排程
P2中等中等次要功能異常重要但需與其他問題排定優先順序
P3輕微功能或特性導致少數用戶無法使用產品納入例行工作
P4可忽略可忽略不影響用戶群的輕微問題放入待辦清單

如果單純從前面提到的缺陷逃逸率來衡量,假設今天線上出現了 1 個 P0 Issue,肯定比 10 個 P4 Issue 要來得嚴重許多,但缺陷逃逸率的數字無法顯現問題嚴重性。

因此我們也需要針對每個線上 Issue 區分 Severity。

一個良好的團隊,通常會在 P0 問題發生後進行 AAR(After-Action Report)。AAR 的核心目標包含:識別問題與改善需求、提出對策,以及獲取「經驗教訓(Lessons Learned)」。

我們也可以從 AAR 發生的頻率來衡量產品服務本身的健康度,以及測試是否完善。

參考