2.2 KiB
2.2 KiB
巡樓後端 · 測試政策(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 落地)
# 後端
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')為準。