集成测试 SQL 文件难以维护

Posted

技术标签:

【中文标题】集成测试 SQL 文件难以维护【英文标题】:Integration tests SQL files difficult to maintain 【发布时间】:2014-10-13 16:00:34 【问题描述】:

我们的问题:我们有一套很好的集成测试(端到端),每个测试都有一个 SQL 文件在测试之前执行以准备数据库。随着时间的推移,维护这些 SQL 文件变得更加困难。

示例:如果我们在表中添加一个新的强制列,我们必须更改我们拥有该表的所有 SQL 文件(我们用于测试)以及我们拥有的种子数据它。

这非常耗时,而且随着 SQL 文件数量的增加,情况会越来越糟。我们如何才能改善这种情况?

【问题讨论】:

【参考方案1】:

一种可能的解决方案是重新考虑您的参数化查询。如果您的 SQL 文件多次执行结构相似的查询,您可以尝试编译一次查询并使用不同的参数执行它。为了实现更好的可重用性,您可以将(已经)存在的查询存储在变量/参数/过程中。这里有一个很大的优势,一个查询更改将通过其余的传播。您可以在此处阅读有关Common Table Expressions 的更多信息。

如果您想重用查询的SQL 文本,另一种可能会有所帮助的方法是定义视图(可能)是最好的方法。

如果您想重用查询的结果,那么您应该考虑使用全局临时表。这些临时表存储会话或事务期间的数据(无论您选择哪个)。如果您需要多次重用计算数据,尤其是当您的查询确实“丑陋”和“可怕”(意味着长时间运行)时,这些非常有用。请参阅Temporary tables 了解更多信息。

如果您需要将数据保存得比会话更长,您可以考虑物化视图。

【讨论】:

以上是关于集成测试 SQL 文件难以维护的主要内容,如果未能解决你的问题,请参考以下文章

.net测试篇之单元测试/集成测试神器Autofixture

.net测试篇之单元测试/集成测试神器Autofixture

测试如何编写可维护的集成测试

devops-持续集成管理之SonarQube

跟Monty Taylor和Jim Blair聊OpenStack的持续集成与自动化测试

系统级集成测试的断舍离|洞见