工程实践 穿越CICD那些事

简介: 工程实践 穿越CICD那些事

开发现状

最普遍的问题是,很多企业忽视了包括开发者测试、自动化验收测试、持续重构等工程实践的开展。

这些企业有独立的工具部门(如工具平台部/DevOps平台部/ DevOps运营团队),一个很大的误区是,似乎CI/CD只是工具部门的事,他们专注于工具平台本身建设,持续地为平台添加新功能、制定统一的流水线规范,也有漂亮的构建结果报告等,但开发团队却很少开展开发者测试、自动化验收测试,也没有严格要求的持续集成纪律、没有持续重构等。

什么是CI/CD?

CI在20多年前就有的实践,是指每天将代码做集成和测试验证,持续反馈

CD更多关注自动化部署,以便于快速获得用于自动化测试、非公能测试、手工测试、演示、生产等运行环境

50cf2d91cff846bbb24681fc738a3b28.png


企业在CI/CD上存在的误区

要么只关注CI,要么只关注CD

例如,某公司可以做到代码及时编译生成部署包并在K8S上部署,但却没有做任何自动化测试。

具体要怎么做?

需要从以下4个方面做实:迭代式开发、开发者测试/测试驱动开发、自动化验收测试、自动化部署


迭代式开发

一次迭代,产品经理(PO)、开发人员、测试人员三条线并行

产品经理输出需求、开发人员实现、测试人员测试

CI/CD则是三方互相协作的基础平台,每天将代码持续集成、持续部署、持续测试、持续反馈。

1c83aea9ff96496f9ff03f9ba5bbe349.png


开发者测试/测试驱动开发

CI/CD的基础工程活动是自动化测试,自动化测试的主要参与者不是测试人员,而应该是开发人员,他们做的测试称为开发者测试

开发者测试更多的是指测试驱动开发(TDD)这个实践,本质在于如何快速高效地写代码,它的核心思想是“写一点测一点”,先定一个小目标(也就是先写一个测试用例),然后驱动代码实现,测试,重构,然后再定下一个小目标,如此反复

单元测试、组件测试、契约测试、接口测试都是开发人员要做的,与之相关的实践是测试驱动开发,开发人员每天提交的代码也应该包括测试代码,持续地在CI/CD流水线中运行。

测试人员要做的自动化测试是验收测试,也称为功能测试或系统测试,一些公司也将接口自动化测试作为功能测试的一部分。另外,非功能测试也是测试人员所关注的。

要将测试工作量重点投在单元测试和组件测试上(开发者测试)

自动化验收测试

验收测试包括功能测试和系统测试

做自动化测试是门技术活,编程能力是基础。验收测试的工具有很多,如Selenium、RF等,下图是Robot Framework实现的验收测试脚本(用户正常登录功能),底层用到了Selenium驱动UI测试。

89dc95eabed4412c9333099b13097b0b.png

需求(用户故事)的质量也是阻碍自动化验收测试的重要因素,需求没有验收标准就急匆匆进入开发,这就没有了“完成标准”这个大目标

自动化部署

CD的核心能力是自动化部署,很多公司已经将应用部署在公有云或私有云上。

CI/CD实践中,常见的,是通过构建输出容器镜像,然后通过自动化的部署脚本一键部署到K8S/K3S中,参加下图

ebe6340be2954476af8f01fb743d8002.png

开发者测试工具选择大致分成4类

测试框架:如xUnit、TestNG、Spring Test、pytest、GoogleTest;

断言库:如Hamcrest、chai;

Mock工具:如Mockito、JMock、EasyMock;

测试覆盖率工具:如Cobertura、JaCoCo。






@韩德恩业务敏捷


相关文章
|
运维 网络虚拟化 5G
带你读《ONAP技术详解与应用实践》之一:网络自动化挑战及ONAP介绍
国内首部系统剖析ONAP的书籍,也是理论性与实战性兼具的网络自动化实践指导书!本书详细全面地介绍了网络自动化的挑战和发展趋势,以及ONAP的概况、架构设计理念、设计原则、各模块实现细节、关键特性、应用场景和案例实践等。通过本书读者可以深入理解ONAP,提升对网络自动化及相关领域的认知。作者及其团队成员均是华为网络开源领域的专家,长期参与社区的治理、贡献和回馈,致力于通过产业协作,打造统一的平台,降低集成成本,加快新技术导入,助力新一代网络运维系统升级。同时,本书也融入了作者及其团队在网络开源领域的深刻洞察和见解,书中分享了华为参与网络开源的实践经验,是电信网络转型的重要参考。
|
测试技术 调度 C++
六年打磨!阿里开源混沌工程工具 ChaosBlade
减少故障的最好方法就是让故障经常性的发生。通过不断重复失败过程,持续提升系统的容错和弹性能力。今天,阿里巴巴把六年来在故障演练领域的创意和实践汇浓缩而成的工具进行开源,它就是 “ChaosBlade”。如果你想要提升开发效率,不妨来了解一下。
11960 0
|
算法 前端开发 JavaScript
数据结构算法在专网项目中的实践
数据结构与算法作为计算机学科中至关重要的一门课程,在日常业务代码中常常很难用到或者说很难进行相关的实践,我们常常在leetcode中练习的习题感到没有用武之地。实际上,我们可以通过优化页面中的一些代码及在需求实现过程中对之前阅读过的源码或者之前练习过的习题进行相关的举一反三和触类旁通。本文列举了一些作者在日常业务代码书写过程中进行的一些相关数据结构算法的实践以及对于算法与数据结构练习的思考。
87 0
《敖小剑-双管齐下:Servicemesh和Dapr的实践与展望》电子版地址
敖小剑-双管齐下:Servicemesh和Dapr的实践与展望
114 0
《敖小剑-双管齐下:Servicemesh和Dapr的实践与展望》电子版地址
|
jenkins 测试技术 持续交付
深聊测开领域之:持续集成的初心,让我对持续集成有了更深层的认知~
深聊测开领域之:持续集成的初心,让我对持续集成有了更深层的认知~
163 0
深聊测开领域之:持续集成的初心,让我对持续集成有了更深层的认知~
|
算法 测试技术 Python
热饭的测开成果盘点第九期:白盒自动化平台热饭的测开成果盘点第九期:白盒自动化平台
本期介绍的是一个技术含量很变态的工具-白盒自动化测试。何为白盒测试?其实就是测试具体代码,有五种方式叫做五种逻辑覆盖率,比如路径覆盖/语句覆盖等。
热饭的测开成果盘点第九期:白盒自动化平台热饭的测开成果盘点第九期:白盒自动化平台
|
算法 测试技术 API
热饭的测开成果盘点第二期:C/S架构的全端自动化
本期介绍的是一个c/s端的工具,即客户端工具。也就是需要下载安装的界面工具,相比较现在流行的B/S即浏览器平台来说,具有以下特点:
热饭的测开成果盘点第二期:C/S架构的全端自动化
|
运维 文字识别 监控
无线运维的起源与项目建设思考
无线运维的起源与项目建设思考
205 0
无线运维的起源与项目建设思考
|
Kubernetes Cloud Native Java
去哪儿网基于ChaosBlade的混沌工程实践
微服务架构已经在去哪儿网(Qunar)实施多年,微服务应用数量达到数千之多,随着服务之间的调用链路越来越复杂,故障频频发生,给公司带来巨大的经济损失,稳定性建设工作就成为了一项重要的工作。从 2010 年 Netflix 提出通过 Chaos Engineering 的方式提升系统稳定性之后,到今天 Chaos Engineering 已经被证明是一种有效的发现系统弱点,建立对系统抵御生产环境中失控条件的能力以及信心的有效手段。从 2019 年底去哪儿网也结合自身的技术体系开始进行混沌工程相关的探索,下面就来介绍下我们的实践经验。
去哪儿网基于ChaosBlade的混沌工程实践
下一篇
无影云桌面