Chuyển đến nội dung chính

使用者故事與驗收標準:BA 的 INVEST 標準指南

Duy Tran11 分鐘
使用者故事與驗收標準:BA 的 INVEST 標準指南

「使用者故事因為遺漏邊界情況被拒絕。」「開發人員對 BA 的解釋不同。」「QA 說測試合格但業務說不對。」如果你聽過這些,根本原因通常是使用者故事和驗收標準寫得不夠清楚。

本指南很實用,不是理論。


1. 什麼是使用者故事(以及不是什麼)

使用者故事是從使用者角度表達需求的方式:

作為 [使用者類型],我想要 [行動/目標],所以 [原因/價值]。

好例子:

作為小零售客戶,我想查看過去 12 個月的交易歷史,所以我可以在需要時驗證特定月份的支出。

使用者故事不是:

  • 技術任務(「建立取得交易歷史的 API 端點」)
  • 詳細規格(「系統必須返回 100 筆記錄...」)
  • 功能清單(「交易歷史查看功能」)

2. 使用 INVEST 檢查故事品質

條件意義檢查
Independent故事可獨立交付「此故事是否依賴另一故事?」
Negotiable細節可協商「BA 和開發人員可以討論範圍變更嗎?」
Valuable提供明確價值「業務可以解釋為什麼需要這個嗎?」
Estimable開發人員可估算「開發人員有足夠資訊估算嗎?」
Small適配一個衝刺「可以在 1-3 天內完成嗎?」
Testable結果可驗證「QA 知道如何測試合格/失敗嗎?」

INVEST 失敗的故事通常:

  • 太大 → 分割為較小故事
  • 不可測試 → 缺少驗收標準
  • 沒有價值 → 「所以」條款沒有真實價值

3. 驗收標準:Given/When/Then 格式

驗收標準(AC)是故事被接受為「完成」的條件。使用 BDD 格式:

假設 [脈絡/前置條件]
當  [使用者執行的行動]
那麼 [預期結果]

實例 — 故事:查看交易歷史

情景 1:正確顯示
假設我以擁有過去 12 個月至少 1 筆交易的帳戶登入
當  我從選單點擊「交易歷史」
那麼 列表顯示最多 50 筆最近交易,按最新優先排序

情景 2:帳戶無交易
假設我以新帳戶登入,無交易
當  我點擊「交易歷史」
那麼 顯示「沒有交易」訊息,而不是空清單

情景 3:網路錯誤
假設我已登入
當  我打開「交易歷史」但失去網際網路連接
那麼 顯示錯誤訊息「無法載入資料。請重試。」
     並顯示「重試」按鈕

4. 使用 AI 偵測遺漏的邊界情況

這是 AI 真正有用的地方。將故事 + AC 貼到提示中:

以下是使用者故事和驗收標準:
[PASTE STORY + AC]

分析並列出:
1. 未涵蓋的邊界情況(特殊情況、異常輸入)
2. 隱含的非功能需求(效能、安全、無障礙)
3. 缺少的 AC 錯誤情景
4. 目前 AC 的模糊或矛盾之處
5. 還有其他受影響的參與者嗎?

AI 通常捕捉:

  • 資料大時的分頁
  • 時區邊界情況
  • 並發使用者情景
  • 權限邊界情況(管理員對使用者對客人)
  • 空/null 狀態
  • 非常長的輸入字串
  • 特殊字元

5. AI 功能的 AC:什麼是額外的?

當故事涉及 AI 時,新增:

# AI 功能特定的 AC

情景:AI 不確定
假設使用者提出模糊的問題
當  AI 信心分數 < 0.7
那麼 AI 必須:
  - 不偽造資訊
  - 提出澄清問題,或
  - 以完整脈絡路由給人工代理

情景:AI 輸出低於閾值
假設 AI 產生回應
當  毒性分數 > 0.3(根據安全篩選器)
那麼 回應自動被阻止
     事件被記錄到審計系統

6. 就緒定義(DoR)

故事已準備好進入衝刺時:

準備就緒定義
☐ 故事有「作為...我想要...所以...」格式
☐ 「所以」是真實業務價值,不只是功能描述
☐ 至少 3 個 Given/When/Then 格式的 AC
☐ AC 涵蓋至少 1 個成功路徑 + 1 個錯誤路徑
☐ 故事通過 INVEST 檢查
☐ 已識別依賴項
☐ 故事大小 ≤ 5 故事點(使用 Fibonacci 時)
☐ UI 線框或模擬圖已附加(適用時)
☐ 所有相關利益關係人已審查

7. 常見 BA 錯誤

錯誤 1:弱的「所以」

  • ❌ 「...所以系統顯示交易清單」
  • ✅ 「...所以我可以在月末對帳前驗證支出」

錯誤 2:AC 按 UI 寫,不按行為

  • ❌ 「『查看更多』按鈕在清單底部顯示為綠色」
  • ✅ 「使用者滾動到底部時,系統自動載入下一個 20 筆記錄」

錯誤 3:沒有錯誤情景

  • 每故事至少需要 1 個 AC 用於錯誤/無資料情況

錯誤 4:驗收標準 = 實裝細節

  • ❌ 「API 必須在 200ms 內回應」
  • ✅ 「4G 網路上 2 秒內頁面載入」→ 開發人員決定 API 逾時

總結

良好的使用者故事 = 正確的使用者視角 + 明確的價值 + 可測試的 AC。

提議工作流:

  1. 使用 As/I want/So that 範本寫故事
  2. 檢查 INVEST、必要時分割
  3. 在 Given/When/Then 中寫 ≥3 AC(成功 + 錯誤)
  4. 貼入 AI 偵測遺漏的邊界情況
  5. 加入衝刺待辦清單前傳給利益關係人審查