【问题标题】:Integration testing with dependency on outside service依赖外部服务的集成测试
【发布时间】:2011-10-26 16:56:42
【问题描述】:
我目前正在为我的系统编写集成/功能测试。部分功能是通过 http(我运行的另一个系统)访问 Web 服务。
我应该如何设置 Web 服务的测试实例以进行良好的功能测试?我想让我的系统使用实时生产数据针对此服务运行。
Web 服务是否应该是一个独立的实例,它始终具有我手动重新加载的实时生产数据(可能会在我每次启动它的实例时重置)?
是否应在每次测试时设置和拆除 Web 服务?
处理这种情况有哪些常见做法?
【问题讨论】:
标签:
unit-testing
integration-testing
functional-testing
fixtures
【解决方案1】:
首先请确保您知道Functional Testing 和Integration Testing 之间的区别。无需进行集成测试所需的主要工作(实例化 Web 服务、访问数据库),您就可以进行非常好的功能测试。基本上Mocking 技术甚至可以很好地模拟数据层响应和 Web 服务行为(我相信对于大多数测试用例来说,像 HTTP 作为传输 这样的细节可以忽略)
对于这样的集成测试,我建议使用单独的 SIT 环境,其中包括单独的 Web 服务和数据库。
Web 服务是否应该是一个始终拥有实时生产数据的独立实例
我手动重新加载(可能每次我启动它的实例时都会重置)?
是的,它应该是完全独立的,但可以手动生成/准备数据。例如,您可以准备一些数据集来测试一些预定义的测试用例,这可以是在实际测试运行之前部署到 SIT 数据库实例然后在测试 TearDown 中清理的测试数据集。
是否应在每次测试时设置和拆除 Web 服务?
是的,测试应该彼此隔离,因此不应该以任何方式影响每个测试。