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

陈哥聊测试
• 阅读 227

为了让持续集成和持续交付(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.

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
PPDB:今晚老齐直播
【今晚老齐直播】今晚(本周三晚)20:0021:00小白开始“用”飞桨(https://www.oschina.net/action/visit/ad?id1185)由PPDE(飞桨(https://www.oschina.net/action/visit/ad?id1185)开发者专家计划)成员老齐,为深度学习小白指点迷津。
Wesley13 Wesley13
3年前
VBox 启动虚拟机失败
在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
3年前
DevOps世界中的软件开发
!(https://oscimg.oschina.net/oscnet/f40e68cbfe8148deb00f040b4e917a0a.jpg)在整个软件开发过程中,开发人员通常需要花费大量时间来修复错误和漏洞,以便一切按计划进行交付。但是,通过DevOps实践,可以更轻松地管理和保护这些问题。这是由于以下事实:使用DevOps实践的软
Stella981 Stella981
3年前
Jenkins 插件开发之旅:两天内从 idea 到发布(上篇)
本文首发于:Jenkins中文社区(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fjenkinszh.cn)!huashan(https://oscimg.oschina.net/oscnet/f499d5b4f76f20cf0bce2a00af236d10265.jpg)
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
陈哥聊测试
陈哥聊测试
Lv1
资深敏捷测试顾问,致力于测试自动化和DevOps等的实践和研究。
文章
45
粉丝
0
获赞
2