mutation-testing
透過引入程式碼變異並測量殺死率,驗證測試套件的有效性並找出薄弱斷言。對於證明測試能真正捕捉錯誤,而非僅僅滿足覆蓋率指標至關重要。
簡介
變異測試是一種嚴格的品質工程實踐,超越傳統的程式碼覆蓋率指標,轉而評估測試斷言的實際效力。透過以程式化方式注入故障(例如修改算術運算子、否定條件或刪除函數呼叫),此技能可讓您觀察測試套件是否能正確識別這些缺陷。如果測試失敗,變異體即被視為「殺死」,確認您的測試邏輯穩健。如果變異體存活,則凸顯了一個盲點,即您的程式碼正在運行,但未被斷言有效地驗證。
此技能專為資深工程師、品質保證架構師以及尋求從表面的綠色建置轉向高完整性、能真正捕捉 Bug 的測試套件的自動化測試團隊所設計。它在關鍵發布前或維護複雜、高風險業務邏輯時特別有價值,因為在這些情況下,標準覆蓋率指標往往會提供錯誤的安全感。它能與 JavaScript/TypeScript 的 Stryker 等框架無縫整合,提供變異分數的清晰見解,並識別需要更嚴格測試案例的特定路徑。
-
自動注入變異運算子,包括算術、關係、邏輯和基於語句的故障。
-
計算變異分數以量化測試套件品質,並設有識別「優秀」與「需要注意」套件的行業標準閾值。
-
團隊協調功能,可協調如 qe-test-generator 等專業代理程式,自動草擬針對存活變異體的測試。
-
與覆蓋率分析工具無縫整合,將未測試路徑與斷言品質低下的區域相關聯。
-
透過 run-history 記錄變異性能的歷史追蹤,讓團隊能監控測試嚴謹度的改善。
-
優先為關鍵程式碼路徑(如認證、支付處理與資料驗證)進行變異測試,而非整個程式碼庫。
-
始終結合變異分數來解釋高程式碼覆蓋率;達到 100% 覆蓋率但斷言無效是此技能的主要目標。
-
使用提供的 Stryker 設定模板,確保針對特定專案需求設定適當的測試執行器(如 Jest、Vitest)。
-
當變異體存活時,透過檢查變異體與原始程式碼之間的差異進行根本原因分析,以確定測試套件中遺漏了哪些邊界條件或邊緣案例。
-
利用代理驅動的工作流程,從識別(存活變異體)無縫轉移到解決(測試生成),無需人工介入。
倉庫統計
- Star 數
- 329
- Fork 數
- 65
- Open Issue 數
- 4
- 主要語言
- TypeScript
- 預設分支
- main
- 同步狀態
- 閒置
- 最近同步時間
- 2026年4月29日 上午07:53