基于消费者驱动契约测试

2019-01-09  本文已影响0人  一个测试员的日常

在微服务架构下,不同服务由不一样的团队开发和维护。如果个别服务由某些原因升级后需要调整接口,还没有改造完成,影响到服务消费方正常使用接口。

Ian Robinson提出Consumer-Driver Contracts,消费者驱动契约,简称CDC。能解决上述所描述的问题,这里契约是指服务消费者和服务提供者约定,消费者消费契约,提供者提供契约。

在没有加入契约时,微服务集成测试调用流程如图1,如果服务提供者返回响应内容发生改变,消费者无法正常集成测试了。

图1

加入契约,微服务集成测试流程如图2,在开发过程中,消费者无须等到服务提供者开发完成,就能利用契约能进行预集成测试,同时,能降到联调接口成本。


图2

上述主要说明加入契约的好处,我们要做到知其然知其所以然,看看下面消费者驱动契约的流程图:


图3

下面给大家解读流程图。

consumer使用producer发布stubs.jar进行接口测试,也就是说consumer接收到响应内容是stub.jar返回。在consumer服务要加入pring-cloud-starter-stub-runner依赖包,目的为了能够调用stubs.jar包含的契约。

producer需要生成stubs.jar,提供consumer使用。通过contract maven插件生成stub jar包,然后install到本地。在生成之前需要配置groovy文件,groovy文件主要包括请求信息和响应内容, groovy文件可以理解为契约内容。在producer服务要加入spring-cloud-starter-contract-verifier,为了验证是否符合契约。

搭建消费者驱动契约需要用到:


参考资料:Consumer-Driven Contract Testing with Spring Cloud Contract

上一篇下一篇

猜你喜欢

热点阅读