集成测试实现

时间:2010-09-30 13:31:51

标签: asp.net-mvc types integration-testing

我有一个三层应用

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

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

  • 自上而下
  • 自下而上
  • 三明治(前两者的组合)
  • big bang

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

问题

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

  1. 如何编写非bigbang类型的集成测试?
  2. 集成测试是否应该等于单元测试,这意味着相同数量的测试,但是没有模拟测试?或者这些测试应该测试完全不同的东西吗?
  3. 是否有人可以提供任何信息(如果有的话)或是否真的可行呢?

1 个答案:

答案 0 :(得分:5)

我建议这样做:

  1. 单元测试/不得打击任何外部资源
  2. 专注于集成测试(我想这是自下而上的)。您应该拥有与外部资源非常接近的代码,并且它的唯一责任是与之集成。不要尝试对这些类进行单元测试,而是进行非常集中的测试,这些测试会触及真实资源,而不必处理系统中的其余逻辑。保持此集成类尽可能薄
  3. 全系统测试(我猜大爆炸)。我的意思是UI和一切(或者如果那是你的端点的API)。确保你使用之前的测试尽可能多地覆盖,这更像是简单的检查,底层的部分被适当地连接。
  4. 根据您的系统,您可能想要或不想在代码的顶层使用集成测试来补充3,但不涉及UI。无论您选择哪种方式,都要确保通过单位和方式获得更全面的覆盖范围。集中的集成测试,因为在顶层测试各种行为的复杂程度很快就会失控。

      

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

    正如我在1& 2,最好的时候那些测试不同的东西。这取决于系统,但我通常期望单元测试的数量是集成测试数量的几倍。对于完整的系统测试,请确保您已经足够,以便您可以正确地说明所有部分已被正确连接,但并不是因为它太复杂而无法测试每个场景。