论文

通过语义驱动的单元测试生成发现业务逻辑错误

Uncovering Business Logic Bugs via Semantics-Driven Unit Test Generation

摘要

业务逻辑错误违反了预期的业务语义,并且在企业软件中尤其普遍。然而,大多数现有的单元测试生成技术都是以代码为中心的,这使得此类错误难以暴露。我们提出 SeGa,一种语义驱动的单元测试生成技术,用于发现业务逻辑错误。 SeGa 从产品需求文档构建语义知识库,表示为一组功能条目,将相关需求分组到共同的业务意图下。给定一个焦点方法,SeGa 检索相关的功能条目,并派生出具有明确先决条件、触发操作、预期结果和语义约束的细粒度业务场景,以指导基于 LLM 的测试生成。我们在四个工业 Go 项目上评估 SeGa,其中包含 60 个现实世界的业务逻辑错误。 SeGa 比四种最先进的基于 LLM 的技术多检测 22-25 个错误,并将精度提高 26.9%-34.3%。跨 6 个生产存储库的部署进一步发现了 16 个以前未知的业务逻辑错误,这些错误已被开发人员确认并修复。从我们的工业研究中,我们总结了一系列的经验教训和对实际应用和未来研究的建议。