Loop Engineering - 讓 AI 先幫你分類錯誤

分享
Loop Engineering - 讓 AI 先幫你分類錯誤
Photo by Sandisk / Unsplash

每天早上八點,打開 Jenkins:發現昨晚的 regression 跑完了,14 個 test suite,6 個紅的。Standup 十點開始,你有不到一小時要搞清楚——哪些是腳本壞了、哪些是環境炸了、哪些要找誰處理。

於是你開始做每天都在做的事:點開 test result、下載 log、一支一支看。這些錯誤有可能是測試腳本的失誤、測試框架的錯誤,甚至是測試環境的問題。分類完之後,還要找到每個 Test Suite 的 owner,告訴他測試失敗了、是什麼樣的錯誤。手動做一輪,快則半小時,慢則整個早上。

這樣的動作其實很適合寫成一個 Skill,讓 AI 先幫你把這些失敗的測試分類好。

什麼是 Loop Engineering?

這個系列想做的事情很簡單:把「維護自動化測試」這個每天重複的迴圈,交給 AI 來跑。整個 Loop 分成五個階段:

Discover → Plan → Execute → Verify → Iterate

  • Discover:發現並分類失敗
  • Plan:決定要修什麼、怎麼修
  • Execute:自動修復、重跑測試
  • Verify:確認修復真的有效
  • Iterate:把結果回饋到下一輪

這篇是系列的第一步:Discover。我們要建立的第一支 Skill 叫做 jenkins-failure-triage,它會定期確認 CI 上的狀態,並且幫你把這些錯誤分類。

沒有 Skill 之前:實際手動流程

如果沒有這支 Skill,我通常都是打開 test result,然後針對每個 test suite 去看每一支測試為什麼 fail。如果需要的話,我也會下載錯誤的 log,細看測試執行的部分,最後歸納出這次是測試腳本的錯誤,還是環境造成的錯誤。

而且這件事每天都要做。如果一天跑了多次 CI 測試,你就要做多次的分類與分析。分類完之後,還要分別去找每個 Test Suite 的 owner 通知。這是一件非常耗時的事情。

有了 Skill 之後:一行指令

當你寫完這個 Skill 之後,你可以直接用一行指令這樣做:

/triage-pipeline <jenkins_url>

它會去解析 Jenkins 跑完的測試報告(Report),依 test suite 分組找出失敗的測試腳本,然後對每一支腳本進行分類,列出:

  • 每個測試的 owner 是誰
  • 錯誤的 script 是什麼
  • 錯誤的分類是什麼(腳本問題/框架問題/環境問題)
  • 可能的關鍵錯誤位置

實際輸出長什麼樣子

跑完之後,它會產出一份結構化的 failures.json,以及一份可以直接拿去通知 owner 的摘要報表,大概長這樣:

Triage Summary — nightly regression #1842

14 suites / 6 failed

Test SuiteOwner分類關鍵錯誤
forensics_e2eAlice環境問題檔案伺服器連線 timeout
proxy_auth_smokeBob腳本問題selector 已變更(#login-btn)
tls_inspectionCarol框架問題fixture teardown race condition
............

(以上為去識別化後的範例)拿到這份報表,你只要照著 Owner 欄位一一通知,Discover 階段就結束了。

結論

這支 Skill 解決了每天重複查看測試失敗原因、並通知各個 Squad Owner 的痛點。手動做一輪要 30 到 60 分鐘;有了它,5 到 10 分鐘之內就可以產生出一份報表,讓你透過這份報表去通知各個 Squad Owner。

這正是最近討論度很高的 Agentic Engineering(讓 AI Agent 自主執行工程任務)在 Discover 階段做的事。

接下來我們會慢慢把整個 Loop 的 Skill 補齊,讓 AI 用迭代的方式不斷循環,例如:

  • 自動修復測試(Execute)
  • 重複執行測試、確認修復有效(Verify)
  • 自動建立 PR

最後只要由負責進行 Review,就可以大大減少維護測試案例所需的時間與 Effort。