📄️ 概览
Goose 如何测试?
📄️ sqllogictest 简介
对于纯 SQL 测试,我们使用从 SQLite 引入并扩展的 SQL logic 测试套件。每个测试都是 test/sql 目录中的单文件自包含脚本。
📄️ Catch C/C++ 测试
虽然大多数功能我们更倾向于使用 sqllogic 测试,但某些场景仅靠 SQL 不足以覆盖,典型情况是测试 C++ API。当纯 SQL 确实不可行时,就需要使用 Catch 编写 C++ 测试。
📄️ 调试
测试的目标是尽早发现系统在哪些情况下会出错。系统变更不可避免会导致某些测试失败,而失败后就需要进入调试流程。
📄️ 多连接
对于验证事务管理或数据版本行为的测试,通常需要使用多连接。例如,要验证建表的事务隔离性,可以在 con1 中开启事务并创建表,再在 con2 中查询,确认提交前该表不可见。
📄️ 持久化测试
默认情况下,所有测试都在内存模式运行(除非启用 --force-storage)。某些场景下我们希望强制使用持久化数据库。可通过 load 初始化持久化数据库,并通过 restart 触发数据库重载。
📄️ 结果校验
查询结果的标准校验方式是使用 query 语句,并在后面用若干个 I 表示期望列数。查询后需要写四个短横线(----),再写以制表符分隔的结果值。例如:
📄️ 编写测试
开发与测试