管理大型应用程序的测试数据

时间:2014-05-17 11:05:22

标签: unit-testing tdd test-data large-data

我有一个相对较大的web api应用程序,即它目前有大约300个表。

应用程序的编写方式使得它不使用任何存储过程,并且旁边没有视图,即业务逻辑全部在应用程序代码中。它使用存储库模式,因此为单元测试创​​建模拟数据相对容易。

然而,管理模拟数据非常困难,而且任何特定的个人都很难深入了解已存在的数据。我们已经尝试将测试数据移动到模拟工厂中,以便将其存储在单个文件中,然后根据需要加载各种测试(即,给定的测试只需要某个数据子集,因此它只会要求那个子集)。

尽管如此,数据管理仍然相当复杂,断言从应用程序返回的数据也很脆弱。例如,假设我们的模拟数据中定义了10个客户,其中2个被标记为非活动。我们可能有一个测试用例,它测试应该返回所有活动客户的方法应该返回8个实例。但是,如果开发人员必须向我们的测试数据添加新实例,这将破坏现有的测试/断言。

有没有人有管理这方面的经验,或者有任何关于此事的文章?

1 个答案:

答案 0 :(得分:0)

听起来您正在创建用于多个测试的测试数据。这不是最好的解决方案。您应该在每个测试的基础上创建所需的数据。测试数据构建器模式应该在这里帮助您。这个link描述了如何使用测试数据构建器。此外,Mark Seemann编写了一个库,可以帮助构建这种称为autofixture的模拟数据。

他在advanced unit testing上有关于PluralSight的精彩视频。如果您有权访问PluralSight,我建议您观看视频。