BDD checklist 專門找規格沒寫到的維度(15 題)
逐條掃規格的每一條 AC。每題是「問句 + 判定失敗的條件」,任一項失敗就標
[NEEDS CLARIFICATION]。它抓的是沉默那一種洞。
前置狀態
- Q1 這條需求生效前,系統必須處於什麼狀態?— 失敗:只寫動作不寫前提,或前提只有「使用者已登入」這種萬用句
- Q2 這個前提不成立時會怎樣?— 失敗:spec 沒有對應段落
觸發
- Q3 誰觸發?系統自動還是人為?— 失敗:主詞是「系統」但沒說什麼事件驅動
- Q4 同一個觸發連按兩次/重送會怎樣?— 失敗:找不到冪等性描述
結果可觀察性
- Q5 做完之後,外部(API 回傳/DB 欄位/事件/通知)看得到什麼具體差異?— 失敗:Then 只有「處理完成」「更新狀態」這類不可觀察的動詞
- Q6 這個結果誰會看到?誰不該看到?— 失敗:沒有權限/可見性描述
失敗路徑
- Q7 這條需求至少兩種失敗方式是什麼?— 失敗:寫不出兩種 = 該段是 happy-path-only
- Q8 失敗時已經發生的部分動作怎麼辦?— 失敗:沒有回滾/補償/部分成功的定義
- Q9 依賴的外部服務逾時或回錯,行為是什麼?— 失敗:spec 未提
邊界與狀態
- Q10 剛好等於上限/下限時,通過還是拒絕?— 失敗:只寫「不可超過」沒定義等號
- Q11 這個實體有哪些狀態?從終態再打一次會怎樣?— 失敗:沒有狀態機或狀態轉移表
- Q12 空集合/0 筆/null 的行為?— 失敗:未提
時間與並行
- Q13 兩個使用者同時做這件事,誰贏?— 失敗:未提且該資源可競爭
- Q14 有沒有時間性條件(過期、生效日、時區)?— 失敗:出現日期欄位但沒說時區與邊界
跨線相依
- Q15 這條需求需要別條開發線先完成什麼?那個東西失敗會怎樣傳導過來?— 失敗:相依只寫在架構圖、沒寫在行為描述
用法上的兩個約束
- 通過標準:每條 AC 要有 1 個成功場景 + 至少 2 個失敗場景,寫不出來的地方就是洞。
- 場景常駐 spec 的驗收準則章節、每條掛 AC id,不另開檔案。 獨立場景檔會和 spec 各自漂移,變成兩份都要改;審完就丟則會讓下次改規格時審查能力歸零——而痛點正是規格會改。收斂規則見 AC 照業務規則切,不照使用情境切。
外部 spec 最常缺的幾題:Q4 冪等性、Q7 兩種失敗、Q9 逾時、Q10 邊界等號、Q13 併發誰贏、Q15 相依的失敗傳導。