MySQL:我如何测试我的数据库架构(外键一致性,存储过程等)

dbm*_*dbm 5 mysql testing unit-testing

我只是在设计一个更大的数据库架构.它将包含一组表,几个视图和一些存储过程.由于它是一个较大类型的数据库,并且处于开发的早期阶段(实际上它仍然只处于早期设计阶段),我觉得需要一个测试套件来验证重构期间的完整性.

就应用程序逻辑而言,我非常熟悉测试概念,包括服务器端(主要是PHPUnit)和客户端(Selenium和Android测试基础架构).

但是,我如何测试我的数据库架构?

  • 是否存在某种类似的测试策略和工具,一般用于数据库,特别是MySQL?

  • 在更改基础表后,如何验证我的视图,存储过程,触发器以及上帝知道什么仍然有效?

  • 我是否必须使用PHP层包装数据库以启用数据库逻辑测试(存储过程,触发器等)?

Chr*_*ton 2

要测试数据库,您需要的一些东西是:

  1. 包含所有数据测试用例、初始数据等的测试数据库。这将使您每次都能从已知的起始位置进行测试。
  2. 一组事务(INSERT、DELETE、UPDATE),用于将数据库移动到您想要测试的状态。这些本身可以存储在测试数据库中。
  3. 您的一组测试 - 表示为对数据库的查询,对您的操作结果进行实际检查。这些结果将由您的测试套件进行测试。
  4. 数据库可能会引发异常,但如果您收到异常,则您的数据库和数据可能会出现更严重的问题。您可以以类似的方式测试数据库的操作,但除了“极端情况”之外,这应该不太必要,因为现代数据库引擎在数据服务任务方面非常强大。

您不需要用 PHP 层包装数据库 - 如果您遵循上述结构,则应该可以将实际数据库的 DML 和 DDL 中的完整测试套件与普通测试套件结合起来。