Enhancing LLM-based Test Generation for Hard-to-Cover Branches via Program Analysis

2024年04月07日
  • 简介
    自动化测试生成在软件质量保证中扮演着至关重要的角色。虽然最近搜索导向软件测试(SBST)和大型语言模型(LLMs)的进展显示出在生成有用测试方面的潜力,但这些技术仍然难以覆盖某些分支。要达到这些难以覆盖的分支通常需要构建复杂的对象并解决分支条件中复杂的过程间依赖关系,这对现有的测试生成技术构成了重大挑战。在这项工作中,我们提出了一种名为TELPA的新技术,旨在解决这些挑战。其关键洞见在于提取目标测试方法的实际使用场景,以学习如何构建复杂对象,并提取涉及难以覆盖分支的过程间依赖方法以学习分支约束的语义。为了增强效率和效果,TELPA识别出一组无效测试作为LLMs的反例,并采用反馈过程来迭代地改进这些反例。然后,TELPA将程序分析结果和反例集成到提示中,指导LLMs更深入地理解目标方法的语义,并生成能够到达难以覆盖分支的多样化测试。我们在27个开源Python项目上的实验结果表明,TELPA明显优于最先进的SBST和基于LLM的技术,分支覆盖率平均提高了31.39%和22.22%。
  • 图表
  • 解决问题
    提高软件测试覆盖率是软件质量保证中的关键问题,但现有的测试生成技术难以覆盖某些分支,需要构建复杂对象和解决复杂的跨程序依赖关系,本文旨在解决这些挑战。
  • 关键思路
    本文提出了一种新的测试生成技术TELPA,通过提取目标方法的真实使用场景来学习构建复杂对象的方法,提取涉及跨程序依赖关系和难以覆盖的分支的方法来学习分支约束的语义。TELPA还利用反馈过程迭代地优化LLM的反例,将程序分析结果和反例集成到提示中,引导LLM更深入地理解目标方法的语义,并生成可以覆盖难以覆盖的分支的多样化测试。
  • 其它亮点
    本文在27个开源Python项目上进行了实验,结果表明,TELPA相比于现有的SBST和LLM技术,在分支覆盖方面平均提高了31.39%和22.22%。
  • 相关研究
    相关研究包括Search-Based Software Testing (SBST)和Large Language Models (LLMs)等技术,同时也有一些基于程序分析的测试生成技术。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论