Unit testing 开发DBA的TDD方法?

Unit testing 开发DBA的TDD方法?,unit-testing,view,db2,tdd,agile,Unit Testing,View,Db2,Tdd,Agile,我公司的软件开发团队使用TDD和BDD实践进行开发。因此,我们有很多单元、集成和验收测试,让我们知道我们的代码库是否按预期工作。不用说,如果没有这些测试给我们不断的反馈,我们现在就无法生存 我们团队中的开发DBA使用复杂的逻辑编写表视图。他在没有单元测试的情况下开发这些工具,当他进行后续开发时,这些工具总是会中断,从而导致软件开发团队的挫败感 我的问题是,是否鼓励DBA在敏捷环境中工作时使用TDD实践?DBA是否有测试框架允许他们以这种方式工作?我们使用IBM的DB2数据库;该数据库是否有任何测

我公司的软件开发团队使用TDD和BDD实践进行开发。因此,我们有很多单元、集成和验收测试,让我们知道我们的代码库是否按预期工作。不用说,如果没有这些测试给我们不断的反馈,我们现在就无法生存

我们团队中的开发DBA使用复杂的逻辑编写表视图。他在没有单元测试的情况下开发这些工具,当他进行后续开发时,这些工具总是会中断,从而导致软件开发团队的挫败感


我的问题是,是否鼓励DBA在敏捷环境中工作时使用TDD实践?DBA是否有测试框架允许他们以这种方式工作?我们使用IBM的DB2数据库;该数据库是否有任何测试框架,以允许以TDD方式开发数据库视图?

在过去,我使用了两种方法:

  • 在应用程序中有一个非常薄的数据访问层,并围绕该层编写测试。换句话说(假设您的dba使用存储过程),对于每个新的存储过程,都会编写一个访问该存储过程的方法,并创建一个测试,以适当地执行该存储过程(或者更好,先测试)。这很好,因为它很容易与测试跑步者集成。您可以使用事务回滚测试,而不会产生副作用

  • 另一种选择是使用本机SQL测试框架。我已经评估了哪个是SQL Server框架,因此不适合您的情况,但该方法是可靠的,并且可能有适合DB2的框架


  • 在不同类型的数据库中,有几种测试例程的框架。其中一些遵循xUnit规范,这允许在数据库级别进行类似jUnit的测试

    对于DB2,有一个称为db2unit的框架:

    使用此框架,您可以像在jUnit中一样比较对象(数字、日期、布尔值、字符串等)


    您可以通过捕获错误代码将数据库级测试的结果包括到全局测试中,这可以包括在持续集成系统中。db2unit使用Travis CI进行自我测试。

    据我所知,没有数据库测试框架,但我认为您的DAO(或您正在使用的任何数据库抽象方法)单元测试应该很好地涵盖数据库更改。例如,有针对数据库的单元测试框架,并且还引入了一个框架。然而,我最近与之交谈的大多数DBA似乎不像软件开发人员那样使用agaile实践(也许我没有与正确的DBA交谈!)。至于测试DAOs/DAL,我们是通过集成测试来实现的,但正如我在这篇文章中所说的,DBA是否也会在Scrum Sprint(例如)的开发人员之前使用单元测试来查看错误。我想知道如何测试视图?在执行定义或值时,您将“断言”什么?@AngocA DBA的我使用的是创建视图,其中一些列包含通过处理其他相关表中的数据计算的值。因此,对视图的测试可以是断言某些视图列值与预期值相同。@Fresh就我理解您的评论而言,您真正想要断言的是查询视图的结果集,而不是视图本身,因为它没有数据。我说的对吗?谢谢你的回复。关于第1点),我们的DBA编写DB视图,我们可以编写单元测试来验证表视图中可见的内容是否符合预期。我认为,如果我们这样做了,然后鼓励DBA关注定期运行的测试仪表板,那么他们就可以看到他们所做的更改是否违反了预期。对于2),这看起来和中的测试框架一样好。当我重新使用SQL Server时,我必须使用这些+1对于db2unit的引用,在我写这个问题时没有创建它。看起来很有希望,我将把这些信息传递给我所使用的DB2 DBA。