跨数据库系统理解与重用测试套件
软件工程
2024-10-30 v1 数据库
摘要
数据库管理系统(DBMS)开发者已经实现了大量的测试套件来测试他们的DBMS。例如,SQLite的测试套件包含超过9200万行代码。尽管付出了这些巨大努力,测试套件并未在DBMS之间被系统地重用,导致了努力的浪费。集成是困难的,因为测试套件使用各种测试用例格式,并依赖于非标准化的测试运行器特性。我们提出了一个统一的测试套件SQuaLity,在其中我们集成了来自三个广泛使用的DBMS(SQLite、PostgreSQL和DuckDB)的测试用例。此外,我们进行了一项实证研究,以确定重用这些系统测试套件的潜力。我们的结果表明,重用测试套件具有挑战性:首先,测试格式和测试运行器命令差异很大;例如,SQLite有4个测试运行器命令,而MySQL有112个命令,并带有额外的特性,例如执行文件操作或与shell交互。其次,虽然一些测试套件主要包含符合标准的语句(例如,SQLite中占99%),但其他测试套件主要测试非标准化的功能(例如,PostgreSQL测试套件中31%的语句是非标准化的)。第三,测试重用因各种显式和隐式依赖而变得复杂,例如需要设置变量和配置,某些测试用例需要默认不存在的扩展,以及查询结果依赖于特定的客户端。尽管有上述发现,我们通过跨DBMS执行测试套件,在四个不同的DBMS中发现了3个崩溃、3个挂起和多个兼容性问题,表明了重用的好处。总的来说,这项工作代表了在DBMS背景下实现测试用例重用的第一步,我们希望它能激发关于这一重要主题的后续工作。
引用
@article{arxiv.2410.21731,
title = {Understanding and Reusing Test Suites Across Database Systems},
author = {Suyang Zhong and Manuel Rigger},
journal= {arXiv preprint arXiv:2410.21731},
year = {2024}
}