数据库回归测试

为了安全地变更现有的软件,不论是重构它还是增加新的功能,你都需要验证在完成变更后没有造成什么破坏。换言之,你需要对系统执行一次全面的回归测 试。如果你发现造成了某种破坏,就必须进行修复,或图1.4测试先行的开发方式者回滚所做的变更。程序员在开发领域代码的同时开发一个完整的单元测试套 件,这种做法在开发社区中已经越来越普遍,实际上,敏捷开发者喜欢在编写“真正的”代码之前先编写测试代码。就像你测试应用的源代码一样,难道你不应该测 试你的数据库?重要的业务逻辑以存储过程、数据有效性规则、参照完整性(RI)规则等形式实现在你的数据库中,这些业务逻辑显然应该经过彻底的测试。

测试先行开发(TFD),也称为测试先行编程,是一种演进式的开发方式,你在编写新的功能代码之前必须编写一个会失败的测试。正如图1.4中的UML活动图所展示的,TFD包含以下步骤:

 

1. 快速增加一个测试,主要是要有足够多的代码,以使得这个测试会失败。

2. 运行测试以确保新的测试确实会失败。通常是运行完整的测试套件,但是由于速度的原因,你可能决定只运行完整测试套件的一个子集。

3. 更新你的功能代码,使它能通过新的测试。

4. 再次运行测试。如果测试失败,回到第3步。测试成功则开始下一轮工作。

TFD的主要好处在于,它迫使你在实现新的功能之前对其进行仔细的思考(你实际上是在做详细设计),它确保你有测试代码来验证你的工作,并且它给了 你演进系统的勇气,因为你知道无论什么时候,如果你的改动破坏了系统的某个部分,你都可以立即检测到。就像拥有应用源代码的完整回归测试套件使得代码重构 可以进行一样,拥有数据库的完整回归测试套件使得数据库重构可以进行(Meszaros 2006)。

测试驱动开发(TDD)(Astels 2003;Beck 2003)是TFD和重构的结合。你先是采用TFD的方式编写代码,在代码能工作后,你根据需要对它进行重构,以确保你的设计具有很高的质量。在进行重构 时,你必须重复运行回归测试,以检验是否破坏了系统的某个部分。

一个重要提示是,你可能需要几种单元测试工具,至少对你的数据库需要一种,对外部程序中使用到的每种编程语言各需要一种。幸运的是XUnit工具家 族(例如,针对Java的JUnit,针对Visual Basic的VBUnit,针对.NET的VUnit,以及针对Oracle的OUnit)是免费的,相互之间保持着很好的一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值