ReCatcher: Towards LLMs Regression Testing for Code Generation
作者: Altaf Allah Abbassi, Leuson Da Silva, Amin Nikanjam, Foutse Khomh
分类: cs.SE, cs.AI
发布日期: 2025-07-25
备注: 24 pages, 3 Figures, 2 Tables
💡 一句话要点
ReCatcher:面向代码生成大语言模型的回归测试框架
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 大语言模型 代码生成 回归测试 软件质量 性能评估
📋 核心要点
- 代码生成LLM的快速发展可能引入回归问题,影响代码的正确性、质量和性能,缺乏系统性的评估方法。
- ReCatcher框架通过比较新旧模型在逻辑正确性、代码质量和性能三个维度上的差异,实现回归测试。
- 实验表明,微调、模型合并和新模型发布都可能导致显著的回归,ReCatcher能有效检测这些问题。
📝 摘要(中文)
针对代码生成大语言模型(LLMs)在微调、合并或新模型发布过程中可能引入的回归问题,包括正确性、代码质量和性能等方面,本文提出了ReCatcher,一个用于Python代码生成的回归测试框架。ReCatcher系统地比较两个LLM(通常是当前模型和候选更新模型),从逻辑正确性、静态代码质量和执行性能三个维度进行评估。通过在CodeLlama、DeepSeek-Coder和GPT-4o等模型上进行微调、合并和模型发布三种更新场景的评估,结果表明,使用跨语言数据集进行微调会增加高达12%的语法错误;与Llama2等通用模型合并会导致高达18%的正确性回归;GPT-4o在处理缺失导入方面比GPT-3.5-turbo引入高达50%的回归,而GPT-4o-mini的执行时间比GPT-4o降低高达80%。总体而言,逻辑正确性、性能和错误处理(例如,语法错误和缺失导入)是最容易出现回归的领域。与基线解决方案相比,ReCatcher在逻辑和性能方面表现出更好且一致的准确性。ReCatcher强调了在采用新模型之前进行系统回归评估的重要性,同时帮助研究人员和从业人员做出更明智的更新决策。
🔬 方法详解
问题定义:论文旨在解决代码生成大语言模型在更新迭代过程中引入的回归问题。现有方法缺乏系统性的回归测试框架,无法有效评估新模型在逻辑正确性、代码质量和执行性能等方面是否优于旧模型,从而导致盲目更新可能带来的负面影响。
核心思路:论文的核心思路是构建一个自动化回归测试框架,通过预定义的测试用例和评估指标,系统地比较新旧模型在代码生成任务上的表现。通过多维度评估,全面衡量模型更新带来的影响,从而辅助决策者做出更明智的选择。
技术框架:ReCatcher框架包含以下主要模块:1) 测试用例生成模块:根据Python代码生成任务的特点,自动生成或收集测试用例。2) 模型执行模块:分别使用新旧模型执行测试用例,生成代码。3) 评估模块:从逻辑正确性(例如,单元测试通过率)、静态代码质量(例如,代码风格、复杂度)和执行性能(例如,执行时间、内存占用)三个维度评估生成的代码。4) 报告生成模块:生成详细的回归测试报告,突出显示新旧模型之间的差异。
关键创新:ReCatcher的关键创新在于其系统性和多维度的回归测试方法。它不仅关注代码的逻辑正确性,还考虑了代码质量和执行性能,从而更全面地评估模型更新的影响。此外,ReCatcher的自动化测试流程可以显著提高回归测试的效率。
关键设计:ReCatcher的关键设计包括:1) 逻辑正确性评估:使用单元测试框架(例如,pytest)自动执行生成的代码,并计算测试通过率。2) 静态代码质量评估:使用静态代码分析工具(例如,pylint、flake8)检查生成的代码,并计算代码质量指标。3) 执行性能评估:测量生成的代码在特定输入下的执行时间和内存占用。4) 差异分析:使用统计方法分析新旧模型在各个评估指标上的差异,并判断是否存在显著的回归。
🖼️ 关键图片
📊 实验亮点
实验结果表明,ReCatcher能够有效检测代码生成LLM更新过程中引入的回归问题。例如,使用跨语言数据集进行微调会导致高达12%的语法错误增加;与Llama2等通用模型合并会导致高达18%的正确性回归;GPT-4o在处理缺失导入方面比GPT-3.5-turbo引入高达50%的回归;GPT-4o-mini的执行时间比GPT-4o降低高达80%。ReCatcher在逻辑和性能方面表现出比基线方法更好且更一致的准确性。
🎯 应用场景
ReCatcher可应用于代码生成大语言模型的持续集成和持续部署(CI/CD)流程中,帮助开发者在模型更新前进行充分的回归测试,避免引入潜在的性能下降或错误。此外,该框架也可用于评估不同模型的优劣,为模型选型提供依据。未来,ReCatcher可以扩展到支持更多编程语言和代码生成任务。
📄 摘要(原文)
Large Language Models (LLMs) for code generation evolve rapidly through fine-tuning, merging, or new model releases. However, such updates can introduce regressions, not only in correctness but also in code quality and performance. To address this, we present ReCatcher, a regression testing framework for Python code generation. ReCatcher systematically compares two LLMs, typically a current model and a candidate update, across three dimensions: logical correctness, static code quality, and execution performance. We apply ReCatcher to assess regressions across three update scenarios, fine-tuning, merging, and model release, using CodeLlama, DeepSeek-Coder, and GPT-4o. Our evaluation shows that fine-tuning with cross-language datasets increases syntax errors by up to 12%. Merging with general-purpose models like Llama2 leads to regressions in correctness by up to 18%. GPT-4o introduces regressions of up to 50% in handling missing imports compared to GPT-3.5-turbo, while GPT-4o-mini suffers up to 80% performance degradation in execution time versus GPT-4o. Overall, logical correctness, performance, and error handling (e.g., syntax errors and missing imports) are the most regression-prone areas. Comparing ReCatcher with baseline solutions, it presents better and consistent accuracy across logical and performance aspects. ReCatcher highlights the importance of systematic regression evaluation before adopting new models, while assisting researchers and practitioners in making more informed update decisions.