> 九號工具站
返回列表

Spec Review Checklist — 30 個問題抓出 80% 的需求漏洞

一份能在會議前用 15 分鐘掃完整份 spec 的 checklist。從前置條件、邊界、錯誤處理、狀態機到資料一致性,附使用範例。

QA spec-review 需求審查 checklist
· 最後更新 2026-06-09 · 最後審閱 2026-08-30

💡 本文原刊於 qa.9niche.com,2026-08 併入 9niche.com 懶人包,內容照原文完整搬遷。

1. 前言

QA 在 spec review 階段抓到一個漏洞,等於開發階段省 10 倍時間,上線後省 100 倍。這份 checklist 是我跑 spec review 用的固定問題集。會議前 15 分鐘掃一遍,會議中就有具體問題能問

2. 怎麼用這份 checklist

  1. PM/PO 發 spec 後,會議前自己對 checklist 走一輪
  2. 每個「不確定」「沒寫到」的點,記下來
  3. 會議上用問題形式問(不要用「你少了 XX」開頭,會撕破臉)
  4. 會議後寄 follow-up email 把澄清的點寫回 spec

3. 一、前置條件(5 個問題)

  • [ ] 誰能用這個功能? 角色、權限、付費等級、地區限制?
  • [ ] 需要先做什麼? 帳號驗證?綁定?KYC?
  • [ ] 依賴哪些功能? 如果 A 功能掛掉,這個還能用嗎?
  • [ ] 支援哪些平台? Web only?iOS 14+?舊瀏覽器?
  • [ ] 多語系怎麼處理? 文案、日期、貨幣、RTL?

🔍 實例:spec 寫「使用者可以提現」沒寫前置 → 問「未驗證 KYC 的使用者點下去會怎樣?看不到按鈕、按鈕灰、還是跳提示?」

4. 二、輸入與邊界(6 個問題)

  • [ ] 每個欄位的型別與長度限制? (文字 1-50 字、金額 0.01-9999999)
  • [ ] 空值 / null 怎麼處理? 必填還是選填?
  • [ ] 特殊字元如何處理? emoji、SQL injection 字元、跨語言字符
  • [ ] 數字邊界? 0、負數、極大值、小數點精度
  • [ ] 時間相關? 時區、夏令時、未來時間、過去時間、跨午夜
  • [ ] 批次/列表上限? 一次能傳幾筆?10000 筆會 timeout 嗎?

🔍 實例:spec 寫「金額」沒寫精度 → 問「使用者輸 0.001 元會被接受嗎?小數第三位會被四捨五入還是無條件捨去?」

5. 三、狀態機(5 個問題)

  • [ ] 有哪些狀態? 列出來,畫圖
  • [ ] 狀態轉換規則? 從 A → B 的條件是什麼?
  • [ ] 有沒有不可逆狀態? 取消了能恢復嗎?
  • [ ] 狀態同時被改怎辦? 兩個裝置同時操作?
  • [ ] 狀態 timeout? 「待付款」過 30 分鐘自動取消嗎?

🔍 實例:訂單有 pending、paid、shipped、cancelled → 問「shipped 之後能 cancel 嗎?退款流程從哪個狀態走?」

6. 四、錯誤處理(5 個問題)

  • [ ] 錯誤訊息文案? 每種錯誤有對應文案嗎?多語系?
  • [ ] 錯誤該不該重試? 自動 retry 還是讓使用者自己重來?
  • [ ] 部分成功怎辦? 批次 10 筆成功 7 筆怎處理?全 rollback 還是部分提交?
  • [ ] 後端 down 時前端表現? 卡 loading?跳錯誤頁?離線模式?
  • [ ] 第三方 API fail 怎辦? 金流 timeout、簡訊送不出去

🔍 實例:spec 寫「呼叫金流 API」沒寫失敗 → 問「金流 timeout 後使用者看到什麼?訂單會被建立嗎?再按一次會重複扣款嗎?」

7. 五、資料一致性(4 個問題)

  • [ ] 資料寫多處嗎? DB + Cache + 第三方,同步策略?
  • [ ] race condition? 兩個請求同時改同一筆會怎樣?
  • [ ] 歷史資料是否受影響? 改 schema 後舊資料怎處理?
  • [ ] 刪除是 soft 還是 hard? 刪了能查嗎?關聯資料怎麼辦?

🔍 實例:spec 寫「使用者可改 email」沒寫 → 問「email 是 login 用的,改了之後舊 session 還有效嗎?通知會寄到新還舊 email?」

8. 六、非功能性(5 個問題)

  • [ ] 效能 SLA? API 回應 < 500ms?同時 1000 人會掛嗎?
  • [ ] 資安? 敏感資料是否加密?log 會寫到密碼嗎?
  • [ ] 稽核? 操作記錄要留多久?誰能看?
  • [ ] 可觀測性? 出事時怎麼 debug?metrics、logs 有寫嗎?
  • [ ] 隱私 / 法遵? GDPR、個資法、未成年保護?

🔍 實例:spec 沒寫 → 問「使用者要求刪除帳號時,他的訂單記錄要刪嗎?財務紀錄不能刪,但個資要去識別化嗎?」


9. 漏洞模式辨識

走完 checklist 之後,看看 spec 有沒有這些「模糊用詞」

模糊詞該問什麼
「適時」、「即時」多久內?1 秒?10 秒?next request?
「自動」觸發條件?頻率?失敗怎辦?
「合理的」、「合適的」量化標準?
「通常」、「一般而言」那「不通常」的情況呢?
「使用者可以」哪些使用者?所有狀態都可以嗎?
「應該」、「會」不會的時候呢?fallback?
「等」、「之類」把列舉補完,缺的列出

每出現一個,至少一個問題


10. 用法範例

某次 review「會員等級系統」spec,我用這份 checklist 跑出 12 個問題:

  1. (前置)非會員看到等級頁面顯示什麼?
  2. (前置)多語系:等級名稱「黃金」翻成英文要怎麼處理?
  3. (邊界)累積消費 -100 元(退費)會降級嗎?
  4. (邊界)跨年度怎麼算?1/1 0:00 自動 reset 還是滾動計算?
  5. (狀態)從黃金降白金能再升回去嗎?
  6. (狀態)升等是即時還是次月生效?
  7. (錯誤)升等通知寄信失敗怎辦?等級會升嗎?
  8. (一致性)使用者改名後等級記錄要更新嗎?
  9. (一致性)等級紀錄是寫 DB 還是算的?
  10. (非功能)後台改規則的話,現有會員等級會被回算嗎?
  11. (非功能)等級資料 GDPR 刪除請求怎處理?
  12. (模糊)spec 寫「使用者可以查詢自己的等級歷史」→ 查多久?分頁?匯出?

PM 回去補了 spec,省下後續至少 3 個迴歸測試循環


11. 最後

Spec review 不是挑剔,是替團隊省錢。會議前 15 分鐘走這份 checklist,會議中用問題形式問清楚,會議後 follow-up 確認寫回 spec。三個月後 PM 會謝謝你。

ℹ️

一般聲明

本站提供之資訊僅供參考,不保證其完整性與正確性。使用者應自行判斷資訊之適用性。

意見反饋