wen aidev
Published on

什麼是驗證矩陣 (Verification Matrix)?讓 AI 從需求端守護品質

🧭 系列文章導讀

在見識過 Agentic Testing 自動點擊畫面的威力後,我們將鏡頭拉回軟體開發的最源頭:「需求定義(Inception)」。本篇探討在 AI-Driven Life Cycle (AIDLC) 中,如何確保寫出來的程式碼不會是一場「需求理解錯誤的災難」,並介紹核心法寶: 驗證矩陣 (Verification Matrix)

當「測試左移」撞上「AI 寫 Code」

前面我們提過「測試左移(Shift-Left)」:越早發現 Bug,修復成本越低。但在 AI 時代,AI 寫 Code 的速度實在太快了。

如果你給 AI Agent 一行模糊的需求:「幫我寫一個登入功能」。它可能在幾秒鐘內就拋出了一個包含驗證碼、OAuth、忘記密碼的巨型 PR 給你。結果?你發現它完全漏了「如果帳號被停權該怎麼辦」的邏輯。

這就是為什麼在 AWS Labs 提出的 AIDLC(AI-Driven Development Life Cycle) 中,特別強調了 Inception Phase(規劃與設計階段)。在開發者與 Agent 開始瘋狂產出程式碼前,我們必須先釐清「要蓋什麼,怎麼驗收」。

AIDLC Planning and Design Phase Workflow Diagram

圖說:在 AIDLC 框架中,需求描述輸入後,AI Agent 必須先生成「驗收準則」與「驗證矩陣」,經過人為閘門審核後,才放行至下一步的架構設計與實作。

仔細看上面的流程圖,這不是單純請 AI 寫 User Stories 就結束了,在它的輸出中,最引人注目的就是 建議驗證矩陣 (Propose Verification Matrix)

什麼是驗證矩陣 (Verification Matrix)?

簡單來說:它是一個二維的檢查表,用來確保「所有功能點」在「所有測試維度」下都被妥善考慮。

傳統上,PM 或 SA 寫出來的 Acceptance Criteria (驗收準則) 通常是一條條的清單:

  • "密碼必須大於 8 碼"
  • "輸入成功後導向首頁"

這種條列式的寫法非常容易出現人類思維盲區:我們往往只記得寫正常情境 (Happy Path),卻忘記邊界值或異常情境 (Negative Path)。

驗證矩陣將思維立體化了。它的行(Row)是你的「功能點 / 業務規則」,列(Column)是「測試維度(如: 正常、異常、邊界、效能、資安)」。

功能點 / 業務規則正常情境 (Happy)異常情境 (Negative)邊界值 (Boundary)資安考量 (Sec)
使用者登入正確帳密可登入錯誤密碼拒絕連續錯 5 次鎖定帳號預防 SQL Injection
密碼長度驗證10 碼正常通過缺少特殊符號阻擋剛好 8 碼 (過) / 7 碼 (擋)拒絕極長密碼 (DOS攻擊)

當我們要求 AI 在寫 Code 前,先為這個功能畫出這張表格,意義非凡:

  1. 強迫全面性思考:格子空在那裡,就代表某個維度的測試沒被考慮到。
  2. 防呆與抓漏:PO (Product Owner) 或開發者在「人為閘門」審核時,看著矩陣一眼就能發現:「咦?我們根本沒定義帳號被鎖定後怎麼解鎖啊?」

如何用 AI Agent 產出驗證矩陣?

在實戰中,你可以將這段 Prompt 加入到你團隊的架構設計指南 (如 .cursorrulesinstructions.md) 中,在專案啟動時呼叫:

你是一個資深的 QA 架構師與系統分析師。
請閱讀我剛剛給你的功能需求草案(或 User Story)。

在我們開始撰寫任何程式碼之前,請為這個功能產出一個「驗證矩陣 (Verification Matrix)」。
請以 Markdown 表格呈現,必須包含以下欄位:

1. 功能點 / 動作 (Feature / Action)
2. 正常路徑 (Happy Path)
3. 負面測試 (Negative Cases / Errors)
4. 邊界測試 (Boundary Values)
5. 狀態轉換與相依性 (State Transitions / Dependencies)

如果需求描述中有模糊地帶,或者有任何格子你認為缺乏定義,請在表格下方以粗體字向我(PO)提出反問,直到我們釐清所有邏輯為止。

透過這個簡單的 Prompt,AI 從一個「盲目聽從指令的代碼產生器」,進化成了一個「能幫你盤點漏洞的 QA 專家」。

矩陣的後續:從需求直達自動化測試

一旦這個驗證矩陣被 PO 審核通過(通過 Human Gate),它就成為了團隊無可爭議的 Single Source of Truth(唯一事實來源)

接下來:

  • 工程師:照著矩陣上的每一格實作邏輯。
  • Agent Test 自動化:直接把矩陣丟給 AI,命令它:「為矩陣上的每一格,用 Playwright 寫出對應的 E2E 測試」或者是「用 Jest 寫出單元測試」。

這就是真正意義上的測試左移:我們把原本要到系統上線前才由 QA 拉 Excel 表格做的全方位驗證,拉到了在 IDE 剛打開、一行程式碼都還沒寫的需求規劃會議上。

當我們將「測試」從事後補救變成了事前規劃的基石,再搭配強大的 AI Coding Tools,我們就能夠打造出不僅開發神速,且堅不可摧的軟體系統。

支持作者 ☕

如果你覺得這篇文章有幫助,可以請我喝杯咖啡,支持我繼續創作!

留言討論