繁体   English   中英

数据库集成测试的可维护性

[英]Maintainability of database integration testing

我正在开发一个 ETL 过程,将业务数据从一个数据库提取到数据仓库。 该应用程序未使用 NHibinate、Linq to Sql 或实体框架。 应用程序有自己生成的数据访问类,这些类生成执行 CUID 所需的 SQL 语句。

可以想象,编写生成自定义 SQL 的代码的开发人员很容易出错。

我想编写一个程序来生成测试数据 (Arrange),然后执行 ETL 过程 (Act) 并验证数据仓库 (Assert)。

我认为编写这样的程序并不难。 然而,我担心的是,在过去,我的公司曾尝试做类似的事情,结果是早午餐无法维护的单元测试不断失败,因为随着新功能的添加,数据库模式发生了许多新的变化。

我的计划是编写一个在构建机器上运行的集成测试,而不是任何单元测试来确保 ETL 过程正常工作。 测试数据不能完全随机生成,因为业务逻辑决定了数据如何加载到数据仓库。 我们有自定义开发工具,可在数据库定义发生更改时生成新的数据访问类。

我希望来自社区的任何反馈意见给我关于编写易于维护的集成测试的建议。 我有一些想法:

  1. 在版本控制(TFS)中保存一个备份测试数据库,当源或数据仓库有数据更改时,开发人员需要修改备份数据库。

  2. 开发人员需要通过测试程序(在本例中为 C#)手动维护测试数据。 该程序将为开发人员提供一个基本框架来生成他们的测试数据。

  3. 当测试数据库初始化时,它会生成随机数据。 开发人员需要编写代码来覆盖某些随机生成的数据,以确保测试通过。

我欢迎任何建议谢谢

嘿dsum,虽然我并不真正了解您的ETL 的整个架构,但我想说的是,集成测试应该只是您测试过程中的另一个步骤。

即使第一次遇到的单元测试结果一团糟,您也应该记住,在许多情况下,单个单元测试是检查的最佳位置。 或者您想将整个集成测试拆分为三重案例或某事。 其他更深入的,以保证在三个条件中的每一个正确的流量?

混乱的单元测试只是混乱的生产代码的结果。 不要觉得被冒犯了。 这只是我的意见。 单元测试迫使编码人员保持干净的编码风格并使整个事情更易于维护。

所以......我的目标是,你不仅要考虑对整个事情进行集成测试,因为单元测试(如果它们以正确的方式使用)可以更详细地关注问题。

问候, MacX

首先,假设我认为这是一个很好的计划,几年前我曾使用 Oracle 和 PL/SQL 做过类似的事情。 恕我直言,您的问题主要是组织问题,而不是技术问题:

  • 您必须有人负责扩展和维护测试代码。
  • 维护测试数据的责任必须明确(并提供易于维护测试数据的机制;同样适用于您可能需要的任何验证数据)
  • 整个团队应该知道,只要测试失败,任何代码都不会进入生产环境。 如果测试失败,团队的首要任务应该是修复它(代码或测试,无论是正确的)。 训练他们只要测试中断就不要使用任何新功能!
  • 在错误修复之后,修复它的人应该很容易验证之前失败的集成部分在之后不会失败。 这意味着,应该可以从任何开发人员机器(或至少是其中的一部分)快速轻松地运行整个测试。 如果您的测试太大, Quick可能会给 ETL 过程带来问题,因此请专注于用尽可能少的数据测试很多东西。 也许您可以将整个测试分解为可以逐步执行的较小部分。

如果在 ETL 中执行数据集成测试时想要维护数据,我们也可以执行这些步骤,因为 ETL 过程和相关应用程序的集成测试涉及其中。 例如:

1.在源系统中设置测试数据。 2.执行ETL过程将测试数据加载到目标中。 3.查看或处理目标系统中的数据。 4.验证数据和使用数据的应用程序功能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM