基于API交互快照的客户端-库兼容性测试
软件工程
2025-07-29 v1
摘要
现代软件开发严重依赖第三方库来加速开发并提高质量。随着库的演化,它们可能通过引入行为性破坏性变更(BBC)来破坏与其客户端建立的隐性契约,这些变更会改变运行时行为并在编译时未被检测到的情况下静默地破坏客户端应用程序。客户端侧的传统回归测试通常无法检测到此类BBC,原因可能是库覆盖范围有限,或者是断言不够强,未能充分检验库的预期行为。为了解决这个问题,我们提出了一种新颖的客户端-库兼容性测试方法,该方法以新颖的方式利用现有的客户端测试。我们不依赖开发者编写的断言,而是提议在客户端测试执行期间记录API边界处的实际交互(协议、输入和输出值、异常等)。这些API交互序列作为快照存储,捕获客户端在特定时间点期望的确切契约。随着库的演化,我们比较原始快照和新快照,以识别契约中的扰动,标记潜在的BBC,并通知客户端。我们在原型工具Gilesi中实现了这种技术,这是一个Java框架,可以自动检测库API、记录快照并进行比较。通过对几个带有人工植入BBC的客户端-库对进行的初步案例研究,我们表明Gilesi能够可靠地检测客户端测试套件遗漏的BBC。
引用
@article{arxiv.2507.20814,
title = {Client--Library Compatibility Testing with API Interaction Snapshots},
author = {Gustave Monce and Thomas Degueule and Jean-Rémy Falleri and Romain Robbes},
journal= {arXiv preprint arXiv:2507.20814},
year = {2025}
}