利用单元测试检测语义冲突
软件工程
2025-07-10 v1
摘要
分支与合并是协作软件开发中的常见实践,可提高开发者的生产力。尽管有这些好处,开发者仍需合并软件并解决合并冲突。虽然现代合并技术可以自动解决文本冲突,但当冲突出现在语义层面时它们便无能为力。尽管已有语义合并工具被提出,但它们通常基于重量级静态分析或需要显式指定程序行为规范。在本工作中,我们另辟蹊径,提出 SAM(SemAntic Merge,语义合并),一种基于自动生成单元测试并将其用作部分规范的语义合并工具。为评估 SAM 检测冲突的可行性,我们进行了一项实证研究,分析了来自 51 个合并场景中集成到公共类元素上的超过 80 对变更。此外,我们还评估了 SAM 所使用的四种单元测试生成工具对冲突识别的贡献。我们提出并评估了可测试性转换(Testability Transformations)与序列化的采用。我们的结果表明,SAM 在仅结合 Differential EvoSuite 和 EvoSuite 生成的测试并使用所提出的可测试性转换时表现最佳(在 28 个中检测到 9 个冲突)。这些结果强化了先前关于使用测试用例生成来检测测试冲突之潜力的发现。
引用
@article{arxiv.2310.02395,
title = {Detecting Semantic Conflicts with Unit Tests},
author = {Léuson Da Silva and Paulo Borba and Toni Maciel and Wardah Mahmood and Thorsten Berger and João Moisakis and Aldiberg Gomes and Vinícius Leite},
journal= {arXiv preprint arXiv:2310.02395},
year = {2025}
}
备注
53 pages, 10 figures