摘要
arXiv:2502.01619v1 宣告类型: cross
摘要: 单元测试(UT)在评估代码正确性以及向大型语言模型(LLM)提供反馈方面扮演着关键角色,尤其是在编写过程中逐步调试错误代码时,激发了自动测试生成的需求。然而,我们发现,在生成能够揭示错误的单元测试输入和准确预测单元测试输出(不访问正确解决方案的情况下)之间存在权衡。为了解决这一权衡,我们提出了UTGen,它教会LLM根据任务描述和候选代码生成能够揭示错误并附带正确预期输出的单元测试输入。我们将UTGen 集成到UTDebug中,这是一个强大的调试管道,使用生成的测试来帮助LLM有效调试。由于模型生成的测试可能会提供嘈杂的信号(例如,来自预测错误输出),UTDebug通过(i)通过测试时计算扩展UTGen来提高单元测试输出预测效果,以及(ii)基于多个生成的单元测试进行验证和回溯编辑以避免过拟合。我们的结果显示,基于衡量同时具有揭示错误的单元测试输入和正确单元测试输出的指标,UTGen比UT生成基线高出7.59%。当我们使用UTDebug时,我们发现来自UTGen单元测试的反馈可以提高Qwen-2.5 7B在HumanEvalFix上的pass@1准确率和我们在MBPP+上自己的更难的调试划分上的准确率,分别比其他基于LLM的单元测试生成基线高出3%和12.35%。