跳至正文
我的好朋友 Claude
第 116 期|Claude Code|創作者、打工仔|

測試應該寫幾多?用風險決定,唔好只追覆蓋率

用損害程度、可復原性同改動範圍安排測試,分清楚覆蓋率、斷言品質同整合驗證。低頻後台同資料腳本亦可能係高風險。

難度 ★★☆時間 40 分鐘用具 Claude Code、現有專案與測試報告
【編者撰】一個香港人

覆蓋率答唔到所有問題

覆蓋率可以話畀你知測試執行過邊啲程式碼,幫你發現遺漏。但某行執行過,唔代表有人驗證咗佢嘅結果;分支全部行過,亦唔代表所有輸入組合都正確。

所以唔應該將專案硬分成「核心 100%、常用 80%、少用 0%」。先睇錯咗有幾大影響,再決定要用咩證據證明佢正常。

1. 先搵出失敗代價

功能要先問嘅問題有用嘅驗證
金額計算或付款狀態會唔會重複執行、少計、多計或出現不一致?邊界、失敗重試、冪等同狀態轉移測試
權限與租戶資料另一個帳戶會唔會讀到或改到資料?有權與無權情境、跨帳戶隔離測試
後台退款或批量操作低頻,但一次影響幾多人?可唔可以復原?權限、預覽、部分失敗、重試與審計驗證
匯入與遷移腳本壞資料會點處理?中斷後再跑會點?代表性樣本、資料完整性、重跑與復原演練
搜尋與表單冇結果、網絡失敗、鍵盤操作會點?邏輯測試、主要使用流程與無障礙檢查
純展示文字改錯會唔會影響連結、理解或版面?內容審閱、連結檢查、適當視覺驗證

呢張表係問題清單,唔係按資料夾名稱自動分類。admin/ 入面可以有高風險操作,utils/ 入面可以藏住付款計算。

2. 叫 Claude 先讀資料流,唔好先報百分比

◉ 按風險盤點測試

讀取我指定嘅模組、呼叫位置同現有測試,只做盤點。

每個重要行為列出:

- 使用者或系統依賴咩結果;
- 出錯會影響咩資料或操作;
- 現有測試驗證咗咩,未涵蓋咩;
- 最值得補嘅具體案例同理由。

唔好用檔案名稱代替閱讀,唔好憑空估覆蓋率。冇讀到、未執行同未知嘅部分分開列明。

先由近期改動、曾經出錯或者影響大嘅路徑開始。範圍太大就分批,保留已讀檔案清單,唔好一次叫模型「全面審閱」就當完成。

3. 補測試時,先補會捉到錯嘅案例

假設匯入器遇到重複 ID:你要先定義係拒絕整批、略過重複,定係更新原有資料。未定規則之前,多寫幾個測試只會將猜測固定落嚟。

規則定好之後,測試應該檢查輸出、持久化結果同失敗處理。例如「回傳成功」之外,核對冇重複建立資料;部分失敗之後重跑,核對結果仍然一致。唔好只斷言某個 mock 函數有被呼叫。

對一個已知錯誤,先寫會重現佢嘅測試,確認修正前失敗、修正後通過。對外部合約,安排受控整合測試;對人手操作流程,補實際瀏覽器或者操作驗證。各種證據各有範圍。

4. 覆蓋率門檻點用先有意思?

先用專案現有框架產生報告,確認量度嘅檔案、排除項目同指標。Statements、branches、functions、lines 唔係同一樣嘢,唔同測試命令嘅選項亦唔通用。

門檻可以防止重要模組嘅測試覆蓋突然下降,但應該連同具體行為要求使用。例如:

測試政策範例:
- 修改權限判斷時,要驗證允許、拒絕與跨帳戶隔離。
- 修正可重現錯誤時,保留對應回歸測試。
- 改動匯入器時,要驗證重複資料、部分失敗與再次執行。
- 覆蓋率下降時,解釋原因,唔以排除程式碼掩蓋下降。
- 排除產生檔案等量度雜訊,要有明確理由。

團隊可以按現況定數值基線,再逐步改善;唔好為達到一個漂亮數字寫無意義斷言,或者刪走難測分支。

5. 留返一份可追查結果

完成一輪後,記低改咗咩行為、加咗咩案例、用咩命令驗證、結果係點,同仲有咩未知。

測試通過唔等於正式環境必然安全。相反,冇自動測試亦唔一定代表每個文字改動都要新增測試;要揀能有效發現今次錯誤嘅方法。重點係驗證同風險對得上,而唔係每個檔案都用同一把尺。

◉

文中工具 · 連結

  • 開發者用 — terminal 入面同 Claude pair coding

睇完想同 Claude 一齊行一次?

撳一下,複製教學提示詞同全文到剪貼簿。 貼入 Claude.ai 或 Claude Desktop,再按文章逐步試做, 整理出適合你情況嘅草稿或清單;未確認嘅資料會留低畀你核對。

◉下期預告 · 相關情境
◉訂閱狀態

訂閱服務尚未開通

最新教學可直接到文章列表閱讀。