Sprint 流程中 QA 的位置 — 進場時機、估點、DoR / DoD 完整指南

「QA 應該在 sprint 第幾天進場?」、「QA 要不要估點?」、「DoD 該寫什麼?」這三個問題每家公司答案都不同。這篇把 Scrum 的標準流程攤開,告訴你 QA 在每個儀式該做什麼、怎麼跟團隊談

Scrum 的 5 個儀式 + QA 角色

Backlog Refinement → Sprint Planning → Daily Stand-up → Sprint Review → Retro
     (Grooming)       (規劃 sprint)     (每日)          (Demo)         (回顧)
儀式 QA 該做的
Refinement / Grooming 對 story 提澄清問題、估 QA 工時、找風險
Sprint Planning 確認 QA capacity、加 QA tasks、定 DoR / DoD
Daily Stand-up 回報 test 進度、提 blocker、要求 dev 配合
Sprint Review (Demo) Demo 前先驗、demo 中協助回答品質問題
Retrospective 提 QA 角度的 process 改善(流程、工具、溝通)

QA 不只「測試階段才出現」— 整個 sprint 都該在場。缺席任何一個儀式都會出代價。

QA 進場時機:「左移」(Shift Left)

傳統做法(爛)

[Day 1-7] Dev 寫 code
[Day 8-9] QA 開始測試
[Day 10] 緊急修 bug
[Day 11] 又發現新 bug
[Day 14] 含 bug 上線

問題: - QA 9 天才接觸 → 對 story 沒概念 - Bug 在 sprint 末才出 → 修不完 → 推下版 - QA 跟 dev 沒共識 → 互相抱怨

Shift Left 做法(好)

[Refinement, sprint -3] QA 提澄清問題、列風險 case
[Planning, sprint Day 0] QA 加 test plan task、估 QA 工時
[Day 1-3] Dev 寫 code + Unit test,QA 寫 test cases、準備自動化
[Day 4-7] Dev API 完成,QA 開始 API test + 整合 test
[Day 8-9] Dev 改 bug + 收尾,QA 跑回歸
[Day 10] Demo 前驗收
[Day 11-14] Buffer + 自動化補強

關鍵:QA 從 sprint Day 0 就同步進場,不是等開發完才出現。

Shift Left 的具體做法

  1. Spec review 階段 → 提需求漏洞(見 [[spec-review-checklist]])
  2. Story 拆分時 → 問「測試怎麼跑」這個問題
  3. Dev 寫 code 中 → 用 mock / 玩 Postman 提前測 API contract
  4. Code review 也參與 → 看到「奇怪的程式碼」舉手
  5. TDD / BDD → 跟 dev 一起寫測試案例

QA 估點:要不要、怎麼估

問題的核心

Scrum 教科書說「team 一起估」,但實務上:

  • 如果 QA 不估:dev 估完不含 QA 工時 → sprint 滿載 → QA 加班補
  • 如果 QA 估:估錯了被質問、估準了被視為瓶頸

結論:QA 要估,但用不同的數字。

兩種估法

方法 A:QA 跟 dev 共用同一個 story point

  • Story point 含 dev + QA 全部工時
  • 估的時候要把 QA test、寫自動化、修 bug 一起估
  • 例如:dev 覺得 3 點、QA 覺得加 test plan + 自動化要 2 點 → 共識 5 點

優點:清楚的 sprint capacity。 缺點:QA 估太多時被 dev 嫌,QA 估太少時被自己拖累。

方法 B:QA 估獨立工時(小時)

  • Dev 用 story point 估、QA 用工時估
  • 兩者分開 capacity plan
  • 例如:dev 估 3 點(約 3 天)、QA 估 8 小時 test plan + 4 小時跑 + 4 小時補自動化

優點:QA 工時透明、不被 story point 黑盒掉。 缺點:需要團隊接受「story point 不含 QA」這個前提。

我的建議

新團隊 / Scrum 純粹派 → 方法 A(共用 story point) 成熟團隊 / QA 工作量變動大 → 方法 B(小時)

死規矩:「QA 估的工時 ≥ dev 估的 30%」,否則 spec 太簡單或 QA 太樂觀。

估什麼

QA 要估的不只「跑測試」,還有:

項目 工時估算
Spec review + 提問 1-3 hr
寫 test plan / test cases 2-8 hr(依 story 大小)
探索性測試 2-4 hr
跑迴歸(手動) 2-8 hr
寫自動化(新增 case) 2-16 hr
跨瀏覽器 / 跨裝置 2-4 hr
Bug 重現 + 報告 預留 sprint 20% buffer
跟 dev / PM 來回溝通 預留 sprint 10%

total 通常是「dev 工時 × 0.3-0.5」。低於這個比例可能漏估。

Definition of Ready (DoR) — QA 的入場護城河

DoR = story 能進 sprint 的條件。不滿足就不該進 sprint。

QA 該堅持的 DoR 條件

  • [ ] Spec 有寫,且 QA 已 review、無 P0 / P1 問題
  • [ ] User story 有明確的「Acceptance Criteria」(驗收條件)
  • [ ] 跨系統依賴已釐清(哪些第三方、哪些舊功能)
  • [ ] Test environment 可用、test data 有準備好
  • [ ] UI mockup(如有)已 final
  • [ ] Edge case 至少列出 5 個
  • [ ] 此 story 不阻擋其他 P0 work

沒過 DoR 的 story 進 sprint 是團隊的災難。QA 在 grooming 要敢喊停。

典型反例

PM:「這個就是加個按鈕嘛、簡單啦」 QA 應該問: - 按鈕在哪個頁面?只在 desktop 還是 mobile 也有? - 點下去做什麼?需要 auth 嗎?權限怎處理? - 失敗時 UX? - 成功時要不要送訊息給 backend / log? - 有沒有需要 i18n?

5 個問題下去、PM 講不清楚 = DoR 沒過。

Definition of Done (DoD) — QA 的出場保證

DoD = story 算完成的條件。低於這個不該被算進 sprint velocity。

QA 該堅持的 DoD 條件

  • [ ] 所有 Acceptance Criteria 都通過
  • [ ] Unit test coverage ≥ 團隊定的標準(通常 80%)
  • [ ] E2E test 新增 cover 此 story 的 P0 路徑
  • [ ] 自動化測試在 CI 跑通
  • [ ] 跨瀏覽器測試(Chrome + 至少一個其他)
  • [ ] Accessibility 基本檢查(aria、keyboard nav)
  • [ ] 效能 baseline 沒退步(LCP、INP)
  • [ ] 無 P0 / P1 bug
  • [ ] 文件 / changelog 已更新
  • [ ] PM 已 sign-off

「dev 寫完 code 就算 done」是反 Scrum 的。Done = 可以上 prod。

DoD 跟 DoR 的差別

DoR DoD
時機 進 sprint 前 結 sprint 前
守門人 QA + PM QA + Tech Lead
內容 需求清晰度 實作完整度
沒過會 退回 backlog 移到下 sprint(不算 velocity)

QA 在 Daily Stand-up 該講什麼

爛模板

「昨天測了 login,今天繼續測。」

好模板

昨天:
- 跑了 cart 模組 25 個 case,3 個 fail(已開 ticket #234, #235)
- API #234 我已重現、附 video,等 dev 排修

今天:
- 跑 checkout 整合測試(依賴 Joe 的 PR #102)
- 開始寫 cart 的 E2E 自動化

Blocker:
- staging 環境的 payment mock 壞了,需要 DevOps 配合
- PR #102 還沒 merge,影響我下午的測試

清楚的「完成 / 今天 / 阻礙」+ 具體 ticket / PR 編號 → stand-up 5 分鐘內讓全 team 知道 QA 狀態

QA 在 Sprint Review (Demo) 的角色

別讓 dev 自己 demo

Dev demo 容易: - 跑 happy path,跳過邊界 - 美化 bug、含糊帶過 - 不展示 edge case

QA 要做的

  1. Demo 前一天先驗 — 列「demo 中可能爆炸的點」
  2. Demo 中協助回答品質問題 - 「這支援 mobile 嗎?」→ QA 答(我有測 iOS + Android) - 「有測 dark mode 嗎?」→ QA 答
  3. 建議的 demo 順序 — Happy path → 一個邊界 → 一個 fail recovery
  4. 誠實回報已知問題 — 「這個 story done 了,但有個已知 P2 bug 排下版」

QA 在 Retrospective 該帶什麼話題

不要只講「測試辛苦」

爛例子:「這 sprint 太多 bug、改不完」→ 空話、沒解法。

帶 process 改善

好例子: - 「上 sprint Story #X 三次推延,原因都是 spec 不全。提議下次 grooming 加 spec checklist 5 題必答」 - 「自動化 E2E 跑 30 分鐘,flaky 5%。下 sprint 排 4 小時補強」 - 「Bug ticket 平均回應 2 天,提議 dev 每天早上花 30 分鐘 triage」

QA 在 retro 提的議題往往是整個 team process 最有改善空間的地方。不要藏私。

Sprint 各階段 QA 行事曆模板

[Sprint -3 days] Refinement
  - 讀 PRD、Spec
  - 列澄清問題(用 [[spec-review-checklist]])
  - 列高風險 case

[Sprint Day 0] Planning
  - 確認 capacity(不超載)
  - 加 QA tasks(test plan、自動化)
  - 確認 DoR / DoD

[Day 1-3] Dev 寫 code
  - 寫 test cases
  - 設定 test environment
  - 跑 API 早期測試(用 mock)

[Day 4-6] Dev API 完成
  - API integration test
  - 開始準備 E2E case

[Day 7-9] Dev UI 完成
  - 全功能 testing
  - Cross-browser
  - 探索性測試

[Day 10-12] Bug 修復 + 回歸
  - Bug verification
  - Regression
  - 自動化補強

[Day 13] Demo 前一天驗
  - Demo dry run
  - 列已知 issue

[Day 14] Demo + Retro
  - 協助 demo
  - 提 retro 議題

常見爭議與應對

Q1: 「QA 估太多 — sprint 容不下」

不要直接砍 QA 工時。砍 story scope砍 sprint 範圍

提議:「這個 story 我估 8 小時 QA、dev 估 3 天。如果想 fit,建議把 X 子功能拆下 sprint。」

Q2: 「QA 還沒測完就要 demo」

舉手喊停。「我還有 5 個 case 沒跑、demo 風險高。建議延一天 demo」。

如果硬要 demo,自己 demo 前驗一次、列已知問題、誠實在 demo 中說

Q3: 「dev 給的 PR 太晚、來不及測」

Retro 講。提議:

  • PR submit deadline 設在 sprint Day 9
  • 之後的 PR 自動延下 sprint
  • 用 trunk-based + feature flag 可以分散 PR

Q4: 「PM 半路加 story」

DoR 沒過。直接拒。

「這個 story 沒走 grooming、沒估點、沒 DoR check,這 sprint 不收。下 sprint 我幫你 priority 提前。」

反模式

  1. QA 等 dev 寫完才看 spec — 進場太晚、改不完
  2. QA 不估點 — 工時隱形、永遠加班
  3. DoD 沒包 QA — Story 算 done 了 bug 還沒修 → 下版炸
  4. Daily 只說「測試中」 — 沒人知道你在幹嘛
  5. Retro 只抱怨 — 沒提 process 改善

最後

QA 在 sprint 不是「跑測試的」,是「整個流程的品質負責人」。從 grooming 提問、planning 估點、daily 透明、demo 護航、retro 改 process — 每個儀式都要在場、都要發聲。做好這些,bug 自然少、上線自然順、團隊自然會給你資深的位置。