CI/CD 管道中的自动化测试:类型和阶段

在上一篇文章中,我们讨论了敏捷团队自动化测试用例的各种用例。其中一种情况是,团队希望将测试与每个构建集成,并将持续集成作为构建过程的一部分。

在本文中,我们将讨论持续集成/持续交付平台中的集成测试。

让我们先从基础知识开始。

什么是自动化测试?

软件测试是指根据一组测试用例执行测试,并将实际结果与预测结果进行比较。在此过程中遵循几个步骤和测试技术。测试对于确保产品质量至关重要。此过程通常由测试人员团队手动完成。然而,在自动化测试中,该过程是使用软件工具和技术实现自动化的。在这里,不再需要手动操作,而是自动创建脚本并运行测试用例。自动化测试消除了人为错误、覆盖范围等许多问题。它还节省了时间,提高了进行测试的便利性,提高了效率和效果。

CI/CD 管道中的自动化测试

自动化测试是CI/CD 管道的核心部分,因为快速运行的测试可以为开发人员提供早期反馈。及早发现的问题或错误有可能及早得到纠正。因此,发布的产品将更加准确且无错误。这提高了产品的整体质量,从而赢得了客户的满意度。简而言之,CI/CD管道中自动化测试的优势如下:

  • 符合“快速构建,快速失败”的 CI/CD 理念
  • 减少人工,从而节省时间并降低出错的可能性。
  • 随着测试用例数量的增加,测试结果更加准确,并且可以覆盖更广泛的区域。
  • 立即获得任何问题的反馈
  • 可以生成并比较多个测试结果,以确保质量和一致性

CI/CD 管道中使用的自动化测试类型

  • 单元测试:这是在模块编码和审查后进行的低级测试。测试用例旨在测试各个组件。目的是确保每个组件在任何情况下都能按预期工作。
  • 集成测试:集成是指测试应用程序内组件的交互。此测试是在所有模块都经过单元测试后进行的。主要目的是测试模块接口并检查当一个模块调用另一个模块的功能时参数传递没有错误。
  • 系统测试:测试旨在验证完全开发的系统并确保其符合需求规范文档。通常,在此阶段,软件已准备好供潜在用户使用。这些类型的系统测试称为 alpha(由组织内的开发团队执行)、beta(由选定的一组用户/客户执行)或验收测试(由用户/客户执行以确定交付的接受情况)系统)。

什么是持续集成和持续交付?

简而言之,持续集成允许开发团队将他们的代码集成到共享存储库中。这有助于维护代码质量并尽早识别本地版本代码的潜在问题。

持续交付通常也称为“持续部署”。开发团队不断合并的所有内容都会不断部署到实际环境中。

由于大多数开发人员都是并行工作的,因此不断地将他们的代码集成到一个存储库中意味着主分支会不断更新新功能。为了确保代码质量不会因如此快速发生的变化而受到影响,测试必须以相同的速度进行。

毫无疑问,在这种环境下进行手动测试并不是实现这一目标的最佳方法。自动化测试是 CI/CD 管道中成功测试的关键。

9 个持续交付阶段

  1. 开发: 开发人员根据项目需求或功能请求构建代码。
  2. 编写测试:一旦编写了代码,就需要编写测试。此时,这些测试通常是开发人员编写的单元测试。
  3. 本地测试:然后进行本地测试,以检查所有测试是否通过并确保代码不会中断。通常,会设置一个百分比作为运行测试需要达到的通过率。
  4. Rebase和解决冲突:在实际的开发场景中,会有多人合并他们的代码。开发人员需要确保他们的分支始终更新。用最新的合并代码更新分支称为“变基”。一旦重新定位,可能会出现一些需要解决的冲突。之后,针对重新调整基础的代码再次运行测试。
  5. 提交:测试通过后,代码就可以提交所有更改。
  6. 构建:然后将开发的源代码组合起来,构建一个可以在实例上运行的部署工件,如果环境在本地,则该工件可以在服务器上运行。此代码现在可以部署到不同的测试环境中。
  7. UAT:然后将代码部署到测试服务器,测试人员开始测试该功能。这些测试可以是自动化的,也可以是手动的。
  8. 合并:如果正在测试的提交得到测试人员的批准,则会将其合并到主分支中。
  9. 生产部署:合并代码后,就会将其部署到生产中。

开发人员编写的每个构建代码都需要执行上述过程。

自动化测试在 CI/CD 管道中处于什么位置?

自动化测试最好在构建阶段完成并可以部署代码后进行。单元测试、UI 测试和集成测试都可以在此阶段运行。这些测试有助于确保代码符合质量标准。

此阶段可能持续几分钟到几个小时,具体取决于自动化的架构方式。

测试可以并行运行以更快地执行它们。如果代码在测试阶段失败,则可以拒绝构建,而无需进一步投入任何手动测试时间。

CI/CD 使用的工具

  • Jenkins: Jenkins 是一个用于持续集成的开源工具。它可以免费使用,并且可以通过界面和脚本配置作业。
  • Travis CI: 该工具对于由 GitHub 托管的开源项目是免费的。
  • Gitlab: Gitlab 是一款版本控制工具,拥有自己的基于云的 CI 方法。它支持多个平台,有免费版和付费版。
  • Bamboo: Bamboo 是 Jira 的 CI 工具。如果您的组织使用 Jira,那么检查一下这个工具将会很有帮助。它还支持票证批准时的自动合并。

CI/CD 管道的最佳实践,以充分利用测试自动化

  • 增量更改:始终建议遵循逐个功能的方法。如果功能确实很大,最好将其分解为更小且测试速度更快的功能。这对于自动化来说很重要,因为如果出现问题,更容易找出根本原因。如果您的承诺太大,那么找出问题的原因将是一项艰巨的任务。
  • 确定什么可以自动化:团队快速潜入并说“让我们自动化一切”是很常见的,但这是一个常见的错误。我们必须了解自动化的目的并确定应该自动化的测试用例。
  • 并行测试: 测试应该并行运行,以使测试更加高效和及时。它可以大大减少运行测试所需的时间,从而更快地给出结果。但仅仅并行执行这些测试是不够的;扩展运行测试的服务器大小也很重要,这样才能真正提高测试速度。

结论

自动化测试是成功部署项目同时保持质量标准的重要组成部分。确保在每个阶段都运行测试可以使代码质量具有良好的透明度。可以在早期发现错误,并且可以及时解决可能由错误引起的任何延迟。拥有集成测试的 CI/CD 管道有助于加快测试和部署过程。

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

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

相关文章

嵌入式全栈开发学习笔记---C语言笔试复习大全22

目录 结构体 结构体的声明 定义结构体变量 访问结构体成员进行初始化 通过结构体变量名访问结构体成员 结构体指针 结构体指针的定义 通过结构体指针访问结构体成员 结构体数组 结构体数组的定义 遍历结构体数组 结构体的长度(笔试重点) 上一…

Attention相关问题笔试解析。

Attention相关问题笔试解析。 题目描述一:【选择】题目描述二:【简答】题目描述三:【代码】Scaled Dot-Product Attention:下面是用PyTorch实现的一个Attention机制的代码。这个实现包括一个简单的Scaled Dot-Product Attention机…

【大模型部署】在C# Winform中使用文生图Stable Diffusion XL 模型

【大模型部署】在C# Winform中使用文生图Stable Diffusion XL 模型 前言 整了一个在C# Winform中调用文生图Stable Diffusion XL的小程序,基于百度智能云千帆平台 步骤 如何注册百度智能云和创建应用,获取API 密钥等和在之前的博客中基本相同&#…

P6160 [Cnoi2020] 向量

[Cnoi2020] 向量 题目背景 向量(vector),指具有大小(Magnitude)和方向(Direction) 的量。 与向量对应的量叫做数量(Scalar),数量只有大小,没有方向。 对于 Cirno 来说,整天环绕氷屋的旋转 Sangetsusei 们是向量而不是数量。 Sun…

spring模块(三)Spring AOP(2)使用

一、demo 1、spring项目 &#xff08;1&#xff09;pom <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.13.RELEASE</version></dependency>&l…

[数组查找]1.图解线性查找及其代码实现

线性查找 线性查找是一种在数组中查找数据的算法。与二分查找不同&#xff0c;即便数据没有按顺序存储&#xff0c;也可以应用线性查找。线性查找的操作很简单&#xff0c;只要在数组中从头开始依次往下查找即可。虽然存储的数据类型没有限制&#xff0c;但为了便于理解&#x…

CorelCAD v2022.5 解锁版 安装教程(2D制图 3D设计和打印的简化软件)

前言 CorelCAD&#xff0c;加拿大Corel公司开发的一款适用于2D制图、3D设计和打印的简化版CAD软件。它是款专业的2D制图和3D设计软件&#xff0c;拥有行业标准文件兼容性&#xff0c;支持 .DWG、.STL、.PDF、 .CDR*等文件格式&#xff0c;轻松实现协作和项目共享&#xff0c;利…

电商零基础的人,可以做抖音小店吗?它操作难度大吗?

大家好&#xff0c;我是电商糖果 随着短视频电商的热度越来越大&#xff0c;很多消费者都有了抖音购物的习惯。 于是入驻抖音开店就成了很多人创业做电商的首选。 可是抖音推出的电商项目——抖音小店&#xff0c;出来的时间不是很久&#xff0c;很多人对它了解也不深&#…

2024年5月LLM最新排名:GPT-4o出道即巅峰!国内3个大模型榜上有名!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

设计模式 17 组合模式 Composite Pattern

设计模式 17 组合模式 Composite Pattern 1.定义 组合模式&#xff08;Composite Pattern&#xff09;&#xff0c;又叫部分整体模式&#xff0c;是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象&#xff0c;用来表示部分以及整体层次。这种类型的设…

Java进阶学习笔记21——泛型概念、泛型类、泛型接口

泛型&#xff1a; 定义类、接口、方法的时候&#xff0c;同时声明了一个或者多个类型变量&#xff08;如: <E>&#xff09;,称之为泛型类、泛型接口、泛型方法&#xff0c;我们统称之为泛型。 说明这是一个泛型类。 如果不使用泛型&#xff0c;我们可以往ArrayList中传…

浅谈网络安全态势感知

前言 网络空间环境日趋复杂&#xff0c;随着网络攻击种类和频次的增加&#xff0c;自建强有力的网络安全防御系统成为一个国家发展战略的一部分&#xff0c;而网络态势感知是实现网络安全主动防御的重要基础和前提。 什么是网络安全态势感知&#xff1f; 态势感知一词来源于对…

文心智能体大赛:百度文心智能体平台初体验

写在前面 博文内容涉及&#xff1a;文心智能体大赛:文心智能体初体验理解不足小伙伴帮忙指正 &#x1f603;,生活加油 我徒然忘记了热闹&#xff0c;却来不及悟透真正的清冷(《四喜忧国》) 前言 徒然忘记了热闹&#xff0c;却来不及悟透真正的清冷(《四喜忧国》)&#xff0c;在…

前端日志收集(monitor-report v1)

为什么 为什么自己封装而不是使用三方 类似 Sentry 这种比较全面的 因为 Sentry 很大我没安装成功&#xff0c;所有才自己去封装的 为什么使用 可以帮助你简单解决前端收集错误日志、收集当前页面访问量&#xff0c;网站日活跃&#xff0c;页面访问次数&#xff0c;用户行…

Linux/Ubuntu 中安装 ZeroTier,实现内网穿透,2分钟搞定

相信很多人都有远程连接家中设备的需求&#xff0c;如远程连接家中的NAS、Windows等服务&#xff0c;所以会涉及到一个内网穿透工具的使用&#xff0c;如果没有公网IP的情况下&#xff0c;推荐大家使用ZeroTier&#xff0c;这是一款强大的内网穿透工具。 mac和windows版的操作…

梦幻西游手游挂机脚本,搬砖挂机赚米项目,号称单窗口日收益60+(教程+软件)

一、项目背景 随着智能手机的普及&#xff0c;手游市场逐渐成为人们娱乐生活的重要组成部分。其中&#xff0c;《梦幻西游》作为一款经典的国产手游&#xff0c;吸引了大量的玩家。然而&#xff0c;许多玩家因为工作、学习等原因&#xff0c;无法长时间在线游戏。因此&#xf…

Autodl服务器中Faster-rcnn(jwyang)复现(一)

前言 在做实验时需要用到faster-rcnn做对比,本节首先完成代码复现,用的数据集是VOC2007~ 项目地址:https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0 复现环境:autodl服务器+python3.6+cuda11.3+Ubuntu20.04+Pytorch1.10.0 目录 一、环境配置二、编译cud…

深度神经网络——什么是生成式人工智能?

1.引言 生成式人工智能最近引起了很大的关注。 该术语用于指依赖无监督或半监督学习算法来创建新的数字图像、视频、音频和文本的任何类型的人工智能系统。 麻省理工学院表示&#xff0c;生成式人工智能是过去十年人工智能领域最有前途的进展之一。 通过生成式人工智能&#…

【gradle】MAC下用gradle构建部署springboot项目

MAC下用gradle构建部署springboot项目 前言下载安装配置gradle下载安装下载可能出现的问题 &#xff08;zsh: command not found: brew&#xff09; 配置环境变量配置国内下载源全局配置单个项目配置 通过idea构建项目构建后的项目结构 小结延伸 前言 好久以前就听说gradle了&…

MongoDB(介绍,安装,操作,Springboot整合MonggoDB)

目录 MongoDB 1 MongoDB介绍 MongoDB简介 MongoDB的特点 MongoDB使用场景 小结 2 MongoDB安装 安装MongoDB 连接MongoDB MongoDB逻辑结构 MongoDB数据类型 小结 3 MongoDB操作 操作库和集合 操作文档-增删改 操作文档-查询 MongoDB索引 小结 4 SpringBoot整合…