DevOps研发模式下「产品质量度量」方案实践
在当今互联网环境下,需求变更越来越快,交付周期却越来越短,
怎么判断一个系统是否测试充分?
产品质量满足什么样的条件才能投产?
如何判断测试工作、研发团队工作的效率是高还是低?
这些问题不能靠感觉、拍大脑,而是需要客观的数据来反映。质量度量指标就是用一组数据来客观衡量产品研发环节的各方面情况,作为评审和决策的依据。
而为了能够在产品发布前,对产品质量能够做出比较准确的判断,需要清楚质量的属性,这就需要建立质量模型。
说起质量模型,必然绕不开ISO9126,ISO9126软件质量模型是评价软件质量的国际标准,由6个特性和27个子特性组成,如图一所示。建议大家可以深入去理解各特性、子特性的含义和区别。这个模型是软件质量标准的核心,对于大部分的软件,都可以考虑从这几个方面 着手进行测评。
(图一)
本文就给大家聊一聊关于产品质量度量以及研发效能度量的内容,并分享一些笔者在公司内部的度量实践和观点,希望对大家有所启发。
1. 摆正观点:产品质量度量原则
产品质量度量或研发效能度量的原则:不要与绩效挂钩,而应该作为参考和工具,帮助团队提高效能和产品质量。因为无法覆盖 100% 的度量指标,把度量与绩效挂钩就一定会产生“做数字”的现象。这时,使用质量度量或效能度量非但起不到正面效果,还会对公司和团队造成伤害。
2. 质量度量目标
研发质量度量核心思想一句话来概括:目标驱动,度量对的事;先从全局上找瓶颈,再深入细节;两个基本原则:
度量应聚焦在全局指标而不是局部指标
聚焦在结果产出而不是某阶段工作输出
围绕度量的核心思想和基本原则,在公司团队实际应用度量手段时,最终目标并不是为了提高表面的数字指标,本质还是需要借助度量方法达成以下几个目的:
- 跟踪团队的表现、提高团队工作效率、绩效和产品质量;
- 使用度量来寻找问题而不是用来做绩效考评;
- 使用度量来检验改进措施的效果;
- 提高项目计划、效付的精确度;
- 了解流程是否高效,寻找需要改进的关键领域。
由此我们不应对那些看似繁忙但只产出了一大堆无效工作输出的团队或人员进行奖励,而是引导到那些对促进组织达成目标有实际帮助的工作上去。
3. 效能度量的几个维度
正如刚提到的,度量的目标之一是为了帮助团队寻找问题,并检验改进措施效果,因此不同公司团队所处阶段、研发能力成熟度、团队面临问题的不同,导致了度量方法并没有所谓的唯一性,团队需要根据自己的问题选择合适的度量方法。并且即使是在同一个公司团队内,度量方法也应该是持续演进的,并不是固定不变。
虽然度量方法没有唯一性,但行业众多公司经过大量的度量实践,也有一些普适性的考量维度,供大家参考,大致分为三类:
- 基于研发效能,3个维度:交付效率、交付质量、交付能力。
- 基于团队+个人,4个维度:质量、速度、效能、准确度。
- 基于产品质量,3个维度:产品内部质量、产品外部质量、产品使用质量。
其中,交付效率、交付质量和交付能力,这些指标的提升需要组织进行管理、技术、协作等多方面的系统性改进。
而研发效能度量指标一般用来衡量软件产品的生产过程和产品质量,但公司真正需要关注的是否能产生用户价值。因此如果从质量管理的角度,我更倾向于第三种。
(来源:facebook葛俊老师)
上图分享了一张facebook葛俊老师整理出来的一张研发效能度量指标,里面涉及到的度量指标有很多,实际还远不止于此,考虑到指标数据收集和统计的工作量及其对衡量工作和结果的权重,建议大家可以从众多指标中选取若干指标,并将这些度量指标进一步分为必选和可选两部分,可在不同的测试要求下进行自如地裁剪或添加。
4. 产品质量度量「V2」模型
接下来,分享一下,笔者公司对质量度量的一些实践经验。
结合2020年研发中心产品团队发展现状及团队当前目标,为了更好的促进产品质量发展和研发效能过程管理,笔者将产品质量度量模型进行升级调整为:V2。
新的V2产品质量模型中,将产品质量按照:研发全产品质量、各产品之间质量横向对比、单个产品质量详细等三个版块并从外部质量、内部质量、使用质量等三个维度进行产品效能质量过程管理,并提取出相应的适合当前团队的质量指标。
4.1 全产品质量度量
1、全产品研发质量度量指标导图:
4.2 各产品之间质量度量对比
1、各产品研发质量度量指标导图:
4.3 单产品质量度量
1、单产品研发质量度量指标导图:
PS: 以上指标解释权归本文笔者所有,度量的目的是促进质效提升和检验改进的效果,是一种参考工具,但并非是捆绑手段。
以上只是列举分享了笔者当前正在实践的一些常用指标,实际应用时,结合了度量的通用报告模板、数据模型。当然这些指标并非唯一,仅供大家参考。
5. 小结
其实,使用何种度量方法、指标,是一个仁者见仁,智者见智的问题。所以,通过这篇文章,我更希望达到的目的是,能帮助你对日常工作中最常见的问题进行思考,寻找值得优化的地方,从而提高个人和团队的研发效能。但,我还要强调的是,度量只是辅助,更重要的还是思考。所以,我建议你不要花费过多的时间在指标研究上,要时刻留意实际的投入产出比。
最后,分享一下我个人对效能度量的几大感受:
- 1、度量只是工具,不是目的。切记度量的真正的目标是提高效能,不要舍本逐末。比如说,如果度量花费的时间超过了收益,那就不要去做。
- 2、虽然我们推崇数字驱动,但在效能的度量上,不要过于迷信数字,适当使用主观反馈效果反而更好。
- 3、研发效能的度量看似是一个无解的问题。但如果使用得当,效能度量是可以给公司的研发带来非常大的好处。
DevOps研发模式下「产品质量度量」方案实践的更多相关文章
- 企业DevOps研发模式下CI/CD实践详解指南
阅读全文大概需要 10分钟. 1. 前言 借着公司今年新组建的中台研发部东风,我作为其中的主要负责人,在研发中心主导推行DevOps研发管理模式转变及质量管理创新建设,本篇文章摘取自今年9月底,笔者在 ...
- B 站崩了,总结下「高可用」和「异地多活」
你好,我是悟空. 一.背景 不用想象一种异常场景了,这就真实发生了:B 站晚上 11 点突然挂了,网站主页直接报 404. 手机 APP 端数据加载不出来. 23:30 分,B 站做了降级页面,将 4 ...
- [转载]Web 研发模式演变
原文链接:https://github.com/lifesinger/blog/issues/184 前不久徐飞写了一篇很好的文章:Web 应用的组件化开发.本文尝试从历史发展角度,说说各种研发模式的 ...
- 淘宝玉伯引发Web前后端研发模式讨论
淘宝玉伯是是前端基础类库 Arale 的创始人,Arale 基于 SeaJS 和 jQuery.不久前,淘宝玉伯在 Github 的 Arale 讨论页面上抛出了自己对于Web 前后端研发模式的思考. ...
- Web 研发模式演变
前不久徐飞写了一篇很好的文章:Web 应用的组件化开发.本文尝试从历史发展角度,说说各种研发模式的优劣. 一.简单明快的早期时代 可称之为 Web 1.0 时代,非常适合创业型小项目,不分前后端,经常 ...
- Web 研发模式的演变
前不久徐飞写了一篇很好的文章:Web 应用的组件化开发.本文尝试从历史发展角度,说说各种研发模式的优劣. 一.简单明快的早期时代 可称之为 Web 1.0 时代,非常适合创业型小项目,不分前后端,经常 ...
- 【转载】Web 研发模式演变
一.简单明快的早期时代 可称之为 Web 1.0 时代,非常适合创业型小项目,不分前后端,经常 3-5 人搞定所有开发.页面由 JSP.PHP 等工程师在服务端生成,浏览器负责展现.基本上是服务端给什 ...
- 拒绝编译等待 - 动态研发模式 ARK
作者:字节跳动终端技术--徐纪光 背景 iOS 业界研发模式多为 CocoaPods + Xcode + Git 的多仓组件化开发模型.为追求极致的研发体验.提升研发效率,对该研发模式进行了大量优化, ...
- 「产品运营」研发效能之DevOps平台如何运营?
有人常说「酒香不怕巷子深」.不是的,如果这个巷子是酒吧街,那最深的那家酒吧肯定是租金最便宜的.酒吧的地段好坏已经在租金价格上体现出来了.现在已经不是那个工具缺乏.有个工具就拍手称快.欣然去试用的时代了 ...
随机推荐
- Java实现蓝桥杯历届试题格子刷油漆
问题描述 X国的一段古城墙的顶端可以看成 2*N个格子组成的矩形(如下图所示),现需要把这些格子刷上保护漆. 你可以从任意一个格子刷起,刷完一格,可以移动到和它相邻的格子(对角相邻也算数),但不能移动 ...
- Java实现 LeetCode 470 用 Rand7() 实现 Rand10()
470. 用 Rand7() 实现 Rand10() 已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数. 不要使用系 ...
- Java实现 LeetCode 350 两个数组的交集 II(二)
350. 两个数组的交集 II 给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入 ...
- Java实现 蓝桥杯VIP 算法提高 3-3求圆面积表面积体积
算法提高 3-3求圆面积表面积体积 时间限制:1.0s 内存限制:256.0MB 问题描述 接受用户输⼊的数值,输出以该值为半径的(1)圆面积,(2)球体表面积,(3)球体体积.pi 取值3.1415 ...
- RPM包管理-yum在线管理
常用yum命令 查询 查询所有可用软件包列表,yum list 搜索所有和关键字相关的软件包,yum search 关键字 安装 yum -y install 包名,其中,-y 表示自动回答yes 升 ...
- 实用!看Python如何光速合并多个PDF
大家好,今天分享一个实用的办公脚本:将多个PDF合并为一个PDF, 例如我手上现在有如下3个PDF分册,需要整合成一个完整的PDF. 如果换成你操作的话,是不是打开百度搜索:PDF合并,然后去第三方网 ...
- (三)linux三剑客之sed
一.sed是什么? 二.sed的工作原理? 三.sed的基本用法? 四.sed的进阶使用? 一.sed是什么? sed 就是一个非交互式流编译器: 交互式:文件缓存.人工编译.全局并行可逆 非交互式: ...
- ArrayList、LinkedList、Vector、Array和HashMap、HashTable
就 ArrayList 与 Vector 主要从二方面来说. 一.同步性:Vector 是线程安全的,也就是说是同步的,而ArrayList 是线程序不安全的,不是同步的 二.数据增长:当需要增长时, ...
- RabbitMQ系列之【centos6 服务开启自启脚本】
#!/bin/sh## rabbitmq-server RabbitMQ broker## chkconfig: - 80 05# description: Enable AMQP service p ...
- 伪造随机的User-Agent
写好爬虫的原则只有一条: 就是让你的抓取行为和用户访问网站的真实行为尽量一致 1.伪造UA字符串,每次请求都使用随机生成的UA 为了减少复杂度,随机生成UA的功能通过第三方模块库fake-userag ...