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

什么是微服务?

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

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

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

什么是微服务测试?

所采用的任何测试策略都应旨在覆盖每层和服务层之间,同时保持轻量级。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。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode—剑指OfferII LCR 019.验证回文串II【简单】

2023每日刷题&#xff08;二十七&#xff09; Leetcode—剑指OfferII LCR 019.验证回文串II 实现代码 class Solution { public:bool judgeFunc(string s, int left, int right) {while(left < right) {if(s[left] ! s[right]) {return false;}left;right--;}return true;…

ssh开启,centOS7

1、先确定虚拟机是否装了openssh-server&#xff0c;执行 yum list installed |grep openssh-server 查看是否安装 [rootlocalhost ~]# yum list installed |grep openssh-server Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast openssh-serve…

快速查看Linux系统占用多的文件夹

背景 租用了一台云服务器&#xff0c;存储很快就满了&#xff0c;想看下哪部分占用多&#xff0c;然后进行清理 工具 使用ncdu工具 sudo apt install ncdu效果

Ubuntu查看Python某个包的具体路径

使用命令&#xff1a; python(版本号) -m pip show (包)这里的Location就是这个包所在的路径。同时它还列出了这个包的版本的信息。

网康NS-ASG安全网关任意文件读取

此文件没有对身份进行校验即可下载任意文件 构造payload访问漏洞url&#xff1a; ​​/admin/cert_download.php?filegjxbstxdt.txt&certfile../../../../../../../../etc/passwd漏洞证明&#xff1a; 文笔生疏&#xff0c;措辞浅薄&#xff0c;望各位大佬不吝赐教&…

Codeforces Round 908 (Div. 2)视频详解

Educational Codeforces Round 157 &#xff08;A--D&#xff09;视频详解 视频链接A题代码B题代码C题代码D题代码 视频链接 Codeforces Round 908 (Div. 2)视频详解 A题代码 #include<bits/stdc.h> #define endl \n #define deb(x) cout << #x << "…

【每日逆向】BUUCTF--[ACTF新生赛2020] easyre

拿到exe文件先查下信息&#xff0c;是一个32位程序&#xff0c;加了壳。 不会脱&#xff0c;直接拿到自动脱壳机潦草结束 看着有点乱&#xff0c;稍微改改 嗯&#xff0c;这样舒服多了。就是将V6扩展到18个字节大小&#xff0c;V5也扩展到12个字节大小&#xff0c;这样更符合源…

gpt支持json格式的数据返回(response_format: ‘json_object‘)

Api.h5.chatCreateChatCompletion({model: gpt-3.5-turbo-1106,token: sk-f4fe8b67-fcbe-46fd-8cc9-fd1dac5d6d59,messages: [{role: user,content:使用json格式返回十二生肖&#xff0c;包含中文名和英文名&#xff0c;[{id:"1", enName:"", cnName: &quo…

API 集成测试工具Hitchhiker 0.1.1 正式发布

Hitchhiker 是一款开源的 Restful Api 集成测试工具&#xff0c;你可以在轻松部署到本地&#xff0c;和你的 team 成员一起管理 Api。 能做什么 * Team 协作开发 Api * Api 历史修改记录及支持 diff 展示 * 支持多环境变量及运行时变量 * 支持 Schedule 及批量 run * 不同…

02:2440---时钟体系

目录 一:时钟控制 1:基本概念 2:时钟结构图 3:结构图分析 4:总线 5:寄存器 A:FCLK--MPLLCON B:HCLK和PCLK--CLKDIVN C:注意 二:上电复位 1:上电复位 2:时钟选择 三:代码 一:时钟控制 1:基本概念 S3C2440A中的时钟控制逻辑可以产生所需的时钟信号&#xff0c;包括C…

吃透 Spring 系列—AOP部分

目录 ◆ AOP 简介 - AOP的概念 - AOP思想的实现方案 - 模拟AOP的基础代码 - AOP相关概念 ◆ 基于xml配置的AOP - xml方式AOP快速入门 - xml方式AOP配置详解 - xml方式AOP原理剖析 ◆ 基于注解配置的AOP - 注解方式AOP基本使用 - 注解方式AOP配置详解 - 注解…

【算法练习Day46】判断子序列不同的子序列

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 判断子序列不同的子序列总结…

人机交互复习专题

第一章概述 1.1人机交互的概念与理解 人机交互的概念与理解 人机交互是人与机器进行交互的操作方式&#xff0c;即用户与机器互相传递信息的媒介。好的人机交互界面美观且通俗易懂、操作简单有引导功能&#xff0c;使用户感受到愉快、有兴趣&#xff0c;从而提升使用效率。 美…

mysql8安装和驱动jar包下载

方式一&#xff1a;基于docker安装 下拉镜像 docker pull mysql:8.0.21 启动镜像 docker run -p 3307:3306 --name mysql -e MYSQL_ROOT_PASSWORDhadoop -d mysql:8.0.21 启动成功后&#xff0c;进入容器内部拷贝配置文件&#xff0c;到宿主主机 docker cp mysql:/etc/mysql…

vue3项目常用功能分享

Vue3常用功能分享 本文主要分享一下在使用vue3开发项目时的一些常用功能 一、自动注册全局组件 自动注册components目录下所有vue组件并以组件的文件名为组件的名称 // components/index.tsimport { type App, defineAsyncComponent } from vue const components Object.e…

Sprint Boot 学习路线 5

Spring MVC Spring MVC是Spring框架的一部分&#xff0c;是一个Web应用程序框架。它旨在使用Model-View-Controller&#xff08;MVC&#xff09;设计模式轻松构建Web应用程序。 在Spring MVC中&#xff0c;应用程序被分为三个主要组件&#xff1a;Model、View和Controller。M…

2023年09月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 用枚举算法求解“100以内既能被3整除又能被4整除的元素”时,在下列数值范围内,算法执行效率最高的是?( ) A:1~101 B:4~100 C:12~100 D:12~96 答案:D 题目要求找出在 100…

什么是α测试β测试和灰度测试?

前言 看这个标题 α测试 β测试 &#xff0c;应该读做&#xff1a;阿尔法测试&#xff0c;贝特测试。 这样大家应该就都听过了吧&#xff0c;听过的同学举个手哈&#xff0c;听过的人大体上知道俩个测试是干嘛的&#xff0c;但是具体标准的大流程估计没人研究过&#xff0c;所…

VUE组件的生命周期

每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比如设置好数据侦听&#xff0c;编译模板&#xff0c;挂载实例到 DOM&#xff0c;以及在数据改变时更新 DOM。在此过程中&#xff0c;它也会运行被称为生命周期钩子的函数&#xff0c;让开发者有机会在特定阶…

数据结构 | 图

最小生成树算法 Prime算法 算法思路&#xff1a;从已选顶点所关联的未选边中找出权重最小的边&#xff0c;并且生成树不存在环。 其中&#xff0c;已选顶点是构成最小生成树的结点&#xff0c;未选边是不属于生成树中的边。 例子&#xff1a; 第一步&#xff1a; 假设我们从顶…