CI/CD --- 什么才是真正的自动化平台

news2024/9/24 22:37:49

近2年在软件开发中比较火的两个术语,一个是敏捷开发,另外一个就是CI/CD了;敏捷开发顾名思义就是“以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发”。那CI/CD(Continuous Integration、 Continuous Delivery、 Continuous Deployment)又是什么呢?

他是一种开发模式,通过自动化的手段来对已经开发的软件进行编译并对软件进行自动化测试,其目的是为了快速、保证质量、更加简单的完成软件的交付。那我们今天主要通过以下几个话题来说明下CD:

  1. 为什么在软件测试中引入自动化测试?

  1. 测试为何要进行平台化开发?

  1. 什么样的自动化测试算是真正的平台化?

  1. 什么样的自动化测试有希望实现智能化?

一、为什么要在测试过程中引入自动化测试?

人力成本

自动化测试最明显的一个闪光点就是节省人力,这点对于高度商业化的市场来说极具竞争力,而这也是无论大小公司都在积极的开展自动化测试的原因。

执行速度

第二点就是快速,同样的测试如果是人手工执行可能需要一周才能完成,但是自动化测试能够在一天甚至一个小时完成软件的验证,对于市场来说,早一天发布就有可能时赚的盆满钵满和破产的两种结果。

性能测试无可替代性

第三点自动化测试对于性能的测试更具备极强的竞争力,无论是性能测试中的压力测试还是时间参数测试,人的手工是无法在短时间完成这种功能性能的验证的,而对于车载行业,一点的软件问题都有可能是终端用户生命的代价,这是谁都无法承受的。当然自动化测试还有很多优点,但以上三点我个人认为是自动化测试极具竞争力和影响力的主要原因,也是所有人都想投入自动化测试的理由。

二、测试为何要进行平台化开发?

市场选择

实际上对于这个问题还是很好理解的,对于当前的市场环境来说,虽然每家公司都有专门的部门对用户的需求进行分析,然后选择最可能称为爆款的产品,但是最终结果也许并不能如愿以偿,那最好的办法就是多开发几种产品,快速占领市场,获取市场的喜好,然后实现盈利,公司得以生存。但人力有穷尽,那如何使用同样的人力同样的时间完成更多产品的开发呢?平台化自然而然的被提到了日程。

工作亮点、工作进化

而且对于中层领导来说,这也是可以作为年终述职的亮点;毕竟对于高层来说,他并没有时间去关注详细的开发过程,能看到的就是呈现到眼前的东西。有点扯远了,实际上平台化脚本开发和自动化脚本开发的引入理由并无太大区别,都是为了以最小的成本、最短的时间开发出最多的产品,也是一种市场软件开发的一种进化吧。

三、什么样的自动化测试算是真正的平台化?

这点也是我今天希望分享并且跟大家讨论的一个点,到底什么样的自动化测试脚本算是平台化脚本呢?以下是我的观点,大家如果有更好的见解,欢迎评论区留言一起讨论。

伪平台化

对于大部分公司来说,都是从手工测试、自动化测试最后才会考虑平台化测试;但由于这个过程经历了漫长的时间,并且在做自动化测试的过程中,并没有太多人的人考虑后续的平台化和继承(当然这点在使用Python语言开发的朋友身上出现的可能性少很多),因此最后在实现平台化的时候,很多人误以为在当前已有的自动化测试脚本的基础上套上一个马甲,就是平台化了;无可否认,在增加一层甚至两层、三层甚至更多层的封装,可在极短的时间内看到成效 --- 确实降低了一部分人力投入,但是后续的项目维护、持续开发、项目交接,将是接手人的噩梦,因此我叫它伪平台化。

平台化真容

我认为的平台化脚本,首先从源头上来说,测试点、测试模块、测试功能、平台化(以Autosar网络管理为例:测试点(例:验证上电唤醒后发出第一帧NM报文的时间)、测试模块(例:时间参数测试)、测试功能(Autosar网络管理测试)、测试平台(例:车载网络平台测试))。我说的伪平台化大部分都是通过测试平台的马甲实现调用测试功能,就连测试模块都无法调用,因此对于测试点更无从联系了。各自为政而已。

测试脚本的平台化

测试执行验证软件的脚本就像是万丈高楼的地基,如果地基崩塌,后面所谓的各类平台化、CI/CD都是空中楼阁,因此测试脚本需要满足以下几点:

  1. 能够实现函数的公用,减少重复造轮子的概率

  1. 测试模块、测试功能之间可以分开控制、互不影响

  1. 每个需要维护的测试功能脚本执行互不影响,但是底层有相互联系

满足以上几点,我们在新增测试脚本、测试功能模块,就能实现快速的脚本开发,无需验证所有的底层函数(共用函数已成熟)。并且多个产品之间能够自由组合而无需通过复制粘贴、管理大量的测试功能的工程来实现维护,最大限度的提高脚本开发效率和脚本自由组合。

需求、用例、脚本一致性

如果需求无法和用例对上、用例无法和脚本一致,那可谓是一团乱麻,这个问题大家都知道,但是又有谁真正的想办法去做对应呢?很多做的所谓的需求和用例对得上仅仅是需求点可以在测试用例中找到、用例或者脚本的测试点可以在需求中查出,我想这是远远不够,他们应该是有一种特殊的对应关系,无论是看需求、用例、脚本中任意一个或一块的内容,都能够快速查找到其他两部分的相关的内容,而不仅仅是找得到而已!!!

平台化下调用的颗粒度

大家认为平台化调度的颗粒度到什么样的程度才算真正的平台化呢?个人认为平台化脚本只有能够操作到测试的也就是单条测试脚本的程度才算是真正的平台化;平台只有在能够控制到测试功能脚本、测试模块、测试点的时候,下一步才能实现在CI/CD中结合软件测试实现真正的CI/CD。也只有在做到这样的程度才能算是真正的平台化。

真正的平台至少需要实现以上几点内容才能叫做平台,而非一对乱七八糟的用例加上一堆乱七八糟的脚本然后套上一个所谓平台化的脚本就叫已经实现了自动化测试的平台化。

四、什么样的自动化测试有希望实现智能化?

这个问题我做了一部分,相对于第三部分,这部分算是做的最少的了,不过也已经实现了部分智能化,能够实现自动化测试结果的简单分析并给出分析结论,待测试人员进行进一步确认;实际上这部分如果有大量数据的支撑就是智能化分析的初版。

另外一个要实现的就是软件代码与规范的一致性,当软件代码开发完成后导入实现的需求规范,这样就能顾与第三节中的规范保持一致,这时候CI和CD就能够自动化联系上了。这就是智能化的第二个需要实现的点。

这时候就能够吧整个软件软件开发流程串起来了,软件拿到需求去实现代码开发,然后通过CI自动编译完成后有自动化测试平台接收,自动匹配需要测试的脚本然后自动完成测试,最后通过自动化分析给出初步结论是否能够发布(当然这部分如果通过大量数据对比分析,完成有可能真正的分析结果),实现智能化软件开发。

如果喜欢我的文章来波点赞、关注、评论吧!!!

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

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

相关文章

自抗扰控制ADRC之微分器TD

目录 前言 1 全程快速微分器 1.1仿真分析 1.2仿真模型 1.3仿真结果 1.4结论 2 Levant微分器 2.1仿真分析 2.2仿真模型 2.3仿真结果 3.总结 前言 工程上信号的微分是难以得到的,所以本文采用微分器实现带有噪声的信号及其微分信号提取,从而实现…

0216-0218复习:继承

目录 继承 一、基本介绍 二、示意图 三、基本语法 四、入门案例 父类 子类1 子类2 main方法 五、继承细节 第一条 第二条 第三条 第四条 ​编辑 第五条 第六条 第七条 第八条 第九条 第十条 六、继承本质 七、练习题 第三题 继承 一、基本介绍 继承可以…

RAY - 小记

文章目录关于 RAYRAY 结构关于 RAY Ray is a unified framework for scaling AI and Python applications. Ray consists of a core distributed runtime and a toolkit of libraries (Ray AIR) for accelerating ML workloads. RAY 是一个简单、通用的分布式计算框架。 RAY 解…

TikTok话题量超30亿,这款承载美好记忆的剪贴簿引发讨论

回忆风剪贴簿在TikTok引起关注小超在浏览超店有数后台时发现,有一款平平无奇的剪贴簿的种草视频爆火,在24h内收获了9.9K点赞,播放量更是突破了100W,直接冲到了【种草视频飙升榜】第六名的位置,并且这个数字目前仍在继续…

利用5G工业网关实现工业数字化的工业互联网解决方案

5G工业网关是一种用于将工业生产环境中的数据连接到工业互联网的解决方案。它可以利用高带宽、高速率、低时延的5G网络连接工业现场的PLC、传感器、工业设备和云端数据中心,从而实现工业数字化。 物通博联工业互联网解决方案 物通博联5G工业网关的使用步骤&#x…

XXL-JOB分布式任务调度框架(二)-策略详解

文章目录1.引言2.任务详解2.1.执行器2.2.基础配置3.路由策略(第一个)-案例4.路由策略(最后一个)-案例5.轮询策略-案例6.随机选取7.轮询选取8.一致性hash9.最不经常使用 (LFU)10.最近最久未使用(LRU)11.故障转移12.忙碌转移7.分片广播任务1.引言 本篇文章…

中外互免签证协定一览表(普通护照与公务普通护照)

普通护照:由公安部出入境管理机构或者公安部委托的县级以上地方人民政府公安机关出入境管理机构以及中华人民共和国驻外使馆、领馆和外交部委托的其他驻外机构签发,主要颁发给出国定居、探亲、访友、继承财产、留学、就业、旅游等因私事出国的中国公民。…

[REDIS]redis的一些配置文件

修改配置文件 vim /etc/redis/redis.conf目录 protected-mode tcp-backlog timeout tcp-keepalive daemonize pidfile loglevel databases 设置密码 maxclients maxmemory maxmemory-policy maxmemory-samples 默认情况下 bind127.0.0.1 只能接受本机的访问请求。在不写的情况…

算法导论【字符串匹配】—朴素算法、Rabin-Karp、有限自动机、KMP

算法导论【字符串匹配】—朴素算法、Rabin Karp、有限自动机、KMP朴素字符串匹配算法Rabin-Karp算法有限自动机KMP算法朴素字符串匹配算法 预处理时间:0匹配时间:O((n-m1)m) Rabin-Karp算法 预处理时间:Θ(m),需要预先算出匹…

Lua脚本执行redis指令报错【java.lang.IllegalStateException】

Lua脚本执行redis指令报错【java.lang.IllegalStateException】 问题出现背景 今天在学习redis时,为了让redis的多条指令(取锁、比锁、释放锁)保障原子性,我通过使用一个lua脚本统一去执行redis的的多条指令。在执行lua脚本时报错…

Python3 File(文件) 方法讲解

open() 方法 Python open() 方法用于打开1个文件,并返回文件对象。 在对文件进行处理过程都需要使用到这个函数,如果这个文件无法被打开,会抛出 OSError。 注意:使用 open() 方法一定要保证关闭文件对象,即调用 clo…

vrrp+mstp+osfp经典部署案例

LSW1和LSW2和LSW3和LSW4上面启用vrrpmstp组网: vlan 10 全走LSW1出再走AR2到外网,vlan 20 全走LSW2出再走AR3到外网 配置注意:mstp实例的根桥在哪,vrrp的主设备就是谁 ar2和ar3上开nat ar2和ar3可以考虑换成两台防火墙来做&…

Java基础 -- List集合

Java基础 -- List集合1. Introduction1.1 好处1.2 常用泛型2. 交集,差集等2.1 自身的方法2.2 1.8jdk stream 新特性2.3 Apache的CollectionUtils工具类(推荐)3. 限定泛型范围4. Awakening1. Introduction 1.1 好处 代码复用,多种…

分布式任务处理:XXL-JOB分布式任务调度框架

文章目录1.业务场景与任务调度2.任务调度的基本实现2.1 多线程方式实现2.2 Timer方式实现2.3 ScheduledExecutor方式实现2.4 第三方Quartz方式实现3.分布式任务调度4.XXL-JOB介绍5.搭建XXL-JOB —— 调度中心5.1 下载与查看XXL-JOB5.2 创建数据库表5.3 修改默认的配置信息5.4 启…

斐波那契数列(递归+迭代)

目录什么是斐波那契数列递归写法使用递归写法的缺点迭代写法(效率高)什么是斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多斐波那契(Leonardo Fibonacci)以兔子繁殖为例…

Redis:数据结构

简单动态字符串SDS Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构 建了一种名为简单动态字符串(simple dynamic string, SDS)的抽象类型,并将SDS用作Redis的默认字符 串表示。 SDS 的实现…

aws lambda rust的sdk和自定义运行时

rust的aws sdk 参考资料 https://docs.aws.amazon.com/sdk-for-rust/latest/dg/getting-started.htmlhttps://awslabs.github.io/aws-sdk-rust/https://github.com/awslabs/aws-sdk-rusthttps://github.com/awsdocs/aws-doc-sdk-examples/tree/main/rust_dev_preview rus sd…

XlsReadWriteII EXCEL Cell Font 单元字体设置

XlsReadWriteII EXCEL Cell Font 单元字体设置 通过XLSReadWriteII5在写EXCEL时,由于XLSReadWriteII5中使用的是个性化的TFont,因而通过参数带入TFont,不能完整地将TFont带入Cell的Font,问题解决如下: 一、问题说明 1、…

Python学习-----模块2.0(常用模块之时间模块-->time)

目录 前言: time简介 导入模块 1.时间戳 2.时间元组 (1)把时间戳转换为元组形式 (2)元组转换为时间戳输出 (3)把元组转换为格式化时间 (4)把时间戳转换为格式化时间…

【深度学习】模型评估

上一章——多分类问题和多标签分类问题 文章目录算法诊断模型评估交叉验证测试算法诊断 如果你为问题拟合了一个假设函数,我们应当如何判断假设函数是否适当拟合了?我们可以通过观察代价函数的图像,当代价函数达到最低点的时候,此…