自动化测试高手课
柳胜
原甲骨文高级开发经理
16849 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 34 讲
开篇词 (1讲)
自动化测试高手课
15
15
1.0x
00:00/00:00
登录|注册

14|集成测试(三):护航微服务集群迭代升级

你好,我是柳胜。
从第七讲开始,我们的 FoodCome 系统一步步演变。可以看到,当 FoodCome 从一个单体应用发展成一个服务集群的时候,它的内部服务,按功能可以划分出前端和后端、上游和下游等等
这就像传统社会走向现代化,开始分出第一产业、第二产业和第三产业,接着逐渐出现精细分工,产生了各种专业岗位,共同协作来完成整个社会的运转。这么复杂的社会,是靠什么协调不同的职业呢?靠的是大家都遵守法律和契约。
而在微服务集群的世界,也是一样的道理。各个服务之间通过契约来交互协作,整个系统就能运转起来。所以,契约就是微服务世界里一个重要的概念。契约是怎么用起来的呢?
这就绕不开两个关键问题,第一,契约的内容是什么?第二,谁来保障,怎么保障契约的履行?今天我们就带着这两个问题来学习服务的契约,学完这一讲之后,你就知道怎么做微服务的集成测试了。

契约的内容

在“微服务测什么”一讲中(第八讲),我们已经整理出来了订单服务的契约。我带你复习一下当时我们整理出来的两个接口规范,我把它们贴到了后面。
一个是 RestAPI,完成用户下单的功能,OpenAPI 接口定义如下:
"/api/v1/orders":
post:
consumes:
- application/json
produces:
- application/json
parameters:
- in: body
name: body
description: order placed for Food
required: true
properties:
foodId:
type: integer
shipDate:
type: Date
status:
type: String
enum:
- placed
- accepted
- delivered
responses:
'200':
description: successful operation
'400':
description: invalid order
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了微服务集群迭代升级中的契约概念和消费者驱动契约测试的实践。作者通过比喻微服务集群的协作方式与现实社会的合同制度相似,强调了契约在微服务世界中的重要性。契约内容包括RestAPI和AsyncAPI接口定义,服务提供者和消费者基于契约进行开发协作,包括契约的建立、实现和验证三个阶段。消费者驱动契约测试的玩法是消费者定义契约并开发测试脚本,服务提供者根据测试脚本进行验证。文章还介绍了RestAPI的契约测试和消费者端的集成测试实践,以及Spring Cloud工具的应用。通过契约测试,消费者和服务提供者能够保持同步,确保系统的稳定性和高效运转。文章还提到了基于Message的契约测试和Spring Cloud Contract的应用,为读者提供了深入理解契约测试思想和实际落地的示例。整体而言,本文为读者提供了微服务集群迭代升级中契约概念和消费者驱动契约测试的全面介绍,以及相关工具的实际应用,对于从事微服务开发和集成测试的技术人员具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《自动化测试高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • swordman
    在客户端领域(如移动端App,PC端App),当使用了组件化架构后,也会涉及到内部服务的问题:一个组件做了变更,影响了原先约定的接口,其他组件的部分功能就用不了了。这种问题有时候很隐蔽,没有契约测试做保障,经常要到版本提测后期才发现。老师介绍的工具Pact和SpringCloud,都是基于服务端的,不知道在客户端领域,是否也有类似的工具来自动生成契约测试代码?还是要根据这套方法论,自行进行开发?谢谢!

    作者回复: 这是一个很好的视角。而且这里会涉及到几个领域的工具集合。 1. 要理一理组件之间的调用关系是怎样的? 你需要能够monitor和track生产环境发生的API calls,然后用数据来分析出哪些API优先级高,调用的数据都是什么。在这个环节可用的工具是usage tracker系列,在java,go,python下都有。 2. 怎么来测试这些API? 这里可以采用自己开发API自动化测试工具,或者流量回放工具。回放也有API级的,网络流量级的。

    2022-06-12
    2
  • lerame
    这一章看不太懂,契约代码是工具生成的,还是人为根据开发的代码编写的?如果是生成的,是要根据契约代码写集成测试代码吗?如果是人为编写的?是工具会根据契约代码生成集成测试代码吗?还是说两者都是工具生成的?
    2022-12-19归属地:广东
    1
  • ifelse
    学习打卡
    2024-02-18归属地:浙江
  • 王小卡
    通过spring cloud生成的给消费者用的jar包。jar的启动后的服务指向的是实际项目服务吗?还是等同于mock了个服务。只不过有契约文件关联,可以做到变化状态的感知?
    2023-07-05归属地:辽宁
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部