扩展 MySQL 9.0  /  MySQL 测试套件

第 3 章 MySQL 测试套件

Unix 源代码和二进制发行版中包含的测试系统使用户和开发者能够对 MySQL 代码进行回归测试。这些测试可以在 Unix 上运行。

您也可以编写自己的测试用例。有关系统要求等信息,请参阅 MySQL Server Doxygen 文档中的 MySQL 测试框架,该文档位于 https://dev.mysqlserver.cn/doc/index-other.html

当前的测试用例集无法测试 MySQL 中的所有内容,但它应该能够捕获 SQL 处理代码中大多数明显的错误,操作系统或库问题,并且在测试复制方面非常彻底。我们的目标是使测试覆盖 100% 的代码。我们欢迎您为我们的测试套件做出贡献。您可能特别想贡献测试来检查对您的系统至关重要的功能,因为这将确保所有未来的 MySQL 版本都能与您的应用程序良好地协同工作。

测试系统由测试语言解释器 (mysqltest)、用于运行所有测试的 Perl 脚本 (mysql-test-run.pl)、用特殊测试语言编写的实际测试用例及其预期结果组成。要在构建后在您的系统上运行测试套件,请从源代码根目录键入 make test,或者更改位置到 mysql-test 目录并键入 ./mysql-test-run.pl。如果您已安装二进制发行版,请更改位置到安装根目录下的 mysql-test 目录(例如,/usr/local/mysql/mysql-test),并运行 ./mysql-test-run.pl。所有测试都应该成功。如果任何测试失败,请随时尝试找出原因,如果它表明 MySQL 中存在错误,请报告问题。请参阅 如何报告错误或问题

如果一个测试失败,您应该使用 --force 选项运行 mysql-test-run.pl 以检查是否有其他测试失败。

如果您在要运行测试套件的机器上有一份 mysqld 的副本正在运行,则无需停止它,只要它不使用端口 93069307 即可。如果这两个端口中的任何一个都被占用,您应该将 MTR_BUILD_THREAD 环境变量设置为适当的值,测试套件将使用一组不同的端口用于源、副本和 NDB)。例如

$> export MTR_BUILD_THREAD=31
$> ./mysql-test-run.pl [options] [test_name]

mysql-test 目录中,您可以使用 ./mysql-test-run.pl test_name 运行单个测试用例。

如果您对测试套件有任何疑问,或者有测试用例要贡献,请加入 MySQL 社区 Slack