docker 容器测试网络
在最近几个月中,我一直在帮助一家公司改善其自动化测试实践。 除了在TDD上进行指导之外,我还有机会从事由多个服务组成的项目,在该项目中,我能够使用Docker进行一些服务测试。 这是我第一次在项目上真正使用Docker,我很高兴它在分布式环境中进行服务测试很有用。 在这篇文章中,我将介绍我在此过程中做过的一些事情以及学到的一些东西。
动机
众所周知,在最低级别进行测试会非常有益,因为这也是测试金字塔的象征。
- 单元测试可以更快地执行
- 更容易找出测试失败的原因
但是经常进行单元测试是不够的。 实际上,故障通常隐藏在组件的集成中,无论是技术上的还是组件的交互中。
如果模拟了所有远程呼叫,则您可能永远不会注意到您以错误的方式配置了HTTP客户端。 如果您从未在真实的数据库上运行测试,则可能永远不会注意到事务从未提交过,或者用于迁移表的sql仅在内存数据库中有效。
解决此问题的一种方法是构建端到端测试,以通过前端驱动应用程序并在系统上执行实际的用户行为。 起初这听起来像是个好主意,但通常会导致系统非常脆弱。 测试可能一天会通过,而另一天可能会失败。
- 某些网段可能不可用
- 其他一些应用程序团队可能已将其数据库移至暂存环境
- 一百万其他事情可能已经发生
但是,您只能看到测试失败,因此您必须调查原因。
如果仅隔离测试某些组件,则可以进行更可靠的测试。 启动具有所有必需依赖项的服务,对其执行请求,并查看结果是否符合预期,包括响应,数据库中的条目,队列中的消息或其他任何内容。