> 九號工具站
返回列表

AI 加速 PR / Code Review — QA 怎麼用 AI 抓 Regression 風險

QA 不寫 code 也要 review PR。這篇教你用 AI 跑 PR review:三層分工(AI 抓語法、你抓風險)、用 LLM 算 diff 的 regression blast radius、找漏掉的 test、CodeRabbit 設定、以及別被 100 條 nitpick 淹沒的反模式。

QA pr-review code-review regression coderabbit qa-ai
· 最後更新 2026-06-23 · 最後審閱 2026-08-30

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

1. 前言

QA 不寫 code、但最該 review PR — 因為你最懂「這改動會不會弄壞別的東西」。問題是 PR 一天十幾個、人工看不完。AI 的角色不是幫你按 LGTM、是幫你把 diff 變成一張風險地圖、讓你把精力放在只有人能判斷的地方。

2. 三層分工:AI 抓什麼、你抓什麼

誰做抓什麼
語法層AI 全自動typo、null check、未處理 exception、code style
風險層AI 出地圖、你判讀改動影響範圍、缺的 test、可疑熱區
業務層只有 QA業務規則對不對、會不會連動下游、該重測什麼

AI 越往下越不可信。語法層放心交給它、業務層永遠人工。

flowchart TB PR[PR 進來] --> L1["第 1 層 · AI 自動<br>語法 / null / convention / 明顯 bug"] L1 --> L2["第 2 層 · AI 輔助<br>blast radius / 缺的 test / 風險熱區"] L2 --> L3["第 3 層 · 只有你能做<br>業務邏輯 / 跨系統連動 / regression 判斷"] style L1 fill:#10b981,color:#fff style L2 fill:#f59e0b,color:#fff style L3 fill:#a855f7,color:#fff

3. 用 LLM 算 Regression Blast Radius

QA 看 PR 最該問的不是「這段 code 對嗎」、是「這改動會炸到哪」。把 diff 丟給 LLM:

Prompt:
「以下是一個 PR 的 diff。以 QA 角度分析:
1. Blast radius — 這改動會影響哪些模組 / API / 報表 / 下游流程?
2. Regression 風險 — 哪些『既有』功能可能因此壞掉?
3. 缺的 test — 這 diff 應該補哪些 test case 才安全?
4. 重測範圍 — 上線前我該手動重測哪些路徑?

只列 high / medium 風險、low 的略過。

[paste diff]」

:原本要追 code 半小時搞懂影響範圍、現在 3 分鐘拿到地圖、人工驗證熱區即可。

flowchart LR D[PR diff] --> AI[LLM 分析] AI --> B1[影響模組清單] AI --> B2[regression 熱區] AI --> B3[缺的 test] AI --> B4[該重測的路徑] B1 & B2 & B3 & B4 --> You[你決定<br>重測 scope] style AI fill:#a855f7,color:#fff style You fill:#06b6d4,color:#fff

4. 找出 diff 漏掉的 Test

AI 很擅長挑「這段改動沒被任何 test 蓋到」:

Prompt:
「以下是 diff + 現有 test 檔。
列出這次改動中『沒有對應 test』的邏輯分支、
依風險排序、並各給一個建議 test case 標題。」

合併條件可以設:新增/修改的邏輯分支必須有對應 test、AI 先掃、你確認。

5. 工具配置

工具角色QA 用法
CodeRabbitPR 自動 review第 1 層語法、自動留言
Claude / Cursor互動分析貼 diff 問 blast radius
GitHub Copilotinline 建議補 test、看 diff
Qodo (PR-Agent)開源 PR bot自架、敏感 repo 用
mindmap root((AI PR Review 工具)) 自動 review CodeRabbit GitHub Copilot review Qodo Merge 互動分析 Claude 貼 diff 問風險 Cursor 跨檔追連動 CI 整合 PR 自動留言 風險標籤 缺 test 警示

6. 一個 PR 的 review 流程

實測一個中型 PR:傳統人工 review 40 分鐘 → AI 輔助 15 分鐘、且風險覆蓋更完整。

flowchart TB A[PR 進來] --> B[CodeRabbit 自動掃<br>出 100 條 comment] B --> C[你掃一眼<br>挑 5 條關鍵] C --> D[貼 diff 給 Claude<br>問 blast radius + 缺 test] D --> E[人工驗證熱區<br>跑該重測的路徑] E --> F{業務邏輯對?} F -->|是| G[Approve + 註明重測範圍] F -->|否| H[Request changes<br>附 regression 風險] style B fill:#10b981,color:#fff style D fill:#a855f7,color:#fff style E fill:#06b6d4,color:#fff style F fill:#f59e0b,color:#fff

7. 別被 Nitpick 洪水淹沒

AI review 最大副作用:100 條格式建議、淹掉 3 條真風險

對策:

# CodeRabbit / PR bot 設定
review:
  severity_threshold: high      # 只報 high、過濾 nitpick
  group_nitpicks: true          # 格式類折疊成一條
  focus:
    - security
    - logic-error
    - missing-error-handling
  skip:
    - style-only

讓 AI 只講重話、格式類交給 linter

flowchart LR AI[AI 出 100 條] --> N["95 條 nitpick<br>命名 / 空行 / 格式"] AI --> R["5 條真風險<br>null / 邏輯 / 安全"] N -.淹沒.-> R style N fill:#94a3b8,color:#fff style R fill:#ef4444,color:#fff

8. 反模式

特別注意 A3:「AI 沒抓到」不等於「沒問題」。AI 看不到 system 上下文、跨服務連動、歷史 incident — 這些正是 QA 的價值。

flowchart TD Anti[AI PR Review 反模式] --> A1["看到 AI 說 LGTM 就合"] Anti --> A2["100 條 nitpick 全貼給作者"] Anti --> A3["AI 沒抓到 = 沒問題"] Anti --> A4["不給 AI 上下文、只貼一段"] Anti --> A5["業務邏輯也信 AI 判斷"] Anti --> A6["不記重測範圍、合了就忘"] style A1 fill:#ef4444,color:#fff style A2 fill:#ef4444,color:#fff style A3 fill:#ef4444,color:#fff style A4 fill:#ef4444,color:#fff style A5 fill:#ef4444,color:#fff style A6 fill:#ef4444,color:#fff

9. 給 QA 的 5 句

  1. QA review PR 看的是風險、不是語法
  2. AI 給 blast radius 地圖、你決定重測範圍
  3. 只讓 AI 報 high severity、nitpick 交給 linter
  4. AI 沒抓到不代表安全
  5. 業務邏輯與跨系統連動、永遠人工把關

10. 最後

PR review 是 QA 把關上線品質的最後一道閘。AI 讓你從「追 code 追到累」進化成「看風險地圖做決策」。把語法層交給 CodeRabbit、把 blast radius 丟給 Claude、自己專心在只有人能判斷的業務 regression — 這才是 QA 在 AI 時代該站的位置。

延伸:

ℹ️

一般聲明

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

意見反饋