首页 > 其他分享 >为什么单元测试不是持续交付的唯一答案

为什么单元测试不是持续交付的唯一答案

时间:2024-07-02 09:11:15浏览次数:18  
标签:CI 交付 更改 单元测试 CD 答案 企业

为了让持续集成和持续交付(CI/CD)成为现实,企业必须审查其内部流程,并重新思考如何处理软件交付生命周期。过去的清单和评论根本不是前进的方向。残酷的事实是,大多数企业在持续交付的道路上相当落后。对软件交付过程本身进行根本性的改变与从货架上取下一些工具这样的半个步骤是完全不一样的。
如果目标是对客户和用户做出更好的响应,软件团队需要专注于软件交付周期的更快迭代,并围绕快速响应用户反馈进行组织。虽然可能有如每月发布数量这种代理指标,但采用持续交付的最佳衡量标准是跟踪从反馈到更新软件的时间。

但是如果只是拼凑性地进行持续交付,将无法达成目标。

人们很容易从渐进的角度来看待一个组织如何从现状发展到它想驻足的位置。虽然渐进永远是正确的方法,但目前仅仅迈出第一步的企业不应自欺欺人地认为自己已经走得足够远。

一、不要依赖于CI/CD工具

通常,团队实行持续交付都是从一些自动化的单元测试来自动化构建过程开始。这是一个很好的开端,但是不要花太多的时间去关注单元测试覆盖的代码行数。相反,企业应该将自动化测试的注意力集中在验证核心业务流程、用户事务和用户交互上,以确保它们仍然按照预期和业务有效运行所需的方式运行。

CI/CD战略的下一个复杂层次是倾向于将计划每季度进行的大量变化打包在一起(如果企业在这一步停留也是一种错误)。实际上,CI成为了企业暂停努力的一个点。另一方面,CD则是尽可能频繁地通过管道和生产进行更改。一旦企业了解了代码更改对用户的影响以及自动实现这些更改的实现方式,它就需要鼓起勇气和付出财力来推动这些更改。

一般来说,即使是正在追求CI/CD的组织,也会存在着将变革视为风险的心态。这就不可避免地导致了这样一种信念:更改的频率应该降低。这与持续交付正好相反,它会对企业完全接受CI/CD造成阻碍。
较小的变更本质上会带来更小的风险,这意味着高生产率的软件组织应能够更快地迁移。 持续交付的概念和前景取决于企业不断部署微小变更的能力。有必要期望进行频繁的发布。

二、范围软件相应更改

那些单纯使用传统思维方式(CI工具、单元测试和验收测试)进行这项工作的企业仍然没有获得任何真正的好处。企业正在部署的变更范围应该作为它在软件开发生命周期中可以承受的质量问题级别的指导方针。

另一个常见的问题是,当一个组织决定将事情分解为一些小的变更,但是仍然需要开一系列的会议,变更控制委员会或者开发团队必须经过的严格的安全检查。如果您的组织的目标是通过部署较小的变更堆栈来加快进度,那么在全面重新考虑内部正式的发布周期方法之前,它不会有任何进展。

在政府机构等严格监管部门工作的组织,必须通过对其发布的产品进行修改和必要的文档化来克服这些挑战。政府部门以外的组织可以效仿他们的例子,通过对软件进行更改并描述这些更改将如何影响标记版本内的用户来克服文档需求。一个很好的例子就是美国政府的cloud.gov团队如何通过编程生成文档,比如他们的系统图。

想要在CI/CD领域取得成功的企业必须找到一种方法,将这种意见编入某种可以快速完成的自动化测试中,而不是从任何人那里获取关于软件是否应该发布的意见。否则,这条道路上的每一个手动步骤只会进一步造成交付的延迟。


三、组织如何解决这个问题

许多企业陷入推行CI/CD至一半的境地——他们有各种各样的工具来允许一些这样的实践,但是内部流程、检查表或管理权限下的决定阻止了组织以正常的节奏发布更新。

大量的开发人员被困在传统的软件开发周期中,他们甚至不尝试CI/CD,或者通过专注于工具、测试和自动化来接受CI/CD的人工版本。

有两种方法可以解决这个问题。一种方法是首先使用CI/CD工具,并授权各种开发团队开始在公司范围内使用公共构建服务。另一种方法是确定将从较高的开发速度、较小的变更集中获益最多的开发团队,并允许从该实践中获得的经验渗透到整个业务中。

后一种模型在大多数情况下会工作得更好,因为所涉及的人员数量被保持在最低限度,而IT组织中更关心遵从性和审计的部分将有更大的灵活性来理解单个应用程序范围内发生的事情。企业应该更愿意在单个应用程序和团队中推行试验,而不是试图推动整个公司一起进行转变。

CI/CD的目标始终是不断变化的,这是有意设计的。但是请放心,当所有能够从更快交付中获益的团队都实现了这些结果时,组织将清楚自身已经开始实现CI/CD的目标。

 

*参考文章:Chip Childers,Why unit tests aren’t the only answer to continuous delivery,2020.

标签:CI,交付,更改,单元测试,CD,答案,企业
From: https://www.cnblogs.com/chenqiAaron/p/18279227

相关文章

  • 信息学奥赛一本通C++版 1081:分苹果 答案
    目录【链接】【题目描述】【输入】【输出】【输入样例】【输出样例】【答案】【链接】1081:分苹果1081:分苹果【题目描述】把一堆苹果分给n个小朋友,要使每个人都能拿到苹果,而且每个人拿到的苹果数都不同的话,这堆苹果至少应该有多少个?【输入】一个不大于1000的......
  • 奥赛一本通C++版 1057解题思路(附加答案)
    链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1057题目:解题思路:先定义两个整型变量a和b,一个字符变量c,依次输入a,b,c。接着判断输入的运算符号是否等于+ || - || * || /(注意,这里的符号用单引号括起来)。如果运算符号等于加号,则进行加法运算,把a和b相加,......
  • Vue 常见面试题及答案
    本人详解作者:王文峰,参加过CSDN2020年度博客之星,《Java王大师王天师》公众号:JAVA开发王大师,专注于天道酬勤的Java开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯山峯转载说明:务必注明来源(注明:作者:王文峰哦)学习教程(传......
  • 【Java完整版 面试必备】Leetcode Top100题目和答案-哈希
    以下摘自leetcodeTop100精选题目-哈希1.两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。......
  • JAVA高级进阶13单元测试、反射、注解
    第十三天、单元测试、反射、注解单元测试介绍单元测试就是针对最小的功能单元(方法),编写测试代码对其进行正确性测试咱们之前是如何进行单元测试的?有啥问题?只能在main方法编写测试代码,去调用其他方法进行测试。无法实现自动化测试,一个方法测试失败,可能影响其他方......
  • LLM——10个大型语言模型(LLM)常见面试题以及答案解析
    今天我们来总结以下大型语言模型面试中常问的问题1、哪种技术有助于减轻基于提示的学习中的偏见?A.微调Fine-tuningB.数据增强DataaugmentationC.提示校准PromptcalibrationD.梯度裁剪Gradientclipping答案:C提示校准包括调整提示,尽量减少产生的输出中的偏差......
  • Linux gdb lldb面试题及参考答案(万字长文)
    什么是GDB?简述其主要功能。GDB(GNUDebugger)是GNU项目的一部分,是一个功能强大的源代码级别的调试器,主要用于C、C++和其他多种编程语言的程序调试。GDB提供了丰富的功能来帮助开发者理解程序内部的工作方式,诊断并修复代码中的错误。其主要功能包括但不限于:启动程序:可以在GDB......
  • 【面试宝典】28道Java集合高频题库整理(附答案背诵版)
    常见的集合有哪些?常见的Java集合可以分为两大类:Collection和Map。Collection接口下主要有以下几种实现:List:有序的集合,其中的元素可以重复。ArrayList:基于动态数组实现,查询速度快,但在中间插入和删除元素时速度较慢。LinkedList:基于双向链表实现,插入和删除速......
  • 【免费】中国电子学会2024年03月份青少年软件编程Scratch图形化等级考试试卷三级真题(
    青少年软件编程(图形化)等级考试试卷(三级)分数:100 题数:31一、单选题(共18题,共50分)1.   运行程序后,角色一定不会说出的数字是?()A.        2B.        4C.        6D.        8试题编号:20240115-zgq-002试题类型:单选题标......
  • 【免费】中国电子学会2024年03月份青少年软件编程Scratch图形化等级考试试卷一级真题(
    青少年软件编程(图形化)等级考试试卷(一级)分数:100 题数:37一、单选题(共25题,共50分)1.   单击下列哪个按钮,能够让舞台变为“全屏模式”?()A.     B.     C.     D.     试题编号:20240114-hcc-001试题类型:单选题标准答案:D试题难度:一般......