如何测试SQL脚本? (数据完整性/迁移测试)

时间:2012-05-17 14:31:25

标签: sql sql-server-2008 testing data-migration data-integrity

我们的团队(QA)面临以下问题:

我们的数据库只能由我们的Core应用程序访问,该应用程序是WCF services应用程序。我们的客户端应用程序正在使用Core来访问数据库。

在某些时候,我们获得了Core applicationDatabase的新版本。 Dev部门还给了我们一个sql脚本,它改变了database Core data的很大一部分。 core data使用Core Application来描述我们系统的逻辑,因此对该数据的每次更改都可能会影响我们的任何客户端应用程序的功能。

我的问题是:

  • 我们是否应该再次测试所有应用程序(即使它们是 已经完全测试过)或是否有更有效的方法来测试 SQL脚本?
  • 是否有用于数据完整性/迁移测试的测试技术/工具?

我正在寻找在运行迁移脚本后对数据库进行快速有效性/完整性测试。这将通过应用程序测试来防止我们浪费时间。如果有效性/完整性测试成功,那么我们可以测试应用程序。

4 个答案:

答案 0 :(得分:2)

T-SQL有单元测试框架。 TSQLUnit项目就是这样一个框架。您可以使用它来设置自动化测试,就像在应用程序中一样。

答案 1 :(得分:2)

正如@Tim Lentine已发布的那样,我建议测试完整的应用程序。正如您所评论的那样,根据您的描述,您的团队收到的新sql脚本对数据库开发的核心进行了重要更改,包括结构和数据本身。因此,为了确保所有内容仍然是单件,我最好进行完整的应用程序测试。至于工具或技术,我可以在SSMS上推荐新的RedGate(不,我不适合他们)插件,称为“SQL Test”。它使用单元测试open source tSQLt来实现其目的。它的缺点是,有人需要首先学习如何使用tSQLt,但是很简单。

答案 2 :(得分:1)

答案 3 :(得分:1)

根据你给出的描述:

  

我们有一个只能由我们的核心应用程序访问的数据库...   我们获得了一个新版本的核心应用程序和   我们的数据库...

告诉我,您的团队有责任单独测试数据库,但是可以从客户端的角度测试Core服务,因此假设数据库是正确的。

将核心应用程序视为black box并使用单元测试进行测试。这些测试不应该要求您在数据库中进行探讨,因为所有意图和目的都使用您的Core应用程序的任何应用程序都不知道,也不应该关心信息实际存储在数据库中。您的开发团队可以在6个月内决定将数据存储在云中,在这种情况下,您的所有数据库测试都将被破坏。

如果您必须查看数据库以检查数据是否已正确存储,那么您的Core服务界面就会出现问题,因为您输入的任何数据都应该可以通过相同的界面检索(我只知道有人会评论他们的应用程序确实存储了无法回读的数据,但如果没有更详细的应用程序说明,​​则更容易概括。)

回到现实世界我假设你是QA团队的一员,除非数据库开发人员正在做一些测试(他们不是吗?)你很可能不得不验证数据库的变化。

最后,您可能有兴趣阅读我在DBA Stack Exchage网站上发布的关于performing a data comparison between two different schemas的问题。剧透:没有简单的答案。