微服务测试怎么做

news2024/12/23 20:07:26

开发团队越来越多地选择微服务架构而不是单体结构,以提高应用程序的敏捷性、可扩展性和可维护性。随着决定切换到模块化软件架构——其中每个服务都是一个独立的单元,具有自己的逻辑和数据库,通过 API 与其他单元通信——需要新的测试策略和新的测试工具。

测试微服务是微服务应用程序过程的关键部分:您需要确保您的代码不会在单元内中断,微服务中的依赖项继续工作(并快速工作),并且您的 API 符合定义的协议,然而,由于许多微服务采用持续交付模式构建以一致地构建和部署功能,因此开发人员和 DevOps 团队需要准确可靠的测试策略才能对这些功能充满信心。

那么微服务存在哪些不同类型的测试,它们如何适用于软件的其他领域,它们有什么好处?众所周知的“测试金字塔”可以为接下来这些测试提供一个测试框架。

根据软件工程原理的著名作者 Martin Fowler 的说法,“‘测试金字塔’是一个隐喻,将软件测试分组到不同粒度的桶中。”

金字塔的不同层次定义为:

  • 单元测试:测试服务的一小部分,例如类。

  • 组件测试:验证单个服务的行为。

  • 集成测试:通过测试服务的适配器来验证服务是否可以与基础设施服务(例如数据库和其他应用程序服务)进行交互。

注意:

某些版本的测试金字塔会切换组件测试和集成测试的顺序。

  • 端到端测试:验证整个应用程序的行为。

结合多种微服务测试策略可以提高测试覆盖率和对软件的信心,同时也使整体维护更易于管理

单元测试

单元测试旨在确保服务的最小部分在微服务设计阶段确定的规范内按预期执行。由于微服务将应用程序功能分解为数百个可测试的小型功能组件,因此单元测试会单独且独立地处理每个组件。最好在一个类或一组相关类的级别上进行单元测试。

单元测试可以通过使用测试替身(例如 fakes、stubs、mocks、dummies 和 spies)来切断组件的依赖关系。例如,测试人员可以模拟您的依赖项的响应并“假设他们执行 [X]”,其中 [X] 是正确响应、失败响应等。

组件测试

组件测试验证给定服务是否正常运行。由于范围仅限于整个微服务架构的一部分,组件测试通过隔离系统内的服务来检查所选微服务(可以由几个类组成)的端到端功能,将其依赖项替换为测试双打和/或模拟服务

您可以为将被划分为测试用例的每个组件创建测试环境。它可能涉及测试资源行为,例如性能测试、确定内存泄漏、结构测试等。

集成测试

集成测试验证独立开发的组件/微服务在连接时是否正常工作。它测试组件之间的通信路径和交互并发现错误。

集成测试的编写和运行变得更加困难和耗时。因此,拥有出色的生产 QA(质量保证)实践将有助于确保顺利进行。

合同测试

在测试金字塔中调用合约测试至关重要。接触测试通过确保它们可以相互通信来检查独立单元(如两个微服务)的兼容性。合同测试测试 API 的工作方式,这是微服务相互交互的方式。

合约测试检查这些微服务的边界和交互,并将它们存储在合约中,然后可以将其用作双方未来如何交互的标准。它要求双方就允许的交互集达成一致,并允许随着时间的推移而演变。

端到端测试

端到端测试(E2E 测试)是最终测试阶段,涉及从头到尾测试应用程序的工作流程以实现完整的用户旅程。

这些测试可以自动化,但 E2E 测试仅针对超关键流进行。它在微服务架构中不能很好地扩展,因为它需要启动许多微服务并将它们连接起来,这对于自动化和维护是具有挑战性的。因此,它仅用于测试特定微服务之间的关键交互。

要使用的微服务测试工具,包括按需登台环境

开发人员和 QA 团队对微服务测试工具有不同的偏好,尤其是对于这些不同类型的测试。以下是一些流行的概要。许多是按需登台环境,它们是动态创建的,由 CI/CD 管道触发。使用按需登台,一旦开发人员完成登台环境,登台环境以及任何配置、环境或安装不一致都会被破坏。

releasehub

该平台是一个按需登台环境,具有可访问的协作共享功能。您可以将应用程序的存储库连接到 Release,然后为每个拉取请求和每次代码推送的更新创建临时环境。此外,可以为集成、传统登台或 QA/UAT 用例创建环境。开发人员和 QA 可以完全访问环境以进行测试和调试,并且产品团队、设计团队和利益相关者可以看到功能的发展并尽早并经常提供反馈。

WebApp.io(以前的 LayerCI)**

WebApp.io 是一个代码审查自动化平台,允许为全栈 Web 应用程序提供按需审查环境。您可以创建自定义拉取请求。一旦您创建了堆栈的一个副本,您可以立即复制它以自动运行 e2e 测试并集成到 CI/CD 工作流中。WebApp 将自动在 GitHubGitLab 或 BitBucket 中注释您的拉取请求。

Vercel

Vercel 是一个用于前端框架、无服务器功能和静态站点的云平台,旨在与预先存在的内容和数据库集成。它托管的网站和 Web 服务可即时部署、自动扩展且无需监督,所有这些都无需配置。它还提供边缘位置托管和缓存。它类似于 Amazon Web Services (AWS) Lambda 或 Netlify。

Pact

Pact 是一个代码优先的消费者驱动的合同测试工具,适用于编写代码的开发人员和测试人员。它使用合同测试来测试 HTTP 和消息集成——验证应用程序间消息是否符合共同理解的方法,并记录在合同中。这种合同测试方式减少了大型单元测试

Apache JMeter

Apache JMeter 是测试人员常用的基于 Java 的性能测试工具。它是一个开源平台,可以用作负载测试工具,用于分析和测量 Web 应用程序的性能

Hoverfly

Hoverfly 是一个自动化的、开源的 API 通信模拟工具用于专门的集成测试。用户可以测试 API 在速率限制和/或网络延迟等场景中的反应。

Grafana

Grafana 提供免费的指标可视化和分析。仪表板让开发人员可以查看时间序列数据,以观察微服务在实时流量中的响应方式。

Gatling

Gatling 是一个用 Scala 编写的负载测试工具。它可以在多个平台上运行模拟,然后报告活跃用户数量和响应时间等指标。

结论

微服务的测试、调试和维护部分通常是使用微服务架构中最具挑战性但必不可少的部分。希望以上信息可以帮助您了解不同的测试类型和工作的最佳工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1218062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关系代数、SQL语句和Go语言示例

近些年,数据库领域发展日新月异,除传统的关系型数据库外,还出现了许多新型的数据库,比如:以HBase、Cassandra、MongoDB为代表的NoSQL数据库,以InfluxDB、TDEngine为代表的时序数据[1]库,以Neo4J…

设计模式-代理模式-笔记

动机(Motivation) 在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要远程外的访问等),直接访问会给使用者、或者系统结构带来很多…

【Linux网络】工作环境救急——关于yum安装的5个花式操作

目录 1、只下载不安装,离线安装软件 2、自行打包创建元数据 第一步:先准备好nginx的软件包,放在一个文件夹下 第二步:在本地下载createrepo命令软件,用于创建元信息,这个一定是对包的上一级目录使用命令…

cpolar+LightPicture,将个人电脑改造成公网图床服务器

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进,功能也越来越多,而手机…

QNX Typed memory介绍

文章目录 前言一、什么是 Typed memory二、查看系统已有Typed memory 的方法三、Typed memory 的使用方法1.定义一个packet memory并从系统内存中分出它1.1 as_add()1.2 as_add_containing()2. 从 Typed memory 中申请内存2.1 POSIX method 申请内存2.2 QNX Neutrino method 申…

第9章 K8s进阶篇-持久化存储入门

9.1 k8s存储Volumes介绍 Container(容器)中的磁盘文件是短暂的,当容器崩溃时,kubelet会重新启动容器,但最初的文件将丢失,Container会以最干净的状态启动。另外,当一个Pod运行多个Container时&…

Unity Quaternion接口API的常用方法解析_unity基础开发教程

Quaternion接口的常用方法 Quaternion.Euler()Quaternion.Lerp()Quaternion.Inverse()Quaternion.RotateTowards() Quaternion在Unity中是一种非常重要的数据类型,用于表示3D空间中的旋转。Quaternion可以表示任何旋转,无论是在哪个轴上旋转多少度&#…

C#asp.net考试系统+sqlserver

C#asp.net简易考试系统 sqlserver在线考试系统学生登陆 判断学生是否存在 选择课程名 科目 可以进行答题操作,已经考试的课程不能再次答题, 自动根据课程名对应的题库生成试卷界面 加入选项类容 说明文档 运行前附加数据库.mdf(或sql生成数…

Excel vlookup 如何使用

Excel vlookup 如何使用 打开WX, 搜索 “程序员奇点” Excel vlookup可以说是利器,非常好用的工具,用来查询 Excel 或者进行数据匹配,十分方便。 VLookuP 如何使用,不常用的同学经常容易忘记,这次做个记录&#xff…

2023.11.15 关于 Spring Boot 配置文件

目录 引言 Spring Boot 配置文件 properties 配置文件说明 基本语法 读取配置文件 优点 缺点 yml 配置文件说明 基本语法 读取配置文件 yml 配置不同数据数据类型及 null 字符串 加单双引号的区别 yml 配置 列表(List) 和 映射(…

51单片机应用从零开始(四)

51单片机应用从零开始(一)-CSDN博客 51单片机应用从零开始(二)-CSDN博客 51单片机应用从零开始(三)-CSDN博客 详解 KEIL C51 软件的使用建立工程-CSDN博客 详解 KEIL C51 软件的使用设置工程编绎与连接程序…

SQL注入学习--GTFHub(布尔盲注+时间盲注+MySQL结构)

目录 布尔盲注 手工注入 笔记 Boolean注入 # 使用脚本注入 sqlmap注入 使用Burpsuite进行半自动注入 时间盲注 手工注入 使用脚本注入 sqlmap注入 使用Burpsuite进行半自动注入 MySQL结构 手工注入 sqlmap注入 笔记 union 联合注入,手工注入的一般步骤 …

python趣味编程-5分钟实现一个Flappy Bird游戏(含源码、步骤讲解)

Python 中的 Flappy Bird 游戏可以免费下载开源代码,它是为想要学习 Python 的初学者创建的。 该项目系统使用了 Pygame 和 Random 模块。 Pygame 是一组跨平台的 Python 模块,专为编写视频游戏而设计。 Python 中的 Flappy Bird 代码 – 项目信息 项目名称:Python 中的 Fl…

解决Jira导出csv最大限度是1000的问题

JIRA为了防止过多影响性能, 设置了导出CSV的上线为1000,影响了搜索结果导出以及RestAPI。 可以通过以下配置参数修改此限制: 通过JIRA管理界面的"高级设置 “设置以下参数 系统管理 > 系统 > 一般设置>高级设置找到 jira.sea…

qt Rectangle 使用Gradient设置渐变方向 制作渐变进度条

1.Gradient方向可查看官网 Gradient.Horizontala horizontal gradient Gradient.Verticala vertical gradient ​​ ProgressBar {id: batteryvalue: 0.5width: 150height: 20anchors.centerIn: parentbackground: Rectangle {implicitWidth: battery.widthimplicitHeight:…

Github小彩蛋显示自己的README,git 个人首页的 README,readme基本语法

先上效果👇 代码在下面,流程我放最下面了,思路就是创建一个和自己同名的仓库,要公开,创建的时候会提示小彩蛋你的reademe会展示在你的首页,或许你在这个readme里面的修改都会在你的主页上看到了&#x1f44…

excel导入 Easy Excel

依旧是框架感觉有东西,但是确实是模拟不出来,各种零零散散的件太多了 controller层 ApiOperation(value "导入Excel", notes "导入Excel", httpMethod "POST", response ExcelResponseDTO.class)ApiImplicitParams({…

python+requests接口自动化完整项目设计源码

前言 有很多小伙伴吵着要完整的项目源码,完整的项目属于公司内部的代码,这个是没法分享的,违反职业道德了,就算别人分享了,也只适用于本公司内部的业务。 所以用例的代码还是得自己去一个个写,我只能分享…

【Android】使用XML资源文件存储配置项:降低代码耦合性并提高可重用性

前言 在Android开发中,我们经常需要存储一些配置项。 例如在创建Retrofit实例时,需要指定baseUrl。如果需要修改替换整个项目中的baseUrl,那将会是一件很痛苦的事情。 为了方便管理和维护这些配置项,我们可以使用资源文件来存储…

文旅媒体有哪些?如何邀请到现场报道?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 中国文旅产业在近年来得到了持续而快速的发展。从产业端看,中国文旅产业呈现出新的发展趋势,其中“文旅”向“文旅”转变成为显著特点。通过产业升级和空间构建&a…