代码之家  ›  专栏  ›  技术社区  ›  John Sonmez

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

  •  2
  • John Sonmez  · 技术社区  · 17 年前

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

    有没有关于如何做到这一点的建议或想法?我不认为有这样的框架,但如果有,我想知道。

    (更新)

    5 回复  |  直到 17 年前
        1
  •  1
  •   dacracot    17 年前

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

        2
  •  1
  •   Jack Ryan    17 年前

    我想你会想测试旧系统中的数据仍然在新系统中,这让我觉得称为单元测试有点大。您可能希望将数据插入到旧数据库中。应用映射。然后从您的新数据库中选择它,这至少可以确保您可以返回您输入的内容。这需要对要测试的每个实体或一组实体进行测试。

        3
  •  0
  •   tvanfosson    17 年前

    你可以试试 dbUnit 或 SqlUnit article 可能有助于理解某些DB测试模式。

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

        4
  •  0
  •   WW.    17 年前

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

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

    • 报告比较 通常至少有两个报告从一个系统转移到另一个系统。比较这些输出。有一半的时间你会在旧系统中发现bug。
    • 总数 计算数据的总计和散列总计,以确定其是否正确。以不同的方式分割数据。
    • 点检 详细调查随机记录。

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

        5
  •  0
  •   James Anderson    17 年前

    这实际上不适合单元测试。

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

    我建议您使用有限的数据集来定义新旧表的特定单元测试集,以测试特定案例和新表的正确性,但是,您仍然需要在每次更改某些内容时运行整个转换/映射集。当您在一小部分数据上运行时,这应该不会太痛苦,另外,您可以添加特定的数据来测试已知/可能的bug。