AI News HubLIVE
站內改寫1 分鐘閱讀

Show HN: Crucible – 你的AI寫了測試,那麼誰來測試這些測試?

Crucible 是一個對抗性測試強化工具,利用變異測試發現AI編寫的測試遺漏的缺陷。它提供免費的命令來評估你的測試套件,然後通過一個對抗循環:測試者編寫測試,mutmut 發現存活的變異,批評者針對性地編寫測試。該工具生成機器可驗證的收據,並適用於Python/pytest項目。

來源Hacker News AI作者: jott2121

Crucible 是一個創新的開源工具,旨在解決AI生成代碼測試中的一個關鍵問題:誰來測試這些測試?隨着AI輔助編程的普及,開發者依賴AI編寫測試用例,但傳統的代碼覆蓋率指標並不能真實反映測試的有效性。Crucible 通過變異測試(mutation testing)來注入真實的缺陷,然後檢查測試套件能否識別它們。在示例中,一個具有97%行覆蓋率的模塊實際上遺漏了71個變異中的25個,而Crucible能夠消滅其中24個。

Crucible 的工作流程分為兩個階段。首先,crucible score 命令無需調用任何AI模型,直接對現有測試套件進行變異測試,輸出真實的缺陷捕獲率。這個命令完全免費,甚至可以在不配置API密鑰的情況下運行。其次,crucible harden 命令啓動一個對抗循環:Tester 代理編寫測試,mutmut 變異測試工具找出倖存者,Critic 代理針對倖存者編寫精準的測試。所有結果都是機械性的——pytest 直接判斷變異是否被殺滅,沒有任何模型參與評分。

Crucible 強調透明度和可驗證性。每次運行都會生成詳細的收據目錄,包括元數據、逐行日誌和結果摘要。工具還提供了“精益模式”,大幅減少令牌消耗。實驗結果表明,對抗循環在殺死變異方面顯著優於一次性生成(McNemar檢驗 p = 4.9×10⁻³²)。

儘管功能強大,Crucible 也有誠實的侷限性:目前僅支持 Python + pytest 項目,並且依賴特定版本的 mutmut。開發者承認,某些結果可能因模型非確定性而波動,但收據記錄了所有運行情況,不會只展示有利結果。Crucible 本身也使用了自身進行測試,體現了“吃自己的狗糧”的理念。

總之,Crucible 為AI生成代碼的測試質量提供了一層保障,通過變異測試和對抗性強化,幫助開發者發現真正的漏洞,而不僅僅是追求覆蓋率數字。