论文
BreakGuard:利用 LLM 生成的测试来检测依赖关系破坏性更改
BreakGuard: Towards Detecting Dependency Breaking Changes with LLM-Generated Tests
摘要
开源库通过提供可加快开发过程的可重用功能,在软件开发中发挥着重要作用。随着库的发展,它们会发布添加功能、修复错误或应用安全补丁的新版本。在此过程中,他们可能会通过引入改变运行时行为并破坏客户端应用程序的破坏性更改(BC)来破坏与客户建立的合同。客户端测试套件通常无法检测到这些 BC,因为库覆盖范围有限,无法执行客户端代码库中使用的所有库方法。我们提出 BreakGuard,这是一种生成测试套件来检测客户端中重大更改的方法。 BreakGuard 静态提取调用目标库方法(调用站点)的每个客户端方法(焦点方法),然后为每个焦点方法生成测试。如果测试在破坏前版本上通过并且在破坏版本上失败,则测试检测到 BC。我们使用 3 LLM(GPT4o、Qwen3-coder-480B、GPT-OSS-120B)和三个上下文级别:最小、方法和类,对 BUMP 数据集的 89 个现实世界重大更改评估我们的方法。使用性能最佳的配置,BreakGuard 可检测 30.3% 的重大变更(89 项中的 27 项),每个检测到的重大变更的平均成本约为 0.90 美元。我们成功地检测到来自不同库类别(例如 JSON 库、日志记录、解析)的 BC,但我们发现 LLM 生成的测试对于检测崩溃类型的重大更改比行为 BC 更可靠。