【问题标题】:What a good strategy or tool to unit test database conversions? (Not unit testing databases, but the conversion)什么是单元测试数据库转换的好策略或工具? (不是单元测试数据库,而是转换)
【发布时间】:2008-12-23 15:35:59
【问题描述】:

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

我想实施单元测试,这样我们就可以知道对地图和变换的新更改不会破坏现有工作,并且我们可以使用测试驱动的开发方法。

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

(更新)

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

【问题讨论】:

    标签: database unit-testing tdd


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这是我在“单元测试”中遇到的最大问题;标准系统说“虚拟数据访问层”。但我所做的大部分工作都是数据库——这不能被虚拟化,而且测试起来很困难!
      【解决方案3】:

      你可以试试dbUnitSqlUnit。虽然是特定于 MS 的,但 article 可能有助于理解一些 DB 测试模式。

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

      【讨论】:

        【解决方案4】:

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

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

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

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

        【讨论】:

          【解决方案5】:

          这并不适合单元测试。

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-09-13
            • 1970-01-01
            • 1970-01-01
            • 2019-05-24
            • 1970-01-01
            • 2010-10-12
            • 1970-01-01
            • 2011-02-04
            相关资源
            最近更新 更多