集成测试实现

Rob*_*nik 4 asp.net-mvc integration-testing types

我有一个三层应用程序

  • 网络应用程序(这里简单的asp.net mvc),
  • 商业服务
  • 数据存储库

我知道有四种类型的集成测试:

  • 自顶向下
  • 自下而上
  • 三明治(前两者的组合)
  • 大爆炸

我知道我会像单元测试一样编写大爆炸测试,但没有任何嘲弄,所以我也会使用后端数据库......

问题

我不知道如何编写其他类型的集成测试?

  1. 如何编写非bigbang类型的集成测试?
  2. 集成测试是否应该等于单元测试,这意味着相同数量的测试,但是没有模拟测试?或者这些测试应该测试完全不同的东西?

任何人都可以提供任何信息(如果有的话)或者它是否真的可行吗?

egl*_*ius 5

我建议这样做:

  1. 单元测试/不得打击任何外部资源
  2. 集中的集成测试(我想这是自下而上的).您应该拥有与外部资源非常接近的代码,并且它的唯一责任是与之集成.不要尝试对这些类进行单元测试,而是进行非常集中的测试,这些测试会触及真实资源,而不必处理系统中的其余逻辑.保持此集成类尽可能薄
  3. 全系统测试(我猜大爆炸).我的意思是UI和一切(或者如果那是你的端点的API).确保你使用之前的测试尽可能多地覆盖,这更像是简单的检查,底层的部分被适当地连接起来.

根据您的系统,您可能想要或不想在代码的顶层使用集成测试来补充3,但不涉及UI.无论您采用哪种方式,都要确保通过单元和集中式集成测试获得更全面的覆盖,因为测试顶层的各种行为的复杂程度可能会非常快速地失控.

集成测试是否应该等于单元测试,这意味着相同数量的测试,但是没有模拟测试?或者这些测试应该测试完全不同的东西?

正如我在1和2中提到的那样,当那些测试不同的东西时它是最好的.这取决于系统,但我通常期望单元测试的数量是集成测试数量的几倍.对于完整的系统测试,请确保您已经足够,以便您可以正确地挂钩所有部分,但不要太多以至于无法测试每个方案.