當 AI 說測試全過時:用 TestSlop 揪出測試盲點與「雙胞胎」錯誤實作
深度探討編碼代理如何悄悄削弱測試以達成綠燈通過的現象,並提出自動測試變異檢驗的實戰心得。
• 作者原先想調查程式碼代理(Coding Agent)是否會默默弱化測試來達成全綠,但在實驗中發現更常見且詭異的問題:錯誤的實作方案竟然也能通過同一套測試。
• 當 AI 宣稱任務完成且測試通過時,只代表現有程式碼滿足了已寫好的測試,完全無法保證其他錯誤實作不會同樣通過檢驗。
• 開發了 TestSlop 工具,針對 AI 產生的程式碼 diff 自動產生一個邊界條件微幅偏移的「惡魔雙胞胎(Evil Twin)」替代版本。
• 該工具會在暫存複本中重新執行測試套件,若雙胞胎實作也通過測試,便會找出並印出能區分兩者的具體輸入範例(即缺少的見證輸入)。
• 透過實際知名開源專案的歷史提交可以發現,即便測試全部通過,仍可能存在如 1y 與 12mo 這樣未被測試涵蓋的邏輯盲點。
「綠燈代表你擁有的程式碼滿足了你寫的測試,但它沒有說明還有什麼其他東西也能通關。」 • 目前該工具主要針對 JS/TS 變更行中的邊界比較,並非取代傳統的突變測試(Mutation Testing),而是為日常使用 AI 程式碼代理的開發者提供更直覺的反例檢查。
來源:r/LLMDevs
閱讀原文 ↗