我应该如何执行 SQL ETL 脚本和 SPROC 的自动化测试?

Posted

技术标签:

【中文标题】我应该如何执行 SQL ETL 脚本和 SPROC 的自动化测试?【英文标题】:How should I perform automated testing of SQL ETL Scripts & SPROCs? 【发布时间】:2012-01-13 14:04:07 【问题描述】:

我们有许多 DTSX 包,可以从许多旧的普遍数据库中提取-转换-加载数据 -> SQL Server 2k8 R2。 (通过 ODBC)

我们的大部分 ETL 流程 T-SQL 脚本

遗留数据是一个结构糟糕的混乱,而且我们对 ETL 脚本所做的调整和更改通常是为了处理这些格式错误的数据。

我们想做的是建立一些流程来自动测试执行这些转换的这些 SPROCS / 脚本。

我们自己想出的是:

有一些已知的数据源输入(托管在本地普及型数据库中) 运行 DTSX 包以生成输出 在 SQL Server 的其他地方有一些预期的和预先创建的输出。 编写我们自己的验证脚本,将预期值与实际值进行比较。

只是想知道是否还有其他我们应该考虑的进程/系统/数据库测试应用程序。

【问题讨论】:

这可能会有所帮助 abit ***.com/questions/1007701/… 【参考方案1】:

看看tSQLt - the Database Unit Testing Framework for SQL Server。它使编写健壮的测试变得相当容易。

它(还)不允许测试脚本,但您可以将它们包装到存储过程中。

【讨论】:

非常感谢塞巴斯蒂安。我们已经开始使用这个框架,它似乎可以满足我们的需要。【参考方案2】:

遗留数据库总是具有挑战性的。

我建议您看一下这篇文章:http://quality-gates.com/?p=1284,其中我介绍了在不同层验证 ETL 流程需要完成的基本测试:操作、数据仓库等。

我们选择在我们的项目中使用质量门。由于它不是 ETL 的一部分,因此它使验证变得清晰和客观。在我看来,就像您正在寻找的一样。

【讨论】:

以上是关于我应该如何执行 SQL ETL 脚本和 SPROC 的自动化测试?的主要内容,如果未能解决你的问题,请参考以下文章

从我的 LINQ to SQL 中调用 UDF 和 sproc 的效率如何?

SPROC 完成执行后如何触发触发器?

存储过程中的“select *”如何执行?

如何找到Hive提交的SQL相对应的Yarn程序的applicationId

将 PL/SQL ETL 流程翻译成 HiveQL

如何在 Sql Server Data Tools(集成服务)中订购 ETL 任务?