让一个中型业务应用程序绑定到一个数据库。此应用程序有许多影响多个表的业务规则。以这个简单的为例:
- 数据库有名为
Person
,Customer
,的表ProspectiveCustomer
,每个表都有一个“活动”标志 - 一个人可以是客户和/或潜在客户
- 同一个人的客户和潜在客户不能同时处于活动状态
- 如果此人不活跃,则客户或潜在客户不能活跃
- 发票的问题和生命周期决定了谁是活跃的或不活跃的
此类规则过于复杂,无法由数据库触发器强制执行,并且根据设计选择,没有集中式代码来完成这项肮脏的工作。然后总是有可能一个错误将数据库设置为不一致的状态,正如我们每天在测试时注意到的那样。
由于我担心这种情况在生产中未被发现,我想知道编写一个检查数据库状态并报告任何不一致的脚本是否是个好主意。除了一些活动记录之外,这既有助于发现生产错误,也有助于在需要时修复数据库。
这种方法的唯一缺点是那些自测脚本的额外开发时间(在我的情况下不可忽略)。我错过了一些基本的东西吗?
此外,如果编写了这些自测,它们在测试活动中也会非常有用,从而最大限度地减少开发它们的额外工作量。