Contract Testing - 契约测试

Why

多用于微服务架构,当不同服务之间需要互调API时,传统测试无法覆盖,需要通过制定一个类似通信协议(这里叫契约)来确保内部服务正常通信

What

契约测试会测试外部服务的边界,以查看服务调用的输入/输出,并测试该服务能否符合契约预期。将所有的消费者契约测试结果集合起来,有助于维护者在需要时对服务作出变更(不影响消费者),并十分有助于在定义新服务提供支持。

  • 角色:消费者(Consumer) & 生产者(Provider)
  • 思想:Consumer Driven (需求驱动)
  • 具体实现:Consumer 端提供一个类似“契约”的东西(如json 文件,约定好request和response)交给Provider 端,告诉Provider 有什么需求,然后Provider 根据这份“契约”去实现
  • 具体情形:

假设一个Provider被多个Consumer调用时,当Provider变化时,需测试对消费端得影响
消费端/生产端 服务升级时,比如由1.0升级至2.0,那么2.0要能覆盖1.0的需求测试

How

作为数据的生产者,需要确保其提供的数据能够符合消费者的要求。作为数据的消费者,需要确保从生产者获取数据后,能够有效地被处理。

具体流程图

Usage

可以用Pact工具来自动化把测试生成json文件作为多个服务通信的契约
关于Pact的用法参见https://github.com/SEEK-Jobs/pact-net

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,833评论 19 139
  • 正如大家所知,最初QA都是手动执行测试用例,开发人员每修改一个版本,QA就要手动测试一遍,随着功能的不断增加,手动...
    ThoughtWorks阅读 7,969评论 1 18
  • 背景介绍 Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下: 以时间复杂度为O...
    高广超阅读 14,406评论 8 167
  • 本文转载自http://dataunion.org/?p=9307 背景介绍Kafka简介Kafka是一种分布式的...
    Bottle丶Fish阅读 10,818评论 0 34
  • 杏花满天 孤身一人到岛城工作已经两年的时间了,又开始了跟读大学时一样的生活,每天两点一线。严格的说,这是此生第一次...
    尔峰阅读 3,188评论 2 4

友情链接更多精彩内容