保证数据库中事务正确性很重要。现有的方法使用特定操作模式来捕获违反事务规则的行为。方法缺陷有:
- 只使用特定操作模式来捕获违反事务规则的行为,不能检测到很多复杂操作带来的错误
- 现有方法无法处理谓词,如WHERE中的条件表达式
- 现有方法侧重测试隔离级别,可能会遗漏错误
生成语义等效的测试用例:
- 事务形式的测试用例
- 非事务形式,通过重排列保证效果相同的执行用例
- 提出语句依赖图:节点代表提交事务中的语句,边代表这些语句之间的依赖关系
- SQL级别插桩:在执行语句前后输出处理过的项目,每个项有一个对应的版本
- 构建等价测试用例并比较:等价的测试用例器语句排列与语句依赖图的依赖关系相同
- Bug总结:Bug总数、Bug严重性、Bug分类(哪些隔离级别)
- SOTA比较:与原有的一个事务Bug检测工具进行比较,证明能找到之前工具不能找到的错误
- 消融实验:证明策略有效性,在不使用策略的情况下Bug-Trigger Test Case个数
本文在数据库的事务Bug检测方面做了进一步探索,通过图的方式进行等价变换。论文内部对方法有效性和一些细节的讨论很完善,包括方法复杂度、方法正确性等等,这还需要学习,力求让自己的论文也逻辑严谨。