新聞

微軟.NET團隊開源一套跨語言單元測試代理,可先了解專案使用的程式語言、測試工具及既有測試方式,再自動產生並檢查單元測試。微軟內部以152項任務測試,該代理完成140項,完成率92.1%,高於使用相同AI模型與提示內容的原生GitHub Copilot,其完成率為78.9%。

單元測試主要用來檢查個別程式功能是否按照預期運作。代理收到測試要求後,會先檢視程式碼儲存庫,找出需要測試的程式、專案使用的測試工具,以及既有測試的存放位置與執行方式,再據此產生測試程式。完成後,系統還會確認新增測試是否已納入專案原有的自動化測試流程,避免測試只能單獨執行,卻沒有真正成為專案檢查的一部分。

代理產生測試後,還會檢查指定情境的涵蓋情形、測試判定條件的有效性,以及完整專案的建置與測試結果。系統也會模擬小幅修改待測程式,確認測試能在程式行為改變時找出問題,減少測試雖然通過,實際上卻沒有發揮檢查作用的情況。

微軟公布的結果顯示,專用代理的差距主要出現在指示不夠明確的任務。89項較模糊的要求中,專用代理完成79項,完成率88.8%,原生Copilot完成59項,為66.3%,但在63項指示詳細的任務中,雙方都完成61項。另有15項要求針對特定程式碼修改補上測試的任務,專用代理全數完成,原生Copilot則沒有完成任何一項。

該代理支援.NET、Python、TypeScript、JavaScript、Java、Go、Ruby、Rust、Swift、Kotlin、PowerShell及C++等語言,會依各專案既有做法產生測試。不過微軟的結果並非所有語言都有改善,例如10項PowerShell任務中,專用代理完成7項,原生Copilot完成8項。微軟也提醒部分語言的測試樣本不大,其提供的測試資料無法直接代表所有專案的實際表現。

目前這套代理可透過GitHub Copilot命令列工具使用,也能在VS Code與VS Code Insiders透過仍在預覽階段的外掛功能使用,微軟也正在準備Visual Studio支援。