提升总体研发效率

简介: 高质量单元测试虽短期耗时,但长期显著提升研发效率。它减少调试时间、增强代码变更信心、提升代码自解释性、优化Code Review效率,并支持高频发布。尤其在长周期项目中,ROI随时间持续增长,是保障交付质量与速度的关键实践。

磨⼑不误砍柴⼯,⾼质量、完善的单测可以提升研发质量和效率,加快项⽬总体交付速度。这句话乍⼀看是反常识的,写单测往往⽐写实现逻辑要更耗时,怎么还能提⾼效率?这也是⼤家不写单测最常⻅的理由:“项⽬赶进度,来不及写单测”。如果我们的项⽬⽣命周期是以⽉计算的,写个原型很快就下线了,那写单测的确ROI不⾼。但阿⾥有很多to B的业务,提供给⽤户的能⼒都是以年计算⽣命周期的,⾼质量代码的ROI随着时间推移会越来越⾼,具体体现在以下⽅⾯:
● 减少debug时间:上⾯提到种种提升debug效率的原因,这⾥不再重复。⼀⽅⾯更⾼的单测覆盖可以节省debug所花费的时间,另⼀⽅⾯有充⾜测试覆盖的项⽬本身bug数量就会更少。举个现实中的例⼦:某团队由于历史上⽋的种种债务,基本全靠端到端测试,毫⽆单元测试覆盖。造成的后果也⾮常严重,团队oncall的同学 > 50%的时间都是在修复各种奇怪的bug,没法投⼊宝贵的精⼒到架构升级等⻓期更重要的项⽬上。
● 增加代码变更的信⼼:前⾯提到没有测试覆盖的代码没⼈敢碰,有充⾜单测覆盖的代码可以显著提升改造代码的信⼼和意愿。再给⼤家举个例⼦:我加⼊阿⾥之前在Google总部⼯作过将近⼗年。如果你在Google⼯作过就会发现,你的代码经常会收到毫不相关团队成员发起的code change。⼤多数情况下这些都是同学们⾃发的去做⼤⾯积重构(mass refactor),⽐如看你的Java代码没有⽤Builder模式,就会帮你做个重构(Google⾥有⼤量⾃动化⼯具简化这些重构⼯作)。我们抛开主观意愿不谈,如果是没有测试覆盖的代码、还是毫不相关组的,你敢这么重构吗?我们都希望能有像⾕歌那样整洁的代码,但没⼈敢碰的代码怎么变得更好?
● 提升代码⾃解释性:⽂档能够提升代码的⾃解释性,让研发效率更⾼。好的单测其实也可以被看作代码的⽂档,通过读测试就能快速理解代码的作⽤(参⻅TDD)。单测作为⽂档同时还完美的解决了⽂档保鲜的难题,给开发者提供了⼀套⾼质量、随着代码不断更新的⽂档。
● 更⾼效的code review:不是所有的问题和设计上的缺陷都能通过静态检查发现,这也是为什么需要⼈⼯code review作为代码质量的最后⼀道防线。在Google,代码评审是代码合并最重要的⼀个环节,因此评审的效率直接影响总体的研发效率。好的单测覆盖能够减轻评审⼈的负担,让他们把精⼒投⼊到更重要的部分(⽐如代码设计)。
● 更频繁的发版:敏捷开发倡导的持续集成、持续部署的前提就是全⾯、⾼质量的⾃动化测试。敏捷开发对于研发的提效就不多展开了。但光是能够更快速的发版本身就已经⾮常有价值了。

相关文章
|
8月前
|
物联网 数据挖掘 BI
RFID重塑学校资产管理新格局
RFID技术革新学校资产管理,通过快速盘点、流程简化、数据精准、实时追踪等功能,实现资产全生命周期管理,提升效率与透明度,助力智慧校园建设。
|
7月前
|
JavaScript Java 关系型数据库
基于springboot的高校运动会系统
本系统基于Spring Boot、Vue与MySQL,实现高校运动会报名、赛程安排及成绩管理的全流程信息化,提升组织效率,杜绝信息错漏与冒名顶替,推动体育赛事智能化发展。
|
9月前
|
人工智能 前端开发 开发者
国产 AI 再放大招!智谱开源 GLM-4.5V,视觉推理能力“屠榜”全球
智谱 AI 推出新一代视觉推理模型 GLM-4.5V,具备多模态融合推理、长上下文记忆与精准定位能力,在 42 个多模态榜单中斩获 41 项 SOTA。模型参数达 106B,支持图像、文本、视频输入,广泛应用于图像理解、视频分析、GUI 操作、文档解析等场景。同步开源桌面助手,助力开发者高效实现自动化任务。GLM-4.5V 以强大性能,引领国产 AI 走向全球前沿。
|
9月前
|
安全 持续交付 Docker
Docker:重塑现代软件交付的容器引擎
Docker:重塑现代软件交付的容器引擎
|
10月前
|
存储 数据采集 数据可视化
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵溯源与治理策略展示中的应用(191)
本项目探索了基于Java的大数据可视化技术在城市交通拥堵溯源与治理策略中的应用。通过整合多源交通数据,利用Java生态中的大数据处理与可视化工具,构建了交通拥堵分析模型,并实现了拥堵成因的直观展示与治理效果的可视化评估。该方案为城市交通管理提供了科学、高效的决策支持,助力智慧城市建设。
|
JSON 前端开发 JavaScript
搞定 XLSX 预览?别瞎找了,这几个库(尤其最后一个)真香!
本文来自【沉浸式趣谈】,探讨前端处理Excel的三大主流库:xlsx、Handsontable和ExcelJS。 - **xlsx**:轻量高效,适合简单读写数据,但样式支持有限。 - **Handsontable**:功能强大,提供类Excel在线编辑体验,但商用需付费且性能消耗较大。 - **ExcelJS**:现代全能,API友好,支持复杂样式与公式,免费开源,推荐用于精细处理场景。
1235 0
搞定 XLSX 预览?别瞎找了,这几个库(尤其最后一个)真香!
|
存储 缓存 算法
Python后端技术栈(八)--系统设计
Python后端技术栈(八)--系统设计
|
编解码 前端开发 JavaScript
web端 本地调用摄像头、前端摄像头
web端 本地调用摄像头、前端摄像头
|
小程序 JavaScript Java
二手交易|校园二手交易小程序|基于微信小程序的闲置物品交易平台设计与实现(源码+数据库+文档)
二手交易|校园二手交易小程序|基于微信小程序的闲置物品交易平台设计与实现(源码+数据库+文档)
1497 2