# TRP-001　測試計畫與準入準出標準（Test Plan）

| 項目 | 內容 |
|---|---|
| 文件編號 | TRP-001 |
| 版本 | 1.0 |
| 狀態 | 已核定 |
| 撰寫者 | QA Lead |
| 審查者 | PMO / SA |
| 對應需求 | BRD-001 §7 品質準則；BRD-004 POC 17 項；NFR-QUAL 群組 |

---

## 1. 目的

定義本系統之**測試策略、測試層級、測試劇本來源、測試資料策略、缺陷管理流程與準入／準出標準**，
作為 Coding 階段之測試總綱，並與 CSP-005（單元測試）及 BRD-004（POC 驗收）連結。

---

## 2. 測試層級與責任

| 層級 | 負責角色 | 工具 | 覆蓋目標 |
|---|---|---|---|
| 單元測試 | Coder / TestBOT | JUnit5 + Mockito + JaCoCo + PITest | `domain/`、`application/` 邏輯（CSP-005） |
| 整合測試 | Coder | Testcontainers | `infrastructure/` 真實接線 |
| 契約測試 | Coder | openapi-diff / Pact | 服務對外 API 與 SDD-006 一致 |
| POC 驗收測試 | QA / 客戶 | 自動化 E2E | BRD-004 之 17 項情境 |
| 效能測試 | 效能工程 | k6 / JMeter | 授權 P95 ≤ 500ms、TPS 門檻 |
| 安全測試 | Security Architect | SAST / DAST / 秘密掃描 | SAD-005 個資與鑑權 |

---

## 3. 測試劇本來源

1. **功能測試劇本**：由 BRD-002 之 68 項 FR 逐項展開；每項 FR 至少 1 組正向＋1 組異常劇本。
2. **POC 驗收情境**：BRD-004 之 17 項，為**最高優先**驗收項，對應客戶自選優先序。
3. **非功能測試**：由 BRD-003 之 874 項 NFR 萃取可測者（效能、可靠、安全、相容…），列為對應測試套件。

```mermaid
flowchart TD
    FR[BRD-002 68 FR] --> TC[功能劇本]
    POC[BRD-004 17 POC] --> TC
    NFR[BRD-003 874 NFR] --> NC[非功能劇本]
    TC --> S[Test Suite]
    NC --> S
    S --> R[TRR 測試報告]
    R --> RTM[GOV-004 追溯矩陣]
```

---

## 4. 測試資料策略

- **合成資料**：卡號使用測試 BIN（如 `4000********1234`），身分證／手機使用合成值；**嚴禁真實客戶個資**。
- **快照隔離**：整合測試以 Testcontainers 獨立起庫，互不污染；單元測試不連任何 DB。
- **冪等驗證資料**：每個寫側場景準備「同一 Idempotency-Key 送兩次」的資料，驗證第二次返回首次結果。

---

## 5. 缺陷管理流程

```mermaid
stateDiagram-v2
    [*] --> Open: 發現
    Open --> Triage: 分派
    Triage --> InProgress: 接受
    Triage --> Rejected: 重複/非缺陷
    InProgress --> Fixed: 修復完成
    Fixed --> Verifying: 送驗
    Verifying --> Closed: 驗證通過
    Verifying --> Reopened: 復現
    Reopened --> InProgress
    Closed --> [*]
```

| 欄位 | 說明 |
|---|---|
| Defect ID | `DEF-<YYYYMMDD>-<NNN>` |
| 嚴重度 | S1（阻斷／資安）／S2（主要功能）／S3（次要）／S4（介面） |
| 狀態 | 上圖狀態機 |
| 關聯 | `Refs: FR-xx-NN` 或 `POC-xx` 或 `NFR-xx-NN` |
| 重現步驟 | 劇本、輸入、預期、實際 |

- **S1 缺陷**：0 容忍，發現即阻斷發版；**A 類差異（資金差錯）必須為 0**（SoW 門檻）。
- 缺陷修復須附**回歸測試**，防止復發；回歸測試納入對應套件常駐。

---

## 6. 準入／準出標準

### 6.1 準入（Entry Criteria，進入 Coding 前）
- [x] BRD-001~004 已核定
- [x] SAD-001~006 已核定
- [x] SDD-000~007 已核定（含 ER/DFD/Sequence/Conflict/狀態機/API/WebUI）
- [x] CSP-001~005 已核定
- [x] 全文件 Mermaid 語法 0 錯誤
- [x] API 契約（`contracts/openapi/*.yaml`）已產出並通過結構驗證

### 6.2 準出（Exit Criteria，可交付／上線前）
- [ ] 單元測試行覆蓋 ≥ 80%、分支 ≥ 70%、Mutation 殺死率 ≥ 75%
- [ ] 禁止模式掃描（scaffold / mockdata / faketest）0 命中
- [ ] 68 項 FR 功能劇本全部 Pass
- [ ] 17 項 POC 驗收全部 Pass
- [ ] 效能測試達標：授權端到端 P95 ≤ 500ms、iECS ≥ 1,000 TPS、BASE24-mas > 2,000 TPS
- [ ] 引擎一致率 ≥ 99.99%、差異率 < 0.01%、A 類差異 0、批次金額差異 0
- [ ] 安全掃描無高／嚴重漏洞；個資遮蔽經滲透驗證
- [ ] TRR-001 測試報告記載完整劇本、資料、缺陷狀態

---

## 7. 測試報告（TRR-001）內容

每輪測試產出 `TRR-001_測試報告.md`，至少含：
1. 執行摘要（通過／失敗／跳過數、覆蓋率、準出達成度）
2. **測試劇本清單**（劇本 ID、關聯 FR/POC/NFR、步驟、預期結果）
3. **測試資料清單**（輸入資料集、來源、遮蔽狀態）
4. **缺陷清單**（DEF-ID、嚴重度、狀態、關聯、修復說明）
5. 效能與一致性測試結果對照 SoW 門檻
6. 未決事項與風險

---

## 8. 與禁止事項之連結

本計畫之所有自動化檢查，均依 CSP-001 §8、CSP-005 §6 之禁止清單執行：
掃描器 `scan_scaffold.py`（空殼）、`scan_mockdata.py`（mock 當成品）、`scan_faketest.py`（假測試）
於 CI 強制執行，**命中即阻斷**。這是客戶明示的硬性要求——「文件與程式都不可有塞框架、mock data」。
