通过枢轴查询合成测试数据库引擎
数据库
2020-01-14 v1 软件工程
摘要
关系型数据库被普遍使用。它们由数据库管理系统(DBMS)管理,后者允许使用一种称为结构化查询语言(SQL)的领域特定语言来插入、修改和查询数据。流行的 DBMS 已被模糊测试器广泛测试,并成功发现了崩溃缺陷。然而,发现逻辑缺陷(例如 DBMS 计算出错误的结果集)的方法在很大程度上仍未得到解决。差分测试是一种通过比对支持同一语言的系统输出来测试这些系统的有效技术。然而,该技术在 DBMS 上效果不佳,因为每个 DBMS 通常支持其自身的 SQL 方言。为此,我们设计了一种新颖且通用的、称之为枢轴查询合成(Pivoted Query Synthesis)的方法。该方法的核心思想是自动生成查询,并确保这些查询能获取一个特定的、随机选定的行(称为枢轴行)。如果 DBMS 未能获取枢轴行,则很可能是 DBMS 中存在缺陷。我们在三个广泛使用且成熟的 DBMS(即 SQLite、MySQL 和 PostgreSQL)上测试了我们的方法。我们总共在这三个 DBMS 中报告了 123 个缺陷,其中 99 个已被修复或确认,表明该方法高效且通用。我们期望该方法的广泛适用性和简单性能够提升许多 DBMS 的鲁棒性。
引用
@article{arxiv.2001.04174,
title = {Testing Database Engines via Pivoted Query Synthesis},
author = {Manuel Rigger and Zhendong Su},
journal= {arXiv preprint arXiv:2001.04174},
year = {2020}
}