依赖于外部服务的集成测试

时间:2011-10-26 16:56:43

标签: unit-testing integration-testing functional-testing fixtures

我目前正在为我的系统编写集成/功能测试。部分功能是通过http(我运行的另一个系统)访问Web服务。

我应该如何设置Web服务的测试实例以进行良好的功能测试?我想让我的系统使用实时生产数据运行此服务。

Web服务是否应该是一个独立的实例,它始终具有我手动重新加载的实时生产数据(可能每次启动它的实例时都会重置)?

每次测试都应该设置和拆除Web服务吗?

处理这类情况有哪些常见做法?

1 个答案:

答案 0 :(得分:2)

首先请确保您了解Functional TestingIntegration Testing之间的区别。无论集成测试(实例化Web服务,访问数据库)所需的主要工作,您都可以做很好的功能性测试。基本上Mocking技术甚至可以很好地模拟数据层响应和Web服务行为(我相信大多数测试用例都可以忽略像 HTTP作为传输这样的细节)

对于此类集成测试,我建议使用单独的SIT环境,其中包括单独的Web服务和数据库。

  

Web服务是否应该是始终具有实时生产数据的独立实例   我手动重新加载(每次启动它的实例时可能会重置)?

是的,它应该完全分开,但可以手动生成/准备数据。例如,您可以准备一些允许测试一些预定义测试用例的数据集,这可能是在实际测试运行之前部署到SIT数据库实例的测试数据集,然后在测试TearDown中进行清理。

  

每次测试都应该设置和拆除Web服务吗?

是的,测试应该彼此隔离,所以不应该以任何方式影响每个测试。