iT邦幫忙

2026 iThome 鐵人賽

0
AI Engineering

AI 寫的測試,誰來測?系列 第 32 篇

【Day30-上】四幕,四個結論,八十筆決定

  • 分享至 

  • xImage
  •  

TL;DR

  • 三十天分四幕:驗屍、規格、造尺、沒有答案的時候。每一幕收成一句
  • 八十筆決策紀錄,二十六筆不掛任何閘門,其中十二筆是量 AI 的人自己壞掉之後的更正
  • 這一套有適用範圍。四項特徵缺一項,砍掉一半工

https://ithelp.ithome.com.tw/upload/images/20261001/20103826n4sf8t5dSp.jpg


前言

系列從第九天起用五道閘門當骨架:規格層、設計層、門檻層、判讀層、終審層,每一道都是「AI 產出、人驗收」的一個交接點。

這篇不列清單。三十天的細節都在各天,這裡只收每一幕的結論,以及那八十筆決定加起來看到了什麼。


第一幕:驗屍(Day 1–7)

一支 AI 寫的退休試算上線一年,我檢查過,它「沒問題」。解剖出四個缺陷,其中一個(少算一個 (1+r))讓目標金額差了三百零六萬。

這一幕量到的不是 AI 寫錯了什麼,是驗證的成本沒有跟著產出的成本一起降。五百組差分測試全綠,卻給了完美的假象:因為影子模型逐行複製了受測物,兩邊一起錯。七天證明了它「現在就是這樣動」,沒有任何一刻證明它「動得對」。

先有行為快照,才有資格談對錯。


第二幕:規格(Day 8–14)

規格考古挖出十個現場——程式碼默默做了十個決定,沒有一個被寫下來。閘門一首度登場,四改六維持,其中一條在查證六個試算器之後改判。然後把規格餵給 AI:畫及格線、跑 RTM、刪一條規格看它會不會偷偷補回來、把邊界寫成關係式。

十三條測試全綠,殺得掉的只有「乘以 −1」。

規格不是給人讀的,是給測試對的。沒寫下來的規格,案例只能回程式碼——而程式碼正是要被驗的東西。


第三幕:造尺(Day 15–23)

424 條案例分級、斷言檢核器、變異 harness、十四個變異體、第一個變異分數 85.7%、補完之後 100%。然後把同一份規格給兩臺模型各跑五次:規格只給一句話時殺掉零個變異體;給十二條時三份存活集合完全相同。

每一把尺出廠當天都量到自己的盲區。綠燈的門檻是「不拋例外」;覆蓋率量的是執行過,不是檢驗過;變異分數的分母是人設計的目錄,換一份目錄分數就換一個。

尺是人造的,盲區也是。三個數字沒有一個在量「測得對不對」。


第四幕:沒有答案的時候(Day 24–29)

先量到 oracle problem 的實證版本:AI 寫測試時,那個期望值的唯一來源是它自己,人核不動。

換個問法——不問答案是多少,只問兩次執行之間該有什麼關係。四條手寫的關係裡,唯一抓到缺陷 A 的是最麻煩的那條。把同一份規格交給 AI 要它寫關係:十份沒有一份寫出那種對帳,十份全部寫了一條在受測實作上永遠不會紅的斷言。人漏掉的兩格,AI 補了一格,靠的是一條防呆測試。另一格活到最後,原因跟前一格一樣:沒有任何一組輸入讓那段邏輯產生過差別。

換成關係之後,人核不動的東西從「數字對不對」變成「這條關係在約束什麼」。結構交給工具,語意留給人。


八十筆決定

每一筆閘門決定當天進 decisions.md,一行一筆:日期、閘門、決定、理由。三十天累積八十筆。

閘門 筆數
1 規格層 17
2 設計層 7
3 門檻層 12
4 判讀層 14
5 終審層 4
不掛閘門 26

終審層只有四筆,因為修復還沒發生,下一篇補。

不掛閘門的二十六筆,十一筆是流程與基礎設施(tag 怎麼打、push 怎麼推、草稿留不留),三筆是觀察。剩下十二筆是同一種東西:工具壞掉、判斷滑掉、數字抄錯之後的更正。變異工具第一版在沒跑到任何測試的情況下回報「全部存活」;「殺 0 個」判成「廢話」,讀者指出後撤回,隔一天把正交性判成恆真命題,隔三天把「九份沒殺掉」寫成「毫無增益」;守衛設計錯誤,十個檔案全部「相等」一次都沒響。

這十二筆沒有一筆在講 AI。它們在講量 AI 的人。


什麼時候用這一套

不是所有 AI 產出都值得查到這個程度。三十天量出來,四項特徵讓一份產出變得危險:

特徵 為什麼危險
同一件事有兩條計算路徑 每段各自都對,沒有人要求它們對得起來
沒有現成的 oracle 有舊系統可對照就用差分,成本差一個數量級
規格有沒人做過決定的地方 AI 會靜靜地替你決定
上線之後沒有人在看 錯了不會爆炸,只會慢慢偏

缺一項就砍掉一半工。純介面、CRUD 流程沒有行為快照的價值;規格自己當天寫的不必考古;只有一條計算路徑,對帳無從寫起。


後記

整理決策紀錄的時候,那二十六筆不掛閘門的比什麼都刺眼。

原本以為做到最後會得到一份「AI 會犯哪些錯」的清單。實際得到的是一份「量 AI 的時候我自己壞在哪」的紀錄。


這些數字不能拿來做什麼

  • 四幕的結論是一個受測物、一個作者、三十天的產物。它們是紀錄,不是方法論
  • 四項適用特徵從一個案例加一個對照組歸納,說明相關,推不出因果
  • 「不掛閘門」的分類是事後標的,邊界有主觀成分
  • 終審層的四筆還不含修復,下一篇補上才算數

完整八十筆在 decisions.md,每筆附理由。


只帶走一件事
三十天問「AI 寫的測試誰來測」,記下來的八十筆決定裡,有十二筆是量的人自己壞掉之後的更正。


結論收完了。剩下的是回去修那支程式——以及看看那個從第二十天活到現在的變異體,會不會死。


今天的 repo:https://github.com/eyelash500/2026_ironman_test_ai/tree/day30


上一篇
【Day29】多生成五份,會得到五份一樣的盲區
下一篇
【Day30-下】修完了,然後回答第一天那個引號
系列文
AI 寫的測試,誰來測? 共 33 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言