什么是微服务自动化测试?

什么是微服务?

微服务 - 也称为微服务架构 - 是一种构建方式,它将应用程序构建为松散耦合服务的集合,具有完整的业务功能。微服务架构允许连续交付/部署大型复杂应用程序。本文将概述自动微服务测试工具和最佳实践。

它还使组织能够发展其技术堆栈。微服务逐渐用于创建更大,更复杂的应用程序,这些应用程序作为较小服务的组合得到更好的开发和管理,这些服务可以协同工作以实现更重要的应用程序范围的功能。

大而复杂的应用程序由更直接和独立的程序组成,这些程序可由它们自己执行。这些小程序聚集在一起,提供了大型单片应用程序的所有功能。

什么是微服务测试?

所采用的任何测试策略都应旨在覆盖每层和服务层之间,同时保持轻量级。MicroServices测试需要替代方法 - 测试团队应该制定策略,以便在设计阶段开始测试微服务。测试团队最初参与设计/架构小组,以了解功能,使用情况和未覆盖的界面,这些都将对您有所帮助。除上述内容外,测试人员还应确保所有接口都是通用的,以便其他系统/服务可以毫无障碍地使用。

由于需要自动化所有内容,因此请使用Micro Services测试自动化工具。这些工具有助于验证每个独立服务单元的功能,并通过组合多个这些微服务来执行集成测试。

微服务的自动化测试级别

单元测试 - 这是测试单个微服务测试单元的内部工作。这些可以使用自动单元测试框架在每个编程级别自动化。
合同测试 - 这是为了测试每个微服务单元是否遵守所建立的合同中提供的给定功能。这里每个服务组件都单独作为黑盒测试。在合同测试中,即使服务发生变化,服务也应该为相同的给定输入提供相同的结果。MicroService Architecture中的每项服务都可以在更长的时间内稳健运行。它保证在不影响现有使用者的情况下为每项服务添加新功能。
集成测试 - 检查多个服务是否相互通信,并提供服务功能级别文档中给出的所需结果。这可以是整体微服务架构集成测试,也可以只占用架构和测试的子区域。
UI功能测试 - 在此,与UI集成的服务和通过UI完成的测试,其中通过UI提供MicroServices所需的输入,并通过UI测试所需的输出。
对于所有这些类型的测试,可以执行自动测试。

对于单元测试,使用基于NUnit或JUnit的单元测试框架,以较少的QA参与自动化测试。

对于合同测试,QA测试自动化工程师参与。此测试在每个服务单元中执行,通过隔离它并命中服务的单个URI。合同中给出的函数将使用测试自动化框架内的自动化脚本集进行测试。

集成测试通过合同测试中使用的相同工具集自动化。这里唯一的区别是将考虑不止一个服务单元,并且自动化脚本触发功能以在这些处理器内提供通信,其中验证了所需的输出。这里的自动化测试还将验证通信消息格式以及处理器之间链接的任何数据库。

UI功能测试使用自动化测试工具自动化,如UFT,Selenium或任何其他基于UI的自动化工具。

在进行Micro Service Automated测试时,可以集成多个工具或框架。将API自动化测试工具框架和基于UI的自动化测试工具框架集成在一起也是一种很好的做法。这是测试自动化的未来。大多数组织使用全局混合测试自动化框架,而不是维护单独的框架。

如何自动化测试工作?

单独测试每项服务

测试自动化是测试离散微服务的工具。很容易创建一个简单的测试工具,重复调用服务并将一组已知输入与预期输出进行比较。无论如何,所有这一切,都不会在测试中变得异常。它将释放测试团队专注于更复杂的测试。

测试应用程序的不同功能部分

在认识到应用程序中的关键功能元素后,应该尝试以传统方式进行集成测试的方式对其进行测试。这里测试自动化的优势很明显。每次其中一个微服务刷新时,都会快速构建测试脚本。将新代码的输出与先前的输出进行比较,快速确定是否有任何变化。

不要在小型设置中进行测试

一些管理人员有能力保留测试组的资源。但是,对于基于微服务的应用程序,这会适得其反。与尝试制作小型本地登台环境以测试代码相反,应该考虑利用基于云的测试。这里动态分配资源作为测试需要它们,在测试完成后释放它们。因此,测试自动化在这里不会直接提供帮助。

尝试跨不同的设置进行测试

建议使用多个环境来测试代码,类似于Web应用程序的跨浏览器测试。我们的想法是将代码暴露给库类型,底层硬件等可能在部署到生产时影响它的任何微小变化。实现此目的的一种方法可能是在运行中制作登台环境。利用Kubernetes,可以想象创建一个测试环境,使用来自已知源的数据填充它,加载代码然后运行测试。卓越之处在于每次重新创建环境时都会自动暴露于可能存在的任何差异。当然,另一方面是诊断任何错误的根本原因变得更加困难。

尽可能使用Canary测试

金丝雀测试是一种方法,其中一小部分用户呈现代码中的变化,并将他们的经验与仍然运行旧代码的用户的体验进行对比。该方法对于测试微服务特别有用。它使用监控来调查变更的影响。它可以通过采用一次一个服务实例更新的策略来快速判断错误率,服务负载,响应能力和类似指标,从而判断新代码是否会产生负面影响。自动做金丝雀测试。

金丝雀测试是一种方法,在这种方法中,客户稍微安排一下代码的变化,对比体验以及那些运行旧代码的客户的遭遇。这种方法对测试微服务特别有用。它利用检查来调查变化的影响。它查看了错误率,利益负担,响应性和比较测量,以揭示新代码是否具有不利影响。通过采用一个程序,当一个管理案例同时令人耳目一新时,可以毫不费力地进行,从而进行金丝雀测试。

人工智能测试

AI或人工智能用于完全自动化微服务应用程序的Canary测试。深度学习等AI方法可识别新代码激活的更改和问题。很少有用户转移到新框架,AI将经验与现有用户的体验进行了比较。由于这可以自动实现,因此它会取代循环中的人。

可调试代码

编写可调试代码包括稍后进行查询的能力,这反过来涉及 -

正确的代码检测。

了解所选择的可观察性安排(无论是指标还是日志或独特的案例追踪器或痕迹或这些的混合)及其优缺点。

根据给定服务的要求,依赖性的操作怪癖和良好的工程直觉,选择最佳可观察性的能力。

微服务自动化测试的好处

测试微服务有以下好处 -

  1. 激励更好地隔离服务和设计更好的系统。
  2. 它对程序员施加了一定的设计压力,以便以易于使用的方式构建API。
  3. 测试充当应用程序公开的API的精彩文档。
  4. 单独测试每项服务。
  5. 测试应用程序的不同功能部分。
  6. 监控以评估变更的影响。
  7. 监控应用程序的持续性能。

为什么微服务的自动测试很重要?

由于以下原因,微服务测试很重要 -

解耦

每个功能都松散耦合,以帮助SaaS / SOA架构。MicroServices通过网络分散在各个平台上,并通过REST over HTTP进行集成。

可维护性

每项服务都是独立维护,升级和测试的,这是SaaS架构的基本要求。这使得微服务成为持续交付的必要推动者,支持频繁发布,同时提供高系统可用性和稳定性。

可扩展性

每个微服务根据用途自动缩放。每个服务都根据资源需求部署在自治硬件上,这在传统的单片设计方法中是不可能的。

可用性

每个微服务都可以自主设计和部署,以实现故障转移和容错。例如,内存和CPU使用等问题在本地传递,而不同的服务通常继续工作。

如何对微服务进行自动化测试?

有五种策略用于成功测试微服务。

文档优先策略

遵循文档第一种方法,大多数文档都是Git中的markdown。API文档保持开源,所以它都是公开的。此时,在任何人编写任何API更改或不同的API之前,首先刷新文档,调查该更改,以确保它使用完全记录的API约定和标准进行调整,并确保不存在重大更改。确保它符合命名约定等等。

完整的堆栈内置策略

整个堆栈一体化策略需要在本地复制云环境并在一个流浪者实例中测试所有内容(“$ vagrant up”)。

AWS测试策略

第三种方法涉及启动Amazon Web Services(AWS)框架以部署和运行测试。对于完整堆栈盒内策略,这是一种更具适应性的方法。有些人将此称为个人部署[策略],每个人都拥有自己的AWS账户。在大约十分钟内将工作站上的代码推送到AWS,然后像真实系统一样运行它。

共享测试实例策略

第四种策略是完整堆栈内置和AWS测试之间的交叉品种。这是因为它涉及在自己的本地站工作,同时利用微服务的不同共享实例在测试期间指向本地环境。有些运行微服务的不同实例仅用于测试本地构建。但是,本地构建器将指向在Google基础结构中运行的测试映像解析器。

存根服务策略

微服务的标记或“存根”表现得像正确的服务,并在服务发现中作为真实服务进行宣传,但却是虚拟模仿。例如,测试服务可能要求服务意识到用户执行一组任务。使用存根服务,假设用户任务已经发生,而没有随之而来的典型复杂性。与在整体上运行服务相比,这种方法更轻量级。

自动化微服务测试的最佳实践

隔离测试

微服务很难测试,因为有许多独立服务以许多(通常是未预料到的)方式与其他独立服务进行通信。开始测试自动化工作的一个好地方是直接测试特定微服务的功能。通常,通过使用REST API与服务进行通信以及一些模拟来快速完成,以便单独测试服务,而无需与其他服务进行任何集成。

签订合同

几乎不可能知道消费者使用服务的所有方式。通过消费者驱动的交易,消费者必须提供一套测试,以确定所需的交互类型和格式。然后服务将同意合同并确保合同没有被破坏。这规定了其他服务的条件。此方法还可以验证交易是否在构建时完成。像Pact这样的工具可以更好地理解如何实现这种类型的功能来开发和测试微服务。一旦有了消费者驱动的合同流程,测试微服务的下一步就是转移到以前被禁止的生产世界。

转右 (Shift-Right )- 投入生产

在DevOps,微服务领域,生产测试成为整体质量计划的必要条件。通过基于微服务架构的流动,移动关系,如何确定许多服务将扩展的方式?如何提前了解服务的行为?如何测试此漏洞?答案是开始在生产中进行测试。

监控和警报

建立密钥检查和警报系统,并在生产中进行跟踪至关重要。如果其中一项服务出现故障或无响应,请立即显示。通过在监控的帮助下识别生产过程中的问题,在用户甚至知道存在问题之前,通常可以轻松地返回到上一个已知的优质服务版本。

最佳自动化微服务测试工具

  1. Hoverfly - 模拟API延迟和故障。
  2. Vagrant - 构建和维护可移植的虚拟软件开发环境。
  3. 录像机 - 一种单元测试工具。
  4. 契约 - 框架由消费者驱动的合同测试。
  5. Apiary - API文档工具。
  6. API蓝图 - 设计和原型API。
  7. Swagger - 设计和原型API。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

原生微信小程序学习之旅(一) -来简单的使用

文章目录 取消导航栏标头组件创建添加Component组件接收传入的数据 页面创建(Page)关于tabBartabBar自定义样式 轮播图轮播图指示点样式改变 微信小程序快速获取用户信息路由跳转获取url路径中的参数 bindtap(click)传参wx:if编写用户登陆关于默认工程目前的获取方法尝试一下服…

【Python】二维码和条形码的识别

我主要的问题就在于无法识别图片 注意事项: 1、从文件中加载图像的时候注意图片尽量用英文来命名,因为中文无法识别到图片 2、使用绝对地址的时候要用两个双斜杠,因为用一个会被识别为Unicode 转义,但是并没有后续的合法 Unico…

回归预测 | Matlab实现PCA-PLS主成分降维结合偏最小二乘回归预测

回归预测 | Matlab实现PCA-PLS主成分降维结合偏最小二乘回归预测 目录 回归预测 | Matlab实现PCA-PLS主成分降维结合偏最小二乘回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现PCA-PLS主成分降维结合偏小二乘回归预测(完整源码和数据) 1.输…

机器学习——逻辑回归

目录 一、分类问题 监督学习的最主要类型 二分类 多分类 二、Sigmoid函数 三、逻辑回归求解 代价函数推导过程(极大似然估计): 交叉熵损失函数 逻辑回归的代价函数 代价函数最小化——梯度下降: ​编辑 正则化 四、逻辑…

pyqt环境搭建

创建虚拟环境 # 用管理员身份运行 conda create --prefixE:\Python\envs\pyqt5stu python3.6 # 激活虚拟环境 conda activate E:\Python\envs\pyqt5stu # 退出虚拟环境 conda deactivate安装包 pip install PyQt5 -i https://pypi.douban.com/simple pip install PyQt5-tools…

关于maven读取settings.xml文件的优先级问题

今天在IDEA中配置maven的setting.xml文件路径指向的.m2路径下的setting_a.xml文件,同时,我的maven3.6.3也放在.m2中。 [1] .m2文件夹 [2] apache-maven-3.6.3文件夹 然后,在IDEA中打包发布时发现,无论如何都读取不到指定的settin…

Sectigo SSL

Sectigo(前身为ComodoCA)是全球在线安全解决方案提供商和全球最大的证书颁发机构。为了强调其在SSL产品之外的扩张,Comodo在2018年更名为Sectigo。新名称减少了市场混乱,标志着公司向创新的全方位网络安全解决方案提供商过渡。 S…

Python基础入门例程52-NP52 累加数与平均值(循环语句)

最近的博文: Python基础入门例程51-NP51 列表的最大与最小(循环语句)-CSDN博客 Python基础入门例程50-NP50 程序员节(循环语句)-CSDN博客 Python基础入门例程49-NP49 字符列表的长度-CSDN博客 目录 最近的博文: 描述 输入描…

FPGA运算

算数运算中,输入输出的负数全用补码来表示,例如用三位小数位来表示的定点小数a-1.625和b-1.375。那么原码分别为a6b‘101101, b6b101011, 补码分别是a6’b110011,b6‘b110101; 如果想在fpga中实现a*b,则需要将a和b用补…

MySQL:日志系统

目录 概述错误日志(error log)慢查询日志(slow query log)一般查询日志( general log )中继日志(relay log)Buffer Pool 缓存回滚日志(undo log)概述undo log 作用undo log 的存储机制Undo log …

万能在线预约小程序系统源码 适合任何行业在线预约小程序+预约到店模式 带完整的搭建教程

大家好啊,源码小编又来给大家分享啦!随着互联网的发展和普及,越来越多的服务行业开始使用在线预约系统以方便客户和服务管理。例如,美发店、健身房、餐厅等都可以通过在线预约系统提高服务效率,减少等待时间&#xff0…

计算机课设python项目matplotlib数据可视化分析代码以及数据文档+自动化selenium实现boss网站爬虫代码

这是一个数据分析可视化课程的结课作业设计,受人所托写的,现在分享出来,有需要的同学自取哈,以下是文件目录,包括数据分析和爬虫代码都有,下载下来当一个demo也还是不错的,这篇博客就是文档里的…

博客积分上一万一千了

博客积分上一万一千了 充满自信,继续前进。

《QT从基础到进阶·十八》QT中的各种鼠标事件QEvent

1、界面标题栏事件: NonClientAreaMouseButtonPress 标题栏点击事件 NonClientAreaMouseButtonRelease 标题栏释放事件 bool CustomPopDialog::event(QEvent* event) {switch (event->type()){case QEvent::MouseButtonRelease://Event of mouse releasing wind…

移动硬盘和u盘的区别哪个好 移动硬盘和u盘有啥区别

在数字时代的今天,数据存储已经成为我们生活中的重要一环。当我们需要移动、备份或传输大量数据时,常常会不知道是选择移动硬盘还是U盘。其实,对于许多人来说,移动硬盘和U盘之间的区别并不清晰。下面我们就来看移动硬盘和u盘的区别…

web3 React Dapp书写订单 买入/取消操作

好 上文web3 前端dapp从redux过滤出 (我创建与别人创建)正在执行的订单 并展示在Table上中 我们过滤出了 我创建的 与 别人创建的 且 未完成 未取消的订单数据 这边 我们起一下 ganache 环境 ganache -d然后 我们项目 发布一下智能合约 truffle migrate --reset然…

Yum配置、相关命令和常见问题

搭建光盘源 将系统盘读取出来,找到系统盘下存放软件包的目录 2.配置yun仓库 输入命令进入仓库编辑 #必须以.repo结尾 :wq 回车保存退出 3.命令行输入yum repolist 查看yum仓库 配置硬盘源 1.将硬盘源拷贝到目录,或者挂载到目录 2.指定repo文件baseu…

TCSVT(IEEE Transactions on Circuits and Systems for Video Technology)期刊投稿指南

目录 TCSVT 期刊简介 TCSVT 期刊影响因子和分区​ 期刊官方网站 期刊投稿网址 投稿指南网址 稿件格式要求 稿件提交指南 A. 提交稿件 B. 手稿格式 C. 摘要指南 D. 提交图形的指南 E. 页面和彩色图形费用 TCSVT 期刊简介 IEEE Transactions on Circuits and Systems…

No183.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

伦敦金股票代码是什么?

伦敦金是跟踪实时的现货黄金价格走势的差价合约交易,它的代码一般是LLG、GOLD,但也有一些货币交易平台会显示为XAU。伦敦金不是股票交易,因此没有四位数或六位数的股票代码,但伦敦金交易品种单一,投资者不用在数千支股…