工程实践 穿越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。






@韩德恩业务敏捷


相关文章
|
3月前
|
运维 监控 Devops
DevOps实践:持续集成与持续部署的黄金路径
在数字化时代,快速迭代和高质量软件交付成为企业竞争的核心。本文深入探讨了DevOps文化下,持续集成(CI)与持续部署(CD)的最佳实践,旨在为读者提供一套实现高效、自动化的软件发布流程的方法论。通过分析现代软件开发的挑战,结合具体案例,本文详细阐述了如何构建一个灵活、高效的CI/CD流水线,以及如何利用监控和反馈机制不断优化这一过程。文章不仅适合运维人员阅读,同时也为软件开发者和项目经理提供了宝贵的参考。
|
2月前
|
运维 监控
运维之道:从混沌到秩序的旅程
【8月更文挑战第23天】在信息技术的海洋中,运维(Operation and Maintenance)是确保船只稳定航行的关键。本文将通过一个易于理解的故事,探讨如何从混乱无序的状态逐步建立起一套高效、有序的运维体系。我们将跟随主人公“小维”的视角,一起经历从问题识别、流程优化、团队建设到持续改进的过程,最终实现运维工作的高效与自动化。通过这个故事,我们不仅能学习到实用的运维技巧,还能深刻理解运维工作的本质和价值。
|
2月前
|
Cloud Native Devops 持续交付
云原生之旅:从混沌到秩序
在数字化浪潮中,云原生技术如同搭建现代软件架构的乐高积木,让企业能够灵活、快速地适应市场变化。本文将通过一个虚构的故事,讲述一家传统企业如何拥抱云原生,实现从技术债务累积的混沌状态到高效、自动化的秩序转变。我们将一探究竟,云原生技术是如何一步步引领这场变革,并为企业带来前所未有的灵活性和创新能力。
|
测试技术 调度 C++
六年打磨!阿里开源混沌工程工具 ChaosBlade
减少故障的最好方法就是让故障经常性的发生。通过不断重复失败过程,持续提升系统的容错和弹性能力。今天,阿里巴巴把六年来在故障演练领域的创意和实践汇浓缩而成的工具进行开源,它就是 “ChaosBlade”。如果你想要提升开发效率,不妨来了解一下。
11923 0
|
消息中间件 运维 监控
ChaosBlade 在工商银行混沌工程体系中的应用实践
ChaosBlade 在工商银行混沌工程体系中的应用实践
364 0
《阿里云总监课第五期第二节:可靠性探索–利用混沌工程理念提高工程可靠性》电子版地址
阿里云总监课第五期第二节:可靠性探索–利用混沌工程理念提高工程可靠性
137 0
《阿里云总监课第五期第二节:可靠性探索–利用混沌工程理念提高工程可靠性》电子版地址
|
容器
|
jenkins 测试技术 持续交付
深聊测开领域之:持续集成的初心,让我对持续集成有了更深层的认知~
深聊测开领域之:持续集成的初心,让我对持续集成有了更深层的认知~
148 0
深聊测开领域之:持续集成的初心,让我对持续集成有了更深层的认知~
|
运维 监控 Kubernetes
足不出户,搞定交付——独家交付秘籍(第二回)
在后疫情时代,遇到无法出差、无法访客时,如何保障交付按时保质的进行,做好运维质量的保障,从而不影响企业整体营收,已成为我们生死攸关的难题。小锤在遇到无法只通过远程就完成项目交付验收,以及无法远程支持运维保障时,他们是如何成功该问题的呢,本文将一一讲述!
足不出户,搞定交付——独家交付秘籍(第二回)
|
运维 文字识别 监控
无线运维的起源与项目建设思考
无线运维的起源与项目建设思考
195 0
无线运维的起源与项目建设思考
下一篇
无影云桌面