前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何避免做了也白做的困境,来看看度量的起手式

如何避免做了也白做的困境,来看看度量的起手式

作者头像
Antony
发布2023-11-01 17:15:33
3040
发布2023-11-01 17:15:33
举报
文章被收录于专栏:软件测试那些事

你度量什么,你就能得到什么?

如果我关注产品交付质量的话,那是不是直接度量线上缺陷不就可以了?

真的是这样。

你度量开发人员每天的代码量,就会得到越来越多的......(垃圾)代码。那如果要度量线上缺陷,会不会得到更多的线上缺陷?

首先是不会的,线上缺陷是一个负向指标,此类指标的度量通常会得到越来越少的.....线上缺陷。这也是做此类指标的初心,通过这个指标来牵引团队来持续改进。

不过现实中呢?通常“正常”的团队都首先会去关注线上缺陷的定义,哪些缺陷可以不纳入线上缺陷范畴,其次通过在研发过程中彼此心照不宣地去报告各种bug以做大分母,又或者是用需求、代码行增量等指标来做分母以实现所谓的合理性。

因为背后的数学公式很简单,

假设有99个缺陷和1个线上缺陷,那么缺陷逃逸率就是1%。而好巧不巧如果又发现了一个线上缺陷,那团队为了维持之前的逃逸率目标,就得额外再找99个缺陷来填到分母上。那是不是去和运维探讨一下这个新的是不是线上缺陷更为简单直接 ?

那么我们做度量是为了什么?其实是高质量的交付,而不是线上缺陷本身。

线上缺陷是一个结果指标。结果指标只告诉你结果。That‘s it。

业界有位同行曾经发圈感慨,“当团队在忙得焦头烂额的时候,'你'除了给团队开不符合项,还能做些什么?”团队需要的不是你告诉他们有几个线上缺陷,团队需要的是,有一套行之有效的软件工程方法论,用于指导研发交付过程,以提高取得最终的好的结果的可能性。

高质量交付的这个结果,都是一个个研发过程的细节所构成的。

在阅读了何勉老师等组织编写的《BizDevOps白皮书》之后,笔者发现关于度量的部分,各位专家老师们也提出了类似的问题,并给出了如下的方案模型。

DORA或者通常的度量方案主要会关注交付效能指标,并部分涉及业务结果指标。

“这个上面的三类指标中,越靠右边的是越外部的,接近想要的结果;越靠左边的是越内部的,指向需要改进的行动。”但是右边的指标无法直接知道团队改进。

因此,作为对于团队的来说,高质量交付是通过团队和个人的行为以及能力所达成的。而团队和个人的行为,例如:工程习惯、协作方式、需求并行度、代码评审质量等;也包括技术和工程能力,如:代码质量、架构耦合、测试覆盖率、发布成功率等。这些指标与最终业务目标之间不存在必然性,应为中间存在转化,但是就如前述而言,其中的有些行为和能力会影响交付效能,进而最终可能会影响业务结果。

高质量交付的过程逻辑

因此,作为初始投资度量,希望得到收益的团队,笔者的建议是应该优先关注最左侧的行为和能力指标。通过度量过程是否在遵循最佳实践去保障好的结果。

也就是说,瀑布、敏捷、精益、DevOps这一路走来,软件工程其实一直存在许多朴素的所谓最佳实践。而度量首先要做的,也就是去看团队是否在遵循这些最佳实践,以及遵循的程度。

拍拍脑袋随便想想,就会有如下的一些点

事项

目标价值

能力和行为

需求

做正确的事情,明确需求的价值,优先交付高价值的需求

全局需求优先级设定优先选择高优先级需求

确保需求的正确、完整性,以及需求信息的有效传递

需求串讲、反讲、明确需求完成标准、需求的测试

迭代和发布

持续发布,减少变更影响面,提高交付效率

降低发布批次大小、单需求单应用发布

控制WIP,减少工作切换

单件流

代码

明确为什么要提交这个代码,防止夹带和遗漏

代码提交规范 commit message hook

代码必须符合需求和代码质量规范

单元测试、代码扫描、质量门禁、代码评审控制代码技术债/复杂度

代码需要及时提交,以提前发现问题

持续集成

测试

测试要提前介入

测试设计评审、单件流

做基于风险的测试,提升效率

分层测试、自动化测试、精准测试、测试模式

缺陷要及时修复、验证

度量

度量要精准,且不增加额外成本

价值流数字化,双流联动

根据上述描述,一些努力一下还比较好实现的度量指标如下,

事项

指标

备注

需求

需求-用例关联率

story关联的test用例

单元测试

每个应用的单元测试的数量和执行条次和通过率

体现左移程度

缺陷

缺陷的打开/关闭/存量的数量和时长

缺陷要尽快修复、验证,少遗留

缺陷

每个月修复、关闭缺陷的80%耗时

抛掉无效缺陷

用例

测试用例的复用度:(手工)测试用例被重复执行的次数

(手工)测试用例是团队资产还是一次性的消耗品 ?这是一个问题。

用例的有效度: 测试用例关联缺陷的比例

1、不是所有bug都是测试用例执行时发现的2、(online)bug都应该有(自动化)测试用例去验证它已被修复3、多少个用例能发现一个缺陷?

技术债

各个应用的技术债、圈复杂度 (TOP N)

行覆盖率

单测覆盖率,开发+测试整体覆盖率

发布更应该看整体覆盖率。单测可作为代码准入和提测门禁。

代码扫描

各个应用的代码扫描频次(手动/自动)

持续集成的应用范围和频度

流水线

持续集成频次(构建/测试/部署)

代码合并请求MR

MR评审比率 (有评审comments的MR/全部MR)

MR- 扫描率

MR- 扫描通过率**

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试那些事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 你度量什么,你就能得到什么?
  • 高质量交付的过程逻辑
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档