67 lines
2.2 KiB
Markdown
67 lines
2.2 KiB
Markdown
|
|
# 巡樓後端 · 測試政策(Phase C)
|
|||
|
|
|
|||
|
|
> 對齊 `spec.md` §9(184 IDs)與 §9.18。
|
|||
|
|
> Task 入口:`tasks/INDEX.md`。
|
|||
|
|
|
|||
|
|
## 1. 為什麼
|
|||
|
|
|
|||
|
|
§9 是 **Given/When/Then 全量驗收**,不是示意清單。
|
|||
|
|
「功能 task 做完 + 手測一下」**不算** P0/P1 過關。
|
|||
|
|
|
|||
|
|
## 2. 四層測試
|
|||
|
|
|
|||
|
|
| 層 | 位置 | 工具建議 | 必須 |
|
|||
|
|
|----|------|----------|------|
|
|||
|
|
| Unit | `apps/backend/internal/**/*_test.go` | `go test` | 邏輯/guard/計費規則;**路徑根 = apps/backend** |
|
|||
|
|
| API Integration | 同上 + `//go:build integration` 可選 | testkit + Mongo/Redis | 每條 §9 ID 主路徑 |
|
|||
|
|
| Contract | `TestX_*` | 全站抽樣 | X-01~06 |
|
|||
|
|
| FE↔BE | `apps/web/tests/integration/**` | vitest 或 playwright + `LIVE_API_BASE` | live repo 契約(非 mock) |
|
|||
|
|
|
|||
|
|
## 3. Case 命名(強制)
|
|||
|
|
|
|||
|
|
- Go:`TestAU_01_LoginSuccess`、`TestOB_02_DueStep_PublishedViaTransport`
|
|||
|
|
- JS:`it('AU-04 me returns numeric uid via live repo')`
|
|||
|
|
- 必須能被 `grep -E 'AU-01|TestAU_01'` 從測試樹找到
|
|||
|
|
- 最終由 `T222` / `acceptance-matrix.md` + check script 機械對齊 **184** 列
|
|||
|
|
|
|||
|
|
## 4. 外部依賴
|
|||
|
|
|
|||
|
|
| 依賴 | 自動化 | 不可做 |
|
|||
|
|
|------|--------|--------|
|
|||
|
|
| Threads OAuth/Publish | **fake HTTP server** 注入 | 只 `UpdateOne` 成 connected/published |
|
|||
|
|
| AI / Exa | fake transport | 假成功空 data |
|
|||
|
|
| 真 Meta/真 xAI | 矩陣標 `manual`/可選 live | 取代 auto case |
|
|||
|
|
|
|||
|
|
## 5. 指令(目標形狀;M0 T108 落地)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 後端
|
|||
|
|
cd apps/backend
|
|||
|
|
make test # go test ./...
|
|||
|
|
make gen-api # 改 .api 後
|
|||
|
|
|
|||
|
|
# 前端 FE-BE(T220)
|
|||
|
|
cd apps/web
|
|||
|
|
LIVE_API_BASE=http://127.0.0.1:8888 npm run test:integration
|
|||
|
|
|
|||
|
|
# 煙測(T218)
|
|||
|
|
bash scripts/smoke-p0.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 6. 里程碑閘門
|
|||
|
|
|
|||
|
|
| M 完成定義 | 除功能外必須 |
|
|||
|
|
|------------|--------------|
|
|||
|
|
| M0 | T107 testkit + T108 CI targets |
|
|||
|
|
| M1 | T119 綠(AU/AR/AP/AO/AD) |
|
|||
|
|
| M2 | T136 綠(TH/JB) |
|
|||
|
|
| M3 | T156 綠(ST/USG) |
|
|||
|
|
| M4 | T172 綠(PE/PL/OB/OP) |
|
|||
|
|
| M5 | T196 綠(IN/SC) |
|
|||
|
|
| M6 | T219–T222 綠;矩陣 184 齊 |
|
|||
|
|
|
|||
|
|
## 7. 與 mock 前端的關係
|
|||
|
|
|
|||
|
|
- `createRepos('mock')` 的單元測 **不** 計 §9 live 驗收。
|
|||
|
|
- live 驗收以 gateway + worker + `createRepos('live')` 為準。
|