利用生成式人工智能进行单元测试生成: 自动化生成工具性能比较分析
TestPilot 是一个利用大语言模型的适应性测试生成技术,可以自动为给定的程序生成单元测试,以帮助确保软件的正确性。用户只需提供函数的特征和实现方法,再提取阅读文档,如果测试失败,则TestPilot的自适应组件尝试生成新的测试。在25个npm软件包上的实验表明,TestPilot生成的测试达到了93.1%的语句覆盖率,平均58.5%的测试包含了来自被测试包的至少一个功能性断言。
Feb, 2023
该研究探讨了三种代码生成模型(CodeGen、Codex和GPT-3.5)在单元测试生成中的效果,发现Codex模型在HumanEval数据集中可以达到80%以上的覆盖率,但在EvoSuite SF110基准测试中,没有模型的覆盖率超过2%且生成的测试代码存在多种测试异味问题。
Apr, 2023
CAT-LM是一个使用27亿参数在Python和Java项目语料库上进行训练的新颖的预训练信号,通过考虑代码和测试文件之间的映射来生成与开发人员相似的测试代码,并且在生成测试完成时比更大的语言模型和最近的测试特定模型表现更好。
Oct, 2023
ChatGPT是一种显著的大型语言模型,通过与人类程序员进行比较,本文提出了对其代码生成能力的综合评估。通过构建一个包含5个类别的新颖数据集,共计131个代码生成提示,ChatGPT和人类程序员生成了262个代码样例。使用14个已建立的代码质量度量方法进行详细的手动评估,重点评估了正确性、可理解性和安全性。关键发现揭示了ChatGPT在制作简洁高效、具有高级结构的代码方面的优势,并展示了在数据分析任务(93.1%准确度)中的强项,但在视觉图形方面存在局限性。与人类代码的比较分析凸显了ChatGPT对模块化设计和优秀的错误处理的倾向。此外,机器学习模型可以有效地区分ChatGPT和人类代码,准确率高达88%,表明可以检测到的编码风格差异。通过量化指标和定性分析深入探讨了ChatGPT的代码生成能力和局限性,为推进基于人工智能的编程助手提供了宝贵的见解。精心策划的数据集和方法为这个新兴领域的未来研究提供了坚实的基础。所有数据和代码都可在此https URL上找到。
Nov, 2023
利用大型语言模型(LLMs)生成高质量代码的能力引起了软件测试界的广泛关注。本文介绍了一个大规模数据集UniTSyn,用于提升LLMs在单元测试合成方面的能力。通过与被测试函数相关联的测试,UniTSyn使LLMs能够推断预期行为和待验证的逻辑路径。通过基于UniTSyn构建自回归模型,实验证明在所有评估的编程语言中,学习和理解单元测试表征获得显著的效益,提高了生成准确性和代码覆盖率。
Feb, 2024
使用大型语言模型(LLMs)生成高质量的测试用例是一个重要问题,目前的研究主要集中在改进代码生成过程中通过LLMs生成辅助测试用例的性能,而LLMs在仅生成测试用例方面的性能尚未全面研究。为了填补这一空白,本文通过大量实验研究了LLMs生成高质量测试用例的能力,并提出了一种名为TestChain的多代理框架,通过与Python解释器的交互提供更准确的测试输出,实验结果表明TestChain在测试用例准确性上明显优于基准模型,其中使用GPT-4作为基础的TestChain在LeetCode-hard数据集上相比基准模型改进了13.84%。
Apr, 2024
本研究针对现有单元测试生成方法在复杂真实软件开发情境下的局限,提出了一种新的测试生成与评估方案。我们的系统\textsc{AgoneTest}专注于类级测试代码的自动生成,并自动化了从测试生成到评估的全过程。研究显示,该系统能够有效提升测试质量,并为多种 Java 项目生成高效的测试套件。
Aug, 2024
本研究解决了大语言模型在代码生成中的正确性和质量问题。通过对ChatGPT和Copilot生成Java和Python算法及其单元测试的控制实验,提出了一种可重复和可比的评估方法,最终发现了不同模型、语言和时间间隔下的显著差异。这些结果有助于进一步优化代码生成技术并提升软件开发效率。
Aug, 2024
本研究探讨了大型语言模型在文本到代码生成中的表现,特别是对比了Bard、BingChat、ChatGPT、Llama2和Code Llama等五种先进模型的能力。研究发现,ChatGPT在处理编程挑战方面远胜于其他模型,包括专门针对代码生成的Code Llama,展现出明显的性能优势。
Sep, 2024