UNIT 05 · 120 MINUTES
測試、Diff 與 Code Review
學習目標:為任務選適合的驗證方式;理解 Codex 報告的測試結果;用 review 找到實際缺陷,再自行核對 diff。
120 分鐘安排
10 分測試基線
20 分從條件到測試
20 分理解 test scope
35 分Review 案例
25 分審查自己 diff
10 分交付檢查
本單元計時00:00:00
VALIDATION PYRAMID
驗證不只是一個「有跑測試」
邏輯測試
快速測單一函式、輸入邊界、狀態轉換。
整合測試
確認元件、資料庫、API 或多模組介面能一起工作。
端到端檢查
從使用者可見入口走完最重要的一條流程。
依修改的風險和範圍選擇適當層級。小型純函式可能只需單元測試;跨 API 和 UI 的功能通常要多一層整合或手動流程驗收。
讀測試結果要問:跑了哪條命令?測了哪些檔案或案例?是否有跳過、失敗、環境錯誤?是否有新測試真正覆蓋本次條件?
CASE / DISCOUNT BUG
案例:優惠碼讓結帳總價多折一次
更改結帳頁後,有優惠碼的購物車金額不正確。Codex 表示「測試通過」,但只執行了 UI lint,折扣計算測試沒有被執行。
Lint(靜態規範檢查)和功能測試回答不同問題;不能互相取代。驗收矩陣範例
沒有優惠碼
總價 = 商品小計 + 運費 + 稅。
有效百分比折扣
只折商品金額;確認 rounding 規則。
折扣大於小計
總價是否應降到 0,而非負數?
無效 / 過期折扣
保留原金額並呈現明確訊息。
CODE REVIEW WORKBENCH
審查時分清「發現」和「偏好」
- 缺陷可以由變更和程式路徑推導。
- 指出觸發條件及使用者 / 資料影響。
- 標示檔案和行號,且行號落在相關變更。
- 優先找 bug、安全、資料一致性和漏掉的測試;個人風格移交 lint。
LAB / 25 MIN
你的 diff 審查實驗
- 拿目前 repo 的一份小 diff,或在練習任務新增一個有條件分支的函式。
- 請 Codex 先列本次修改的行為和驗收條件,再提議需要跑的測試。
- 在 Codex 完成後,用 /review 針對未提交變更檢查。
- 對每個 review finding 打開相關程式碼,確認資料流、觸發條件和實際影響。
- 請 Codex 修一項你確認的問題,再重跑相關測試和 review。
情境題:程式測試通過,UI lint 也通過,但 Codex 沒跑折扣計算測試,能否宣稱優惠功能已完整驗證?