我公司的软件开发团队使用TDD和BDD实践进行开发。因此,我们有大量的单元,集成和验收测试,让我们知道我们的代码库是否按预期工作。毋庸置疑,如果没有这些测试给我们不断的反馈,我们现在就无法生存。
我们团队的开发DBA使用复杂的逻辑编写表视图。他在没有单元测试的情况下开发它们,并且当他进行后续开发时它们总是会中断,从而导致软件开发团队感到沮丧。
我的问题是,在敏捷环境中工作时,是否鼓励DBA使用TDD实践? DBA是否有测试框架允许它们以这种方式工作?我们使用IBM的DB2数据库;是否存在此数据库的任何测试框架,以允许以TDD方式开发数据库视图?
答案 0 :(得分:1)
过去我使用过两种方法:
在应用程序中拥有一个非常精简的数据访问层并围绕它编写测试。换句话说(假设你的dba使用了sprocs),对于每个新的sproc,都会编写一个访问它的方法,并创建一个适当地运行它的测试(或者更好,先测试)。这很好,因为它可以轻松地与测试跑步者集成。您可以使用事务来回滚测试而没有副作用。
另一种选择是使用本机SQL测试框架。我已经评估了tsqlt这是一个SQL Server框架,因此在您的情况下不合适,但该方法是可靠的,并且可能有适当的DB2框架。
答案 1 :(得分:1)
有几个框架可以测试不同类型的数据库中的例程。其中一些遵循xUnit规范,这允许在数据库级别进行类似jUnit的测试。
对于DB2,有一个名为db2unit的框架:https://github.com/angoca/db2unit
使用此框架,您可以像在jUnit中一样比较对象(数字,日期,布尔值,字符串等)。
您可以通过捕获错误代码将数据库级别测试的结果包含到全局测试中,这可以包含在Continuous Integration系统中。 db2unit使用Travis-CI进行自我测试。