论文

DualMine:具有双重验证的静态-动态 REST API 约束发现

DualMine: Static-Dynamic REST API Constraint Discovery with Dual Validation

摘要

REST API 约束捕获 API 响应的语义属性,对于自动测试预言机生成至关重要,但它们很难可靠地发现。静态方法从 API 规范和文档推断约束,但其结果可能会受到不完整、不明确或过时的规范的影响。动态方法从执行跟踪中挖掘不变量,但其结果取决于执行覆盖范围,并且可能包括仅适用于观察到的执行的巧合属性。本文介绍了 DualMine,这是一种用于 REST API 约束发现的混合框架,它将基于规范的约束挖掘与运行时不变挖掘集成在一起。它首先使用基于 LLM 的静态挖掘器从 OpenAPI 规范中提取候选约束,并使用动态不变挖掘从请求响应跟踪中提取候选约束。然后,它执行非对称双重验证:运行时证据用于验证或反驳规范派生的约束,而规范感知的 LLM 推理用于过滤不可信的日志派生不变量,而不丢弃看似合理的未记录行为。最后,它通过执行有针对性的 API 执行来应用反例引导的细化,以解决不确定、重叠或冲突的约束。我们在 39 个现实世界的 REST API 上评估 DualMine,并将其与最先进的纯静态、纯动态和约束发现方法进行比较。结果表明,它通过减少不支持的约束、保留各个方法遗漏的补充约束来提高发现的约束的质量,这有助于检测 48 个真实的 REST API 故障。