AI 程式驗收教學:人工審查、測試與逐步上線,各自能抓到哪些錯誤

AI 程式驗收不能只看測試全綠。用表單案例學會需求對照、程式審查、自動測試、手機操作與儲存讀回,並理解 GitHub 分支保護、逐步上線及回復條件。

Share
GitHub 官方 Pull requests 文件封面,審查是合併流程中的一道檢查
GitHub 官方 Pull requests 文件封面,審查是合併流程中的一道檢查。 圖片來源:GitHub Docs。

AI 程式驗收的難點,是你可能已經看到能運作的畫面,卻還不知道它是否符合原本需求,或會不會改壞其他功能。

X 上關於人工審查與測試的討論,常把問題推向二選一。實際工作裡,它們處理的資訊不同,也需要彼此補足。

人能讀需求、理解情境與判斷範圍,測試能反覆檢查已定義的行為。兩者都有看不到的地方。

如果只問測試是否全綠,就容易忽略測試本身寫錯。若只靠人看程式,也可能漏掉只有特定輸入才會發生的問題。

我建議把驗收分成需求、差異、測試與使用者操作四段,再依改動影響決定上線方式。這樣每一段都有可以檢查的結果。

先把表單修改寫成幾個可觀察的行為,後面的審查與測試才有共同標準。

AI 程式驗收,先把需求轉成可觀察行為

第一步是寫出具體觸發條件與預期結果。以表單為例,「日期空白時顯示提示,其他欄位保留,合法日期能提交」就能直接操作確認。

「修好表單」很難驗收,因為它沒有說哪個情境出錯。代理可能重做整個介面,人也可能因為外觀變漂亮就認為問題解決。

除了正常輸入,至少列一個缺漏與一個邊界情境。邊界是規則剛好改變的地方,例如日期等於截止日,或字數剛好到上限。

若規則還不清楚,先找出會改變結果的決定。截止日當天能否提交,會影響實作,不能讓代理自己猜成既定規則。

低風險的版面細節可以由工具合理處理,再由你檢視。不需要所有小決定都中斷工作,但會影響資料與權限的選擇應寫明。

把這些條件列成驗收表,後面的程式審查與測試才有共同方向。否則每個人都可能用自己的理解判斷「正常」。

GitHub 官方 Pull requests 文件封面,審查是合併流程中的一道檢查
GitHub 官方 Pull requests 文件封面,審查是合併流程中的一道檢查。 圖片來源:GitHub Docs。

人工審查先看範圍,再看程式理由

人工審查的第一個問題,是改動是否解決使用者要求的問題,並維持在同意的範圍內。先看哪些檔案被修改,再讀代理提供的原因。

如果只處理日期提示,卻改了登入、付款或資料庫結構,就要確認這些改動是否必要。範圍增加會讓驗收成本與影響範圍一起增加。

接著看資料如何流動。原始輸入在哪裡進入、哪裡被轉換、最後存到哪裡,可以幫你找出資料被默默修正或遺失的地方。

第三個問題是錯誤處理。當資料缺少或服務無法回應時,使用者看到的是清楚提示,還是沒有反應的按鈕?

這些判斷不一定需要逐行閱讀全部程式。可以要求代理指出關鍵位置,讓人沿著具體問題檢查,而不是只讀一份漂亮摘要。

但摘要不能代替實際差異。若說明表示只改兩個檔案,實際卻改了十個,應先釐清不一致,再決定是否接受。

測試能反覆確認,但要先看它測了什麼

測試是一組可重複執行的檢查。它把預期結果寫成規則,讓程式變化之後仍能快速比較。

例如空日期應顯示錯誤,合法日期應保留輸入。這些規則寫對時,測試能幫你發現某次修改把既有行為改壞。

測試全綠表示目前執行的檢查通過,並不代表所有可能情境都正確。沒有被寫進測試的需求,仍可能出問題。

AI 也可能同時寫錯實作與預期答案。此時程式符合錯誤測試,畫面卻不符合業務規則,看起來成功仍需要被人指出。

因此先讀兩三個最關鍵測試的輸入與答案,確認它們來自需求,而不是代理臨時選的行為。

如果測試只檢查函式存在,卻不檢查結果,就很難證明問題已修好。讓測試對應一個具體失敗案例,才有實際價值。

最小必要測試怎麼選?

從這次修改影響的功能開始。日期提示至少檢查空白、合法值與截止邊界,再加上原本需要保留的其他欄位。

若改動跨到資料儲存或登入,才擴大檢查相關流程。測試範圍應跟著實際影響變化,不必為小文字修改重跑整個產品。

已有測試就優先使用,也要確認它確實覆蓋問題。沒有合適測試時,再新增一個能重現問題的檢查,避免大量建立只反映程式結構的測試。

使用者操作,檢查程式之外的交付結果

使用者操作可以發現輸入、畫面與儲存之間的落差。它特別適合表單、媒體、檔案下載與後臺內容修改。

表單案例中,先在與真實使用相近的環境開啟頁面。輸入空日期,確認提示文字、焦點與其他欄位是否保留。

再輸入合法日期完成提交,重新進入資料檢視儲存結果。按鈕顯示成功,不等於後端真的保留了正確資料。

若產品有手機使用者,也要在窄螢幕檢視。功能邏輯正確,提示仍可能被裁切,或按鈕位於看不到的位置。

這一步的證據可以是操作步驟、結果紀錄與必要畫面。證據應清楚對應被驗收的版本,避免把舊截圖當成新版本的結果。

若測試環境使用的是模擬資料,回報也應說明範圍。模擬測試通過可以支援下一步,但不能自動變成正式資料已經安全的結論。

GitHub 審查與分支保護,怎麼放進流程?

GitHub 官方審查文件 說明了留言、核准與要求修改的方式,讓合併前的意見有明確狀態。

Pull request 是把一組改動提出來,讓團隊討論與合併的入口。審查意見與檢查結果可以一起保留,方便之後追查。

分支保護則能要求合併前完成指定檢查或審查。它把團隊規則放進系統,減少單靠記憶操作的遺漏。

官方分支保護文件 也說明例外與管理權限。設定規則時,應確認誰能繞過,以及是否套用到管理者。

如果制度允許某些人直接略過檢查,就要清楚瞭解這個例外。畫面上有保護規則,不等於每條合併路徑都受相同限制。

第一次可以只要求一項最相關檢查與一位合適審查者。先讓規則真的能執行,再依團隊規模與風險調整。

不同檢查抓不同錯誤,交付前一起看

下面的表格可以用來安排驗收。它說明各方法的主要用途,也提醒你保留其他方法補足缺口。

方法 主要確認 常見缺口
需求對照 行為是否符合目的 規則本身可能不完整
程式審查 改動範圍、資料流與理由 人可能漏看特殊輸入
自動測試 已定義的行為能否重複成立 未涵蓋情境與錯誤預期
使用者操作 畫面、流程與儲存結果 難以逐次覆蓋所有變化
上線觀察 實際環境中的結果與異常 問題可能已影響部分使用者

不要因為某一列通過,就省略另一列。是否需要每種方法,應由改動影響決定,而不是用「AI 寫的」一概加重所有流程。

小範圍可逆修改可以採簡短檢查,大範圍資料或權限變化則需要更完整證據。控制範圍,本身就能降低驗收難度。

逐步上線,先定義停止與回復條件

逐步上線是先讓一部分使用情境採用新版本,再觀察是否擴大。它能限制某些問題的影響,仍不能代替上線前檢查。

開始前寫清楚要看什麼。表單案例可以觀察提交成功率、日期錯誤與客服反映,避免只有「看起來還好」的印象。

再定義何時停止。例如出現已確認的資料遺失,就先暫停擴大範圍。不要等到所有指標都惡化才處理。

回復也要有可用版本與操作方式。若改動涉及資料結構,單純換回程式可能不夠,應在上線前確認資料相容性。

負責觀察的人與負責回復的人應明確。若出現異常時沒有人知道下一步,逐步上線的保護效果就會降低。

對於一次性本機工具,可能不需要複雜上線系統。保留原檔案副本與可恢復版本,就能建立合適的完成邊界。

範例:日期修正的驗收證據怎麼留?

先記錄修改前,空日期會直接提交的問題。這份紀錄應包含重現步驟與輸入,讓其他人確認同樣問題。

修改後對照三個結果:空白顯示提示、合法值可提交、其他欄位保持。每個結果都應有對應操作與版本。

再讀回儲存資料,確認沒有自動插入今天日期。這個檢查能抓到畫面看似正常、後端卻默默補值的問題。

如果只在測試環境確認,就將結果標為測試環境通過。正式上線與真實資料檢查應另外記錄,避免報告混淆不同完成點。

最後儲存改動差異與剩餘限制。例如尚未處理跨時區日期,就寫清楚範圍,讓下一項任務能從這裡接續。

這份紀錄不必很長,但應讓另一個人能重現。可重現的證據,比「代理已反覆檢查」更容易支援交付決定。

新增測試之前,先確認舊錯誤真的能被抓到

假設修正前輸入空日期仍能提交,測試卻一直通過。先讓測試針對這個行為失敗,才能確認它真的覆蓋原問題。

如果修改前後都通過,就檢查測試是否呼叫了正確路徑。它可能只測了一個未被實際頁面使用的函式,或用到不相關的模擬資料。

再檢查預期結果是不是來自需求。若測試寫成「空日期自動補今天」,它可能驗證了未經授權的行為,需要先修正規則。

當測試能在舊版發現問題、在新版確認修正,就有更明確的證據。仍要補使用者操作,檢查畫面與儲存結果是否接上同一條路徑。

這類測試不需要很多,重要的是能抓到具體失誤。把輸入、預期與失敗原因寫清楚,之後才容易維護。

若程式碼無法直接重現舊版,也應說明驗證限制。不要為了報告漂亮,把沒有檢查的步驟寫成已經通過。

交付報告如何避免讀者誤解?

先寫實際完成的結果,再寫檢查範圍。例如「日期提示已修正,測試環境三項操作通過,尚未執行正式釋出」。

如果只做程式碼審查,就寫審查結果與發現,不把它擴大為真實使用者已經使用成功。不同證據支援的結論範圍應保持一致。

剩餘問題也寫成具體情境。比如「未驗證跨時區日期」,比「可能有風險」更容易讓下一位決定是否需要擴大檢查。

最後提供可回看的版本與結果位置。報告不需要包含全部終端機輸出,但應讓接手者找到關鍵證據並復現檢查。

AI 程式驗收常見問題

非工程師能參與驗收嗎?

可以從需求、操作與儲存結果開始。程式細節可請工程師協助,但你仍能確認業務規則、畫面與實際資料是否符合目的。

測試全綠,為什麼還不能說完全安全?

測試只覆蓋已定義與已執行的條件。遺漏情境、錯誤預期與環境差異仍可能存在,因此結論應說明實際檢查的範圍。

人工審查一定比 AI 審查可靠嗎?

不能只由身分決定可靠程度。重點是能否指出具體問題與證據,AI 可以幫助找線索,人則負責判斷需求與交付範圍。

讓驗收結果對應實際交付

AI 程式驗收的價值,是把漂亮成品與可接受的行為連結起來。每次檢查都應能說明看了哪一版、哪個情境,以及看見什麼結果。

先挑目前一項修改,把需求、差異、測試與操作各留一份最小證據。確認儲存結果後,再依實際影響決定是否上線與擴大觀察。

延伸閱讀:GitHub ReviewBench 發布:AI 程式審查怎麼比,才能找到問題又不淹沒工程師?

延伸閱讀:Bun 1.4.3 加入 bun check:AI 寫完程式,先檢查型別再執行

資料來源

產品資訊依 第一手來源 與 官方補充文件 整理,功能與條款查核日期為 2026 年 10 月 12 日。

討論線索來自 X 原始貼文。本文操作案例是供讀者採用的練習流程,未宣稱已替讀者完成產品實測。