「如果請 AI 幫我在 PurchaseRequest 加一個新的付款方式,AI 會不會像 Day 09 講的那樣,順便注意到旁邊還有沒測過的東西?」
不會,除非你要求它這麼做。這是今天要講清楚的第一件事——也是這個系列從 Day 01 開始就一直重複的主題句的延伸:AI 能幫你補程式碼,但補不出你自己都沒發現的測試缺口。
Day 09 提到,人類開發者會「順路補測試」,是因為打開一個檔案、看懂裡面既有的程式碼跟測試之後,自然會產生「欸這裡怎麼沒測」的直覺反應。這個直覺來自於開發者對這個檔案、這個專案的持續記憶跟責任感——他知道自己接下來還要維護這段程式碼,缺口留在那裡是自己以後的麻煩。
AI 沒有這種持續性的責任感。你請 AI 「幫我在 PurchaseRequest 加 BNPL 付款支援」,它會完成你要求的範圍——新增 getBNPLFields()、接進 getSendExtend()、可能還會很盡責地幫新功能寫測試。但它不會主動去檢查「同一個檔案裡,getATMFields() 有沒有對應的測試」,除非你明確要求,因為這件事不在你交代的任務範圍內,AI 沒有理由自己擴大範圍去做。
這裡要澄清一個常見的誤解:不是「AI 技術上做不到分析同一個檔案裡有哪些方法缺測試」——這其實是很直接的靜態分析工作,AI 完全有能力做。問題在於它不會主動去做,除非你把這件事放進它的任務範圍裡。
這跟人類新進團隊的工程師也會有一樣的狀況:如果沒人告訴他「順手看看旁邊有沒有缺測試的地方」是團隊的習慣,他大概率也只會完成被交代的那一部分。差別在於,人類工程師待得夠久,通常會自己養成這個習慣;AI 每一次對話都是全新的,沒有「待久了就會養成習慣」這回事,這個習慣必須每次都靠你重新交代。
❌ 誤解:以為 AI 會像資深工程師一樣自動注意周邊
Prompt: "幫我在 PurchaseRequest 加 BNPL 無卡分期的支援"
→ AI 完成 BNPL 功能跟對應測試,
但完全不會提到 ATM/彈性分期還缺測試這件事
✅ 正確理解:把「順便檢查」當成任務的一部分明確交代
Prompt: "幫我在 PurchaseRequest 加 BNPL 無卡分期的支援,
同時檢查同一個檔案裡其他 getXxxFields() 方法
是否已經有對應的測試覆蓋,沒有的話列出來讓我確認"
→ AI 會依照要求去比對程式碼跟測試檔案,
把缺口明確列出來,交由你判斷要不要一併補
正例的 prompt 具體長什麼樣子、怎麼下才會問到重點,是後天(Day 13)的主題,明天會先岔開一天講另一個更根本的問題。今天要先把心態校準好:這種「順路檢查」的行為,對 AI 來說不是預設值,是一個需要你明確請求的功能。
你曾經預期 AI 會「順便」幫你注意到某件事,結果它沒有做,事後才發現自己該講清楚?那次的落差,是你沒交代清楚,還是你原本就高估了 AI 會自動承接的範圍?
明天先岔開一天,討論一個更根本的問題:如果套件裡完全沒有覆蓋率門檻擋著,不管是人類還是 AI,測試缺口到底是靠什麼機制被補上的?