如何进行测试微服务?

2023-10-26

在许多方面,测试微服务应用程序与测试使用任何其他体系结构构建的应用程序没有什么不同。微服务面临的独特挑战是组成应用程序的服务数量之多,以及服务之间的依赖关系数量。

作为用于构建复杂系统的体系结构,微服务在开发社区中获得了巨大的关注。尽管人们开始意识到这并不是解决所有应用程序体系结构问题的灵丹妙药,但是那些与依赖项和扩展性相关的挑战共享的应用程序可以从中受益匪浅。

微服务的采用正在上升,但是与了解如何测试微服务相关的斗争也在增加。ThoughtWorks的Toby Clemson在列举您可能希望在微服务体系结构中使用的测试策略方面做得非常出色(请参阅他的文章,以获取有关您可能要创建的不同测试类型的详尽概述),但是有关如何建立和维护那些不同种类的测试仍处于起步阶段。

但是在许多方面,测试微服务应用程序与测试使用任何其他体系结构构建的应用程序没有什么不同。微服务使用众所周知的技术,例如REST或队列,为此软件行业已经拥有完善的测试工具和最佳实践。微服务面临的唯一挑战是构成应用程序的服务数量之多,以及服务之间的依赖性。此外,即使微服务依赖的其他微服务不可用或响应不正确,每个微服务仍需要正常运行。

微服务在相互交互时通常遵循两种模式:编排和响应式(编排)。许多微服务使用组合的“混合”方法。在本文中,我将提供一些策略来解决在使用这些不同模式的微服务创建自动化测试时出现的一些挑战,重点是针对单个微服务的测试(而不是整个应用程序的端到端测试) 。

 

测试精心设计的微服务

使用业务流程的微服务将对外部服务或依赖项进行一个或多个显式调用。这些调用通常使用同步请求-响应流,并且通常将访问基于REST的服务。如果需要按特定顺序调用服务,则在收到对前一个服务的调用的响应之前,不会进行对后一个服务的调用。由于一项服务显式调用另一项服务,因此它们紧密耦合。

在上面显示的示例中,为投资组合微服务创建和执行测试具有挑战性,因为投资组合微服务依赖于帐户和报价微服务,而依赖项需要与投资组合微服务一起部署在测试环境中。Quotes服务依赖于第三方服务来检索实时股票价格,并且该服务返回的数据始终在变化。

依赖第三方服务或由不同团队开发的服务极大地增加了测试环境的复杂性。此外,还需要测试投资组合服务的任何意外行为,例如,当“帐户”和/或“报价”服务不可用,响应缓慢或响应意外数据时。重要的是,必须使这些服务以不同的意外行为响应,以验证Portfolio微服务正确处理了错误情况。

服务虚拟化急救

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何进行测试微服务? 的相关文章

随机推荐

  • Linux 抓包工具 tcpdump

    查看当前版本 tcpdump help 抓取指定端口包 tcpdump i eth0 c 10 udp or tcp port 1111 XX vvv 命令说明 c 10 抓10个包 udp or tcp 协议方式 可使用 tcp 或 ud
  • 自动化运维工具-Ansible(3)-模块介绍

    目录 Ansible命令格式 Ansible常用模块 Ansible模块如何搜索 Ansible模块保存位置 一 Ansible命令格式 Ansible 比喻为工人 Servers 目标机器 单个机器或者机器组 Module names 根
  • GoT:用大语言模型解决复杂的问题

    GoT 用大语言模型解决复杂的问题 摘要 介绍 背景和符号表示 语言模型和上下文学习 Input Output IO Chain of thought CoT Multiple CoT Tree of thoughts ToT GoT框架
  • 西门子S7-200 SMART 入门级项目案例详解

    这里写自定义目录标题 一 起保停控制 二 单按钮控制 三 正反转控制 四 混合控制 五 顺序控制 一 起保停控制 二 单按钮控制 三 正反转控制 四 混合控制 五 顺序控制
  • AIGC:从入门到精通

    AI生成内容 AIGC 人工智能生成内容 是一种新型的内容创作方式 它继承了专业生产内容 PGC Professional generated Content 和用户生成内容 UGC User generated Content 的优点 并
  • SVN+Gitee配置版本控制库

    软件 TortoiseSVN Downloads TortoiseSVN Gitee https gitee com 操作步骤 在Gitee中新建仓库 设置仓库名以及模板 Readme文件 启用SVN访问 在仓库的管理页面 选择 功能设置
  • 分库分表入门

    垂直分表 垂直分表就是在同一数据库内将一张表按照指定字段分成若干表 每张表仅存储其中一部分字段 垂直分表拆解了原有的表结构 拆分的表之间一般是一对一的关系 优势 充分提高了热点数据的操作效率 商品信息的操作的高效率不会被商品描述的低效率所拖
  • 【第04例】IPD进阶

    目录 前言 专栏目录 内容详解 IPD 相关专栏推荐 华为流程体系 CSDN学院相关内容
  • pytorch使用masked掩盖某些值(筛选值)

    mask主要用来根据一定条件 筛选出一部分值来 基本案例 import torch x torch randn 3 4 mask 1 x ge 0 5 大于0 5的为True 小于0 5的值为False mask 2 torch BoolT
  • Deeplabcut教程(二)使用

    因为很久没用这个了所以就一直没更使用教程 写的安装教程收到好几条私信要使用教程 这几天在帮一个朋友跑这个 于是就有了这个使用教程 安装教程 Deeplabcut教程 一 安装 GPU CPU版本 纯新人向 CSDN博客 Step 1 启动
  • ubuntu交叉编译工具arm-linux-gcc安装

    1 安装交叉编译工具 arm linux gcc 安装包4 4 6 TQ210 release 20120720 tar bz2 环境 ubuntu 20 版 已换清华源 1 1解压文件 提取解压1 1 6到home目录 1 2配置环境 打
  • Unkonw column ‘xxx‘ in ’field list‘错误

    Unkonw column xxx in field list 错误 当使用jpa进行数据库操作时 数据库中的数据为 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img 6I9QHwpX 1680000912061
  • Anaconda/jupyter notebook修改虚拟环境名称

    1 找到用户文件夹下的txt文件 比如C Users your username conda environments txt windows平台 找到当前主用户文件夹 有一个 conda文件夹 里面有一个environments txt文
  • 我的2012移动开发年度总结——革命的一年

    2012年 是我在移动行业畅游的一年 这一年发生了很多事 人生三大事之一结婚 评选csdn专家荣誉称号 坚持写博客写了一年 对手机这个行业总算有了个大体的认识 但是还有一些不顺人意的事 这里就不说了 但有一件事不得不说 在这家公司上班以来
  • QWidget尺寸限定

    1 控件只能在最小和最大之间进行调整 不能超过范围 直接宽高同时设置 window setMinimumSize 200 200 window setMaximumSize 500 500 app QApplication sys argv
  • unity3D游戏开发十之粒子系统

    Shuriken粒子系统是Unity3 5版本新推出的粒子系统 它采用模块化管理 个性化的粒子模块配合粒子曲线编辑器使用户更容易创作出各种缤纷复杂的粒子效果 依次打开菜单栏中的GameObject gt Greate Other gt Pa
  • win10 python如何安装requests———超详细教程

    第一步 先检查你的python安装路径下的Scripts文件里有没有东西 我一开始查看时发现竟然是空白的 去搜寻了答案 python安装文件中 Scripts文件夹中没有文件目录 空白 注 我只是操作了该教程中的第二步 在cmd中输入pyt
  • 区块链的核心:共识机制

    我在上一篇 区块链到底是怎么运行的 一文中 提到了 打包交易 和 广播交易 这两个概念 其实 以上谈到的两个内容正是区块链最核心的技术内容之一 共识机制 在今天的文章中 我们就展开聊一聊区块链共识机制到底是什么 以及区块链的共识过程到底是怎
  • 几种排序算法比较

    前言 排序是按照关键字的非递减或非递增顺序对一组记录重新进行排列的操作 是对无规律的一组序列转化为递增或递减的操作 排序的稳定性 当排序记录中的关键字都部相同时 则任何一个记录的无序序列经过排序后得到的结果都唯一 反之 若存在两个或多个关键
  • 如何进行测试微服务?

    在许多方面 测试微服务应用程序与测试使用任何其他体系结构构建的应用程序没有什么不同 微服务面临的独特挑战是组成应用程序的服务数量之多 以及服务之间的依赖关系数量 作为用于构建复杂系统的体系结构 微服务在开发社区中获得了巨大的关注 尽管人们开