- 简介单元测试对于检测单个程序单元中的错误至关重要,但会消耗时间和精力。现有的自动化单元测试生成方法主要基于基于搜索的软件测试(SBST)和语言模型来解放开发人员。最近,大型语言模型(LLMs)展示了卓越的推理和生成能力。然而,几个问题限制了它们生成高质量测试用例的能力:(1)在上下文不足的情况下,LLMs可能会生成无效的测试用例,导致编译错误;(2)缺乏测试和覆盖反馈信息可能会导致运行时错误和低覆盖率;(3)重复抑制问题会导致LLMs陷入自我修复或重新生成尝试的重复循环中。在本文中,我们提出了TestART,一种新颖的单元测试生成方法,利用LLMs的优势,同时克服了上述限制。TestART通过自动化生成和修复迭代的协同进化来改进基于LLMs的单元测试。TestART利用基于模板的修复技术来修复LLM生成的测试用例中的错误,使用提示注入来指导下一步自动化生成并避免重复抑制。此外,TestART从通过的测试用例中提取覆盖率信息,并将其用作测试反馈,以增强最终测试用例的充分性。这种生成和修复之间的协同作用显著提高了生成的测试用例的质量、有效性和可读性,超越了以前的方法。在比较实验中,TestART生成的测试用例的通过率为78.55%,比ChatGPT-4.0模型和相同的基于ChatGPT-3.5的方法ChatUniTest高约18%。它还在通过测试的焦点方法上实现了90.96%的行覆盖率,超过EvoSuite 3.4%。
- 图表
- 解决问题解决问题:论文旨在提出一种新的基于大型语言模型的自动化单元测试生成方法,以解决现有方法中存在的问题,并提高测试用例的质量和有效性。
- 关键思路关键思路:TestART方法通过自动化生成和修复迭代的协同进化,利用模板修复技术修复LLM生成的测试用例中的错误,并使用提示注入来指导下一步自动化生成,避免重复抑制。此外,TestART从通过的测试用例中提取覆盖信息,并将其用作测试反馈来增强最终测试用例的充分性。这种生成和修复之间的协同作用显著提高了生成的测试用例的质量、有效性和可读性。
- 其它亮点其他亮点:TestART方法在实验中表现出色,生成的测试用例的通过率为78.55%,比ChatGPT-4.0模型和基于ChatGPT-3.5的ChatUniTest方法高出约18%。它还在通过测试的焦点方法上实现了90.96%的行覆盖率,超过EvoSuite 3.4%。
- 相关研究:最近的相关研究包括使用搜索基础软件测试(SBST)和语言模型的自动化单元测试生成方法。
沙发等你来抢
去评论
评论
沙发等你来抢