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 相依的失敗傳導。