一句话:提出首个针对 Datalog 引擎的蜕变测试方法,在三个成熟引擎中发现 13 个此前未知的查询错误。
Datalog 是一种应用广泛的查询语言,但其引擎与任何复杂软件一样可能存在缺陷,其中最严重的是查询求值结果错误(query bugs)。这类错误后果严重,例如会破坏以 Datalog 实现并形式化的程序分析的可靠性。本文提出首个面向 Datalog 引擎的蜕变测试(metamorphic testing)方法,通过构造满足蜕变关系的查询对来自动检测查询错误。作者在三个成熟引擎上运行该工具,共发现 13 个此前未知的查询错误,其中部分错误隐藏较深,暴露出关键性的语义问题。
Datalog is a popular query language with applications in several domains. Like any complex piece of software, Datalog engines may contain bugs. The most critical ones manifest as incorrect results when evaluating queries—we refer to these as query bugs. Given the wide applicability of the language, query bugs may have detrimental consequences, for instance, by compromising the soundness of a program analysis that is implemented and formalized in Datalog. In this paper, we present the first metamorphic-testing approach for detecting query bugs in Datalog engines. We ran our tool on three mature engines and found 13 previously unknown query bugs, some of which are deep and revealed critical semantic issues.