论文

DiffTestGen:基于变更的 LLM 测试,用于暴露行为差异

DiffTestGen: Change-Directed LLM-Based Testing for Exposing Behavioral Differences

摘要

随着软件随着时间的推移而发展,确保任何行为变化都按照开发人员的预期发生非常重要。实现这一目标的一个有希望的方法是生成测试来揭示程序的新旧版本之间的行为差​​异。然而,当前的方法无法触发许多代码更改的行为差异。本文介绍了~DiffTestGen,这是一种新颖的面向变更、基于 LLM 的差异测试方法,专门设计用于揭示代码变更引入的行为差异。该方法由两个关键贡献实现:首先,DiffTestGen 利用静态调用图分析和项目文档来识别测试生成的有效入口点,并指导 LLM 实现更改的代码。其次,DiffTestGen 通过向 LLM 提供有针对性的覆盖率反馈,迭代改进了我们新引入的联合覆盖率指标,该指标结合了新旧版本中修改代码的覆盖率。我们在总共包含 463 个 PR 的两个数据集上评估 DiffTestGen。 DiffTestGen 暴露了 78.2% PR 的行为差异,同时实现了 90.7% 的平均工会覆盖率。与基线相比,DiffTestGen 总体多暴露了 99 个 PR,代码覆盖率分别提高了 12.5% 和 15.6% 个百分点。通过将 DiffTestGen 与 Testora 回归检测器集成,我们表明所识别的行为差异可用于检测现有最佳方法遗漏的回归错误。