| name | ac-coverage |
| source | ../../../../skills/ac-coverage/SKILL.md |
| source_version | 1.0.0 |
| translation_version | 1.0.0 |
| last_synced | "2026-05-28T00:00:00.000Z" |
| scope | universal |
| description | [UDS] 分析驗收條件(AC)與測試之間的追蹤關係並產生覆蓋率報告 |
| allowed-tools | Read, Grep, Glob |
| argument-hint | [規格檔案路徑] |
AC 覆蓋率助手
語言: English | 繁體中文
分析驗收條件(AC)與測試之間的追蹤關係,並產生覆蓋率報告。
與 /coverage 的差異
| 面向 | /coverage | /ac-coverage |
|---|
| 範圍 | 程式碼層級(行數/分支/函式) | 需求層級(AC 對應測試) |
| 輸入 | 原始碼 + 測試執行器 | SPEC 檔案 + 測試標註 |
| 問題 | 「程式碼測試了多少?」 | 「哪些 AC 有測試?」 |
| 輸出 | 覆蓋率百分比 | 追溯矩陣 + 缺口報告 |
工作流程
- 解析 SPEC — 從規格檔案抽取 AC 定義(AC-1, AC-2, ...)
- 掃描測試 — 依標準連結慣例搜尋測試檔中的
@AC 與 @SPEC 標註
- 建立矩陣 — 將每個 AC 對應到其測試引用(檔案、測試名稱、行號)
- 分類狀態 — 將每個 AC 標記為 ✅ 已覆蓋、⚠️ 部分覆蓋、或 ❌ 未覆蓋
- 計算覆蓋率 — 套用公式:
覆蓋率 % = (已覆蓋 + 部分覆蓋 × 0.5) / 總數 × 100
- 產生報告 — 輸出標準化的 Markdown 報告
連結標註慣例
測試必須使用 canonical 合併標註 @SPEC-<id> @AC-<n>(單一合併標籤、保持同一行;勿拆成 @AC / @SPEC 兩行)引用其來源 AC:
describe('AC-1: 使用者以有效憑證登入', () => {
it('登入成功後應導向儀表板', () => { ... });
});
class TestAC1_UserLogin:
"""AC-1: 使用者以有效憑證登入
@SPEC-001 @AC-1
"""
def test_redirect_to_dashboard(self): ...