为什么单元测试不是持续交付的唯一答案
- 原创
- 2020-07-16 14:33:22
- 李晓琳
- 900
如果目标是对客户和用户做出更好的响应,软件团队需要专注于软件交付周期的更快迭代,并围绕快速响应用户反馈进行组织。虽然可能有如每月发布数量这种代理指标,但采用持续交付的最佳衡量标准是跟踪从反馈到更新软件的时间。
但是如果只是拼凑性地进行持续交付,将无法达成目标。
人们很容易从渐进的角度来看待一个组织如何从现状发展到它想驻足的位置。虽然渐进永远是正确的方法,但目前仅仅迈出第一步的企业不应自欺欺人地认为自己已经走得足够远。
不要依赖于CI/CD工具
通常,团队实行持续交付都是从一些自动化的单元测试来自动化构建过程开始。这是一个很好的开端,但是不要花太多的时间去关注单元测试覆盖的代码行数。相反,企业应该将自动化测试的注意力集中在 验证核心业务流程、用户事务和用户交互上,以确保它们仍然按照预期和业务有效运行所需的方式运行。
一般来说,即使是正在追求CI/CD的组织,也会存在着将变革视为风险的心态。这就不可避免地导致了这样一种信念:更改的频率应该降低。这与持续交付正好相反,它会对企业完全接受CI/CD造成阻碍。
较小的变更本质上会带来更小的风险,这意味着 高生产率的软件组织应能够更快地迁移。 持续交付的概念和前景取决于企业不断部署微小变更的能力。有必要期望进行频繁的发布。
范围软件相应更改
那些单纯使用传统思维方式(CI工具、单元测试和验收测试)进行这项工作的企业仍然没有获得任何真正的好处。 企业正在部署的变更范围应该作为它在软件开发生命周期中可以承受的质量问题级别的指导方针。另一个常见的问题是,当一个组织决定将事情分解为一些小的变更,但是仍然需要开一系列的会议,变更控制委员会或者开发团队必须经过的严格的安全检查。如果您的组织的目标是通过部署较小的变更堆栈来加快进度,那么在全面重新考虑内部正式的发布周期方法之前,它不会有任何进展。
在政府机构等严格监管部门工作的组织,必须通过对其发布的产品进行修改和必要的文档化来克服这些挑战。政府部门以外的组织可以效仿他们的例子,通过对软件进行更改并描述这些更改将如何影响标记版本内的用户来克服文档需求。一个很好的例子就是美国政府的cloud.gov团队如何通过编程生成文档,比如他们的系统图。
组织如何解决这个问题
许多企业陷入推行CI/CD至一半的境地——他们有各种各样的工具来允许一些这样的实践,但是内部流程、检查表或管理权限下的决定阻止了组织以正常的节奏发布更新。大量的开发人员被困在传统的软件开发周期中,他们甚至不尝试CI/CD,或者通过专注于工具、测试和自动化来接受CI/CD的人工版本。
有两种方法可以解决这个问题。 一种方法是首先使用CI/CD工具,并授权各种开发团队开始在公司范围内使用公共构建服务。另一种方法是确定将从较高的开发速度、较小的变更集中获益最多的开发团队,并允许从该实践中获得的经验渗透到整个业务中。
后一种模型在大多数情况下会工作得更好,因为所涉及的人员数量被保持在最低限度,而IT组织中更关心遵从性和审计的部分将有更大的灵活性来理解单个应用程序范围内发生的事情。企业应该更愿意在单个应用程序和团队中推行试验,而不是试图推动整个公司一起进行转变。