当前位置: 首页 > news >正文

【5.21】六、自动化测试—持续集成测试

目录

6.4 持续集成测试

6.4.1 持续集成的概念

6.4.2 持续集成测试框架设计


6.4 持续集成测试

持续集成(Continuous Integration,CI)是软件开发DevOps(Development+Operations)中的一个概念,它强调的是软件开发和IT运维人员之间协作软件交付方式,以协作测试、打包和部署软件为核心,目的是增强软件版本的发布规律和可靠性

6.4.1 持续集成的概念

CI是在源代码变更后自动检测、拉取、构建以及进行单元测试的过程。 持续集成的目标是快速确保开发人员新提交的代码是合格的,并且适合在代码库中进一步使用。

开发人员常使用持续集成工具来构建和集成。代码集成且所有单元测试都通过,表明已成功集成在一起,并且代码可以进行后续测试。

6.4.2 持续集成测试框架设计

作为测试人员,掌握持续集成方法,有利于提高软件测试效率、提高生产效益,同时也可以衡量测试人员水平。在掌握持续集成的基本概念后,设计出当前项目的持续集成框架显得尤其重要。

1. 传统持续集成框架设计

开发人员通常使用名为CI Server的工具来构建和集成开发的项目。CI要求测试人员具备持续集成测试的能力,在掌握持续集成环境中使用的工具的同时要与项目开发人员进行沟通合作,以确保开发中的代码按预期工作。

上图是使用持续集成测试搭建的自动化测试框架流程图。在启动测试之前,测试所需要的数据、测试用例、测试框架已经搭建完毕,并且项目通过编译。若测试项目使用服务器和数据库,这些资源也需要配备完成。

如果把集成工具比作管家,测试人员就是主人,只需要吩咐管家去完成主人安排的任务即可。测试框架搭建完成之后,就可以执行测试。此时集成工具下载当前版本的项目启动测试,在搭建好的自动化测试框架中自动执行测试用例,并自动调用准备好的测试数据。

2. 持续集成容器化框架设计

基于容器的持续集成平台在环境搭建上耗时少于传统的持续集成系统搭建,可以在秒级内启动一个镜像生成一个持续集成环境。容器占用资源少并且保证了开发环境和测试环境的统一,降低了测试重复率,极大地提高了测试效率。

使用Docker容器搭建的持续集成容器框架设计:

开发人员将代码提交到版本控制系统之后,触发Jenkins容器(Docker)自动部署开发人员提交的版本并进行单元测试、集成测试、构建JAR包等任务。测试通过后测试人员可以获取当前项目,创建容器进行本地化测试,测试完成后将项目提交到远程容器仓库进行管理,开始上线部署并触发集成同步到镜像库后通知测试人员或者开发人员停止容器的创建(图中虚线箭头部分)。

使用容器技术进行测试方便应用的部署以及不同场景下的测试,即一次构建随处运行。此外,容器技术在提高测试效率的同时降低了企业项目花费的成本、加快了开发速度。

相关文章:

【5.21】六、自动化测试—持续集成测试

目录 6.4 持续集成测试 6.4.1 持续集成的概念 6.4.2 持续集成测试框架设计 6.4 持续集成测试 持续集成(Continuous Integration,CI)是软件开发DevOps(DevelopmentOperations)中的一个概念,它强调的是软…...

【C++】 排列与组合算法详解(进阶篇)

文章目录 写在前面算法1:朴素算法思路缺点 算法2:递推预处理思路时间复杂度: O ( n 2 ) O(n^2) O(n2) 算法3:阶乘逆元思路时间复杂度: O ( n log ⁡ n ) O(n \log n) O(nlogn)思考:读者也可以尝试写 O ( n…...

Godot引擎 4.0 文档 - 循序渐进教程 - 监听玩家输入

本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面: Listening to player input — Godot Engine (stable) documentation in English 监听玩家输入 在上一课创建您的第一个脚本的基础上,让我们看看任何游戏…...

Docker笔记9 | Docker中网络功能知识梳理和了解

9 | Docker中网络功能知识梳理和了解 1 外部访问容器1.1 访问方式1.2 映射所有接口地址1.3 映射到指定地址的指定端口1.4 映射到指定地址的任意端口1.5 查看映射端口配置 2 容器互联2.1 新建网络2.2 连接容器 3 配置DNS 简单说:Docker 允许通过外部访问容器或容器互…...

生态系统模型:SolVES、DNDC、CMIP6、GEE林业、APSIM、InVEST、无人机遥感、ArcGIS Pro模型等

基于R语言APSIM模型高级应用及批量模拟实践技术 CMIP6 数据处理方法与典型案例分析实践技术 Python 与 Noah-MP 陆面过程模型融合技术及在站点、区域模拟实践应用 双碳目标下基于“遥感”融合技术在碳储量、碳收支、碳循环等多领域监测与模拟实践应用 基于Citespace和vosvi…...

常见分布函数。

一维常见分布函数 1.离散型 ① 0 - 1分布 记 X~B(1,p) 如果X的概率分布为 ( 1 0 p 1 − p ) \begin{pmatrix} 1 & 0 \\ p & 1-p \end{pmatrix} (1p​01−p​),则称X服从参数为P的0-1分布&#xff08;0<p<1&#xff09;。 注&#xff1a;0-1分布又称一次伯努利试…...

【网络安全】红队攻防之基础免杀

引言 本文主要介绍“反射型 dll 注入”及“柔性加载”技术。 反射型 dll 注入 为什么需要反射型 dll 注入 常规的 dll 注入代码如下&#xff1a; int main(int argc, char *argv[]) {HANDLE processHandle;PVOID remoteBuffer;wchar_t dllPath[] TEXT("C:\\experimen…...

CTF入门指南

何为CTF &#xff1f; CTF&#xff08;Capture The Flag&#xff09;夺旗比赛&#xff0c;在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会&#xff0c;以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。…...

C:入门级积累(4)

(int *)malloc(10 * sizeof(int))memory allocate动态分配内存,malloc的出现时为了弥补静态内存分配的缺点&#xff0c;传统数组的长度一旦定义之后&#xff0c;就不能更改&#xff0c;比如说&#xff0c;如果我有一个业务在这之前给分配的大小为100&#xff0c;但是&#xff0…...

基于DBSCAN密度聚类的风电-负荷场景削减方法

​目录 ​ 1 主要内容 基于密度聚类的数据预处理&#xff1a; 场景提取&#xff1a; 算法流程&#xff1a; 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序复现文章《氢能支撑的风-燃气耦合低碳微网容量优化配置研究》第三章内容&#xff0c;实现的是基于DBSCAN…...

服务(第二十七篇)squid-传统、穿透、反向代理

squid代理服务器&#xff1a; 主要提供缓存加速、应用层过滤控制的功能。 代理的工作机制&#xff1a; 1、代替客户机向网站请求数据&#xff0c;从而可以隐藏用户的真实IP地址。 2、将获得的网页数据&#xff08;静态 Web 元素&#xff09;保存到缓存中并发送给客户机&#x…...

golang yaml 解析问题

golang 中解析 yaml 格式内容可以使用 yaml.v3 库来解决。下载 go 依赖 go get -u gopkg.in/yaml.v31. 示例 yaml 数据 config_mail_template:description: 验证码one: Verification Codeother: Verification Codeconfig_mail_template_reset_code:description: 重置密码one:…...

setContentHuggingPriority和setContentCompressionResistancePriority的使用

需求&#xff1a; 两个label并排显示&#xff0c;文字内容由服务器返回&#xff0c;label宽度以文字内容自适应&#xff0c;label之间间距大于等于10. 需要考虑以下情况&#xff1a; 当两个label的宽度和 < 屏幕宽度时&#xff0c;各自设置约束&#xff0c;无需处理&#…...

java springboot yml文件配置 多环境yml

如果是properties改用yml&#xff0c;直接改后缀&#xff0c;原文件中的配置语法改用yml的语法即可&#xff0c;系统会自动扫描application.properties和application.yml文件&#xff08;注意&#xff1a;改了之后需要maven 命令 clean一下&#xff0c;清个缓存&#xff09;。 …...

DMBOK知识梳理for CDGA/CDGP——第一章数据管理(附常考知识点)

第一章 数据管理 第一章在 CDGA|CDGP考试中分值占比均不是很高&#xff0c;主要侧重点是考概念性的知识&#xff0c;理解数据管理的目标原则、还有与其他概念的区别点&#xff0c;同时掌握几个关键核心的图&#xff08;车轮图、六边形图、语境关系图&#xff09;。总体来说难度…...

065:cesium设置带有箭头的线材质(material-9)

第065个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置带有箭头的线材质,请参考源代码,了解PolylineArrowMaterialProperty的应用。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共82行)相关API参考…...

Java常用API

1 常用API API(:Application Programming Interface ):应用程序编程接口1.1 Math类 Math中没有构造方法,类的成员都是静态的(static修饰),通过类名就可以直接调用常用方法方法名说明public static int abs(int a)获取参数a的绝对值public static double ceil(double a) …...

【C++ 学习 ⑥】- C++ 动态内存管理详解

目录 一、new 表达式和 delete 表达式的工作机理 二、operator new 和 operator delete 函数 2.1 - 标准库定义 2.2 - 重载 三、定位 new 表达式 四、常见面试题 4.1 - malloc/free 和 new/delete 的区别 4.2 - 内存泄漏 在 C 中&#xff0c;new 和 delete 既是关键字&…...

【5.21】六、自动化测试—常见技术

目录 6.2 自动化测试常见技术 1. 录制与回放测试 2. 脚本测试 3. 数据驱动测试 6.2 自动化测试常见技术 自动化测试技术有很多种&#xff0c;这里介绍3种常见的技术&#xff1a; 1. 录制与回放测试 录制是指使用自动化测试工具对桌面应用程序或者是Web页面的某一项功能进…...

JavaScript中的事件循环机制,包括事件循环的原理、宏任务和微任务、事件队列和调用栈、以及如何优化事件循环

JavaScript中的事件循环机制是JavaScript运行引擎的核心之一&#xff0c;它决定了代码的执行方式和效率。本文将从几个方面介绍JavaScript中的事件循环机制&#xff0c;包括事件循环的原理、宏任务和微任务、事件队列和调用栈、以及如何优化事件循环。 一、事件循环的原理 事…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...