HITS: High-coverage LLM-based Unit Test Generation via Method Slicing

2024年08月21日
  • 简介
    大型语言模型(LLMs)在为Java项目生成单元测试方面表现良好。然而,对于覆盖项目内复杂的核心方法,性能较差。复杂的方法包含许多条件和循环,要求测试用例足够多,以覆盖所有行和分支。然而,现有的LLMs测试生成方法将整个方法转交给LLMs进行测试,而没有输入分析的帮助。LLMs难以推断出覆盖所有条件的测试输入,导致缺失行和分支。为了解决这个问题,我们提出将核心方法分解成片段,并要求LLMs逐个片段生成测试用例。我们的方法简化了分析范围,使LLMs更容易在每个片段中覆盖更多的行和分支。我们构建了一个数据集,包括从现有最先进方法使用的项目中收集的复杂核心方法。我们的实验结果表明,我们的方法在行和分支覆盖得分方面显著优于当前的LLMs测试用例生成方法和典型的SBST方法Evosuite。
  • 图表
  • 解决问题
    提高大型语言模型在Java项目单元测试中的覆盖率,特别是针对复杂方法的覆盖率
  • 关键思路
    将复杂方法分解成片段,逐个生成测试用例,简化分析范围,提高覆盖率
  • 其它亮点
    通过实验验证了该方法的有效性,相比现有方法和Evosuite都有更高的覆盖率得分,数据集来自现有研究中使用的Java项目,可以为提高单元测试覆盖率提供新思路
  • 相关研究
    与现有的SBST方法和Evosuite进行比较,但具体没有提及其他相关研究
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论