核心概念
現有的代碼生成模型可以幫助改善許多常見的軟件任務,從代碼完成到缺陷預測。然而,現有的基準測試主要集中在代碼創作或代碼完成,而很少關注軟件測試,儘管良好的測試軟件與有效的錯誤檢測之間存在強烈的相關性。為了填補這一空白,我們創建並發布了TESTGENEVAL,這是一個大規模的基準測試,用於測量測試生成性能。TESTGENEVAL包含來自11個維護良好的Python存儲庫的1,210個代碼和測試文件對,涵蓋了初始測試編寫、測試套件完成和代碼覆蓋率提高。我們評估了幾種流行的模型,參數大小從7B到405B不等。我們的詳細分析突出了TESTGENEVAL對全面評估測試生成性能的貢獻。特別是,模型難以生成高覆蓋率的測試套件,最佳模型GPT-4o只達到35.2%的平均覆蓋率。這主要是由於模型難以推理執行,以及在處理複雜代碼路徑時經常出現斷言錯誤。
摘要
TESTGENEVAL是一個大規模的基準測試,用於測量軟件測試生成和測試完成的性能。它包含來自11個大型、維護良好的Python存儲庫的1,210個代碼和測試文件對。
TESTGENEVAL包含兩個任務:
- 全文件單元測試生成:目標是生成整個測試套件,給定要測試的類。我們使用覆蓋率和突變得分來評估生成的測試套件的價值。
- 測試完成:目標是生成現有測試套件中的下一個測試,給定現有測試套件和要測試的文件。我們測量通過率和覆蓋率改善。
我們評估了從7B到405B參數不等的各種流行模型。結果顯示,模型難以生成高覆蓋率和高突變得分的測試套件。最佳模型GPT-4o只達到35.2%的平均覆蓋率和18.8%的突變得分。模型在推理代碼執行和生成正確的斷言方面存在困難。
相比之下,測試完成任務相對更容易,最佳模型在最後一個測試完成設置中達到74.3%的通過率。但是,模型難以為現有的完整測試套件增加覆蓋率,通常只能測試已經被覆蓋的計算路徑。
我們還進行了廣泛的定量和定性分析,包括與其他基準的相關性、設置和模型之間的相關性、常見的模型錯誤以及樣本和上下文窗口大小的影響。我們還比較了Codestral、GPT-4o和Llama 405B在區分問題方面的表現。
統計資料
以下是一些重要的數據指標:
最佳模型GPT-4o的平均覆蓋率為35.2%
最佳模型GPT-4o的突變得分為18.8%
最佳模型Codestral 22B在最後一個測試完成設置中達到74.3%的通過率