单元测试数据库转换的好策略或工具是什么? (不是单元测试数据库,而是转换)

时间:2008-12-23 15:35:59

标签: database unit-testing tdd

我正在开发一个项目,我们将旧系统转换为全新系统。我们目前从旧系统的数据库转换到新系统的数据库,一个团队正在创建一组地图和变换,以便在开发结束时运行以转换旧系统。

我想实现单元测试,以便我们可以知道对地图和变换的新变化,不会破坏现有工作,我们可以使用测试驱动的开发方法。

有关如何执行此操作的任何建议或想法?我不认为有这个框架,但如果有,我应该想知道它。

(更新)

这是一个Oracle数据库,可能是有用的信息。

5 个答案:

答案 0 :(得分:1)

这是Oracle特定的,但如果这是您选择的数据库,那么您应该尝试Ounit

答案 1 :(得分:1)

在这种情况下你需要做的第一件事是决定你的'单位'是什么。然后弄清楚它的功能应该是什么。之后你可以像其他任何东西一样测试它。

我想你会想要测试旧系统中的数据是否还在新系统中,这对我来说有点大,称为单元测试。您可能希望将数据插入旧数据库。应用映射。然后从新数据库中选择它,这至少可以确保您可以取回放入的内容。这需要对要测试的每个实体或实体集进行。

答案 2 :(得分:0)

您可以尝试dbUnitSqlUnit。虽然MS特定,但article可能有助于理解某些数据库测试模式。

警告:我没有使用任何这些,因此无法提出任何建议。

答案 3 :(得分:0)

我过去做过这种事情;我不认为测试整个迁移是如何进行“单元测试”的。也许您可以考虑“新数据库中所有销售总额必须是旧数据库”。除非您正在编写单独的PL / SQL函数来协助转换(即从一种存储列的方式转换为另一种方式),否则单元测试并不是真的。这些对单元测试来说应该是微不足道的。

我过去做过的一些测试: -

  • 报告比较通常至少会有一些报告从一个系统转移到另一个系统。比较这些的输出。有一半的时间你会在旧系统中发现错误。
  • 总计计算数据的总计和哈希总数,以确定其是否正确。以不同的方式拆分和分割数据。
  • 现场测试调查随机记录的详细信息。

作为开发人员,在编写系统时拥有大量测试数据非常有用。开发人员编写的单元测试应针对新创建的数据以及您导入的历史数据运行。

答案 4 :(得分:0)

这并不适合单元测试。

“新”数据库通常在逻辑上不一致,直到所有转换完成。此外,大多数错误都是由于映射中的不一致以及它们处理空值foriegn键等的方式。

我建议您使用有限的数据集定义新旧表的特定单元测试集,以测试特定情况并测试新表的正确性,但是,您仍然需要运行整个集合每次改变某些东西时的转换/映射当您运行一小组数据时,这不应该太痛苦,而且,您可以添加特定数据来测试已知/可能的错误。