learn-tech/专栏/微服务质量保障20讲-完/16度量与运营篇:如何做好质量和效率的度量与运营?.md
2024-10-16 06:37:41 +08:00

207 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

因收到Google相关通知网站将会择期关闭。相关通知内容
16 度量与运营篇:如何做好质量和效率的度量与运营?
管理学大师德鲁克曾说过“如果你无法衡量它就无法管理它If you cant measure it, you cant manage it”。可见要想有效管理某事务就需要将它全面且有效地度量起来而要想针对某个方面进行改进就需要有针对性地运营。本课时我们就详细聊一聊如何做好质量度量与运营。首先第一个要聊的问题就是度量和运营分别是什么。
度量和运营
度量
软件度量就是衡量软件品质的一种手段,其根本目的是管理的需要,为项目管理者提供有关项目的各种重要信息,其实质是根据一定规则,将数字或符号赋予系统、组件、过程或者质量等实体的特定属性,即对实体属性的量化表示,从而能够清楚地理解该实体。软件度量贯穿整个软件开发生命周期,是软件开发过程中进行理解、预测、评估、控制和改善的重要载体。
听起来不容易理解,我们举个实际的例子。
在软件项目过程中,经常会听到某个测试人员小 T 有这样的“抱怨”:开发人员小 D 的开发质量太差了。又过了一段时间,小 T 反馈说小 D 的开发质量有所提升。单看这两次主观的评价,无法评判小 D 的开发质量究竟有多差,也无法评判小 D 的开发质量是不是在变好。这是因为这里提到的”开发质量“和”有所提升“都只是小 T 的主观感受,不客观,更不量化。
假如我们用“缺陷工时比”这个指标来度量小 D 的开发质量,则可以记录小 D 完成每一个开发任务所耗费的工时数和测试该任务所发现的缺陷数,用缺陷数/工时数可得到缺陷工时比。观测一个周期内这个数值的变化,就能知道小 D 开发每一个任务时的质量现状,以及这个周期内的变化趋势。如果小 D 想要提升开发质量,也知道具体提升的是哪个数据,从而拆解出要做的具体事情。
从上面的例子中也不难看出度量的价值和意义。
使现状有客观的评判:度量可以告诉我们现状如何,或者具体问题所在。
对目标有统一的共识:对目标有共同的认识,或者具备统一的评判标准。
使改进更聚焦和精准:质量是个宽泛的概念,如果不能聚焦到特定的指标,则无法做到有的放矢。
运营
运营,通常着眼于软件产品的全生命周期,以某一内容为核心,数据驱动,通过一系列的良性循环干预动作,最终提升该内容的某项或多项指标。
比如,产品运营是通过一系列人为干预动作来提升产品各维度的指标;内容运营是通过人为干预使内容从生产、加工、互动、消费直至输出形成一个良性的循环;用户运营是通过人工干预使产品和用户产生联系,从拉新、留存、促活一直到商业变现形成一个良性的闭环;活动运营是针对某一活动进行策划、执行、评估、改进的全过程项目管理。
可见,运营的本质是发现问题、拆解问题、解决问题的过程,它强调其人为干预动作需要形成 PDCA 正向循环。
本课程中”度量与运营”中的运营,与上面的运营序列不同,它是用运营的思路深入到质量保障全过程中,通过数据驱动提升质量、效率、价值等多方面的度量指标,最终实现业务价值。
质量是测试团队和测试人员的第一要务,因此,我们首先来看下质量度量和运营。
质量度量体系
质量度量的核心指标
我们知道,质量保障的目标是线上环境没有故障和缺陷,这是最终交付给真实用户的质量,即交付质量。那么,质量度量是不是只关注交付质量指标就足够了呢?答案显然是否定的。因为如果只关注交付质量,往往达不到提升交付质量的目的。比如,你每天关注线上交付质量,忙着一个又一个的项目,一段时间过后,发现线上环境的故障数和缺陷数未见减少,这时候你甚至不知道根因出在哪里,应该如何改进,现有的工作哪些要继续保持哪些要放弃,等等。
这是因为交付质量是滞后性指标,当你知道它时,它已经发生了。要想避免此类情况,还需要多关注并改善引领性指标。生活中的减肥的场景更能说明问题。
有过减肥经历的同学应该知道,减肥过程中,你通常会特别关注体重本身,经常时不时地去称量体重。观察了一段时间体重后,发现效果不好,你渐渐放弃了后续的坚持,减肥计划再一次泡汤。在这里,体重就是一个滞后性指标,当你知道体重时,之前做的减肥的改进动作都已经发生,不能再改变。而减肥的过程中,卡路里的摄入量和能量的消耗量则属于引领性指标(引领性指标通常具有两个特点:预见性和可控性)。很显然,每天摄入的卡路里-燃烧的能量=每天最终摄入的能量。只有保持这个数值在一段时间里是负数,减肥成功才有希望。
滞后性指标:顾名思义,就是事情已经发生之后产生的数据。
引领性指标:与滞后性指标相反,是一个前置指标。
滞后性指标只能告诉你目标是否达成,不会告诉你怎么样达成这个目标(即过程)。而引领性指标,对结果可预见,过程可控制。所以,在软件交付过程中,要从关注滞后性指标改为关注并改善引领性指标。交付过程中的过程质量则是引领性指标,按照交付阶段,产品交付过程又分为需求阶段、开发阶段、测试阶段、发布阶段,因此质量度量可以进一步细分为按如下核心指标。
(1) 交付质量
对于微服务来说,线上质量可以通过如下维度来度量。
从上述指标不难看出,保障交付质量是要努力减少线上故障和线上缺陷,降低故障级别。微服务架构线上故障几乎不可避免,那么就需要最大限度地降低线上故障的影响,比如降低线上故障的恢复时长,减少对生产环境真实用户的影响。
(2) 过程质量之需求质量
在产品交付过程中,需求的规划和评审是起点,所以规划质量和内容质量会间接影响到代码质量和测试质量。需求质量通常有两层理解,一是需求所涉及的研发项目的质量,这种理解比较接近整个需求开发的过程质量,二是该需求所对应的 PRD 的规划质量和内容质量,本文指的是第二种。
PRD 的质量可以用如下指标来衡量。
一般来说,需求质量 Bug 数应该占总 Bug 数的 5% 左右。需求评审打回的标准可以是发现 5 个逻辑类的问题。需求评审打回、需求变更、需求插入等情况,对软件过程的健康度和质量有较大危害,建议制定相对严苛的流程规范,并结合质量运营手段来应对此类情况,以减少此类情况发生。比如需求评审不通过时,需求文档的作者需要向相关人员发送重新评审的申请邮件,并针对当次打回情况做改进分析。
(3) 过程质量之开发质量
我们在工作中,经常会反馈开发质量差的问题,但是有多差、差在哪里,又很难说清楚。常见的开发质量指标有:
一般情况下,提测质量等于 1 才符合预期,即 15/15、12/12 等,因为只要有 1 条冒烟用例执行不通过,则可以进行提测打回。你可能会好奇,既然有 1 条执行不通过就提测打回,那么是不是就不用执行后续用例了,直接记录提测打回数为 1 不是更好吗?这是因为,即使提测打回的情况下,比如提测质量是 115 还是 13/15还是有很大区别的这也是为了后续更好地进行质量分析和运营。
(4) 过程质量之测试质量
质量度量过程中,测试团队和人员自身的测试质量也需要额外重视,常见的指标有:
(5) 过程质量之发布质量
发布环节直接操作线上环境,是非常关键的一个环节,它的质量不容忽视。所以,需要特别留意发布类的相关指标,常见的有:
构建失败率,在一个特定的时间段内,构建失败次数占总构建次数的比率,反映了构建的质量;
发布回滚率,在一个特定时间段内,回滚次数占总发布数的比率;
非发布时间发布次数,指不同的业务有着不同的高峰时间段,比如外卖业务高峰时间段是一日三餐时,所以发布时间应该尽可能避开业务高峰时段。如果没有合理的原因,又没有避开业务高峰期时,可以记录为一次非发布时间发布。
通常情况下,构建失败率和发布回滚率应该控制在 1% 以内,所以每一次发布失败和发布回滚都值得深入分析。非发布时间发布,很容易造成线上故障,且由于处于业务高峰时段,出现故障时容易出现“雪崩效应”,造成的业务影响难以估量,因而应予以杜绝非发布时间发布线上服务。
质量度量实践认知
在进行度量的过程中,我也走过不少弯路,踩了坑,产生了一些经验和认知,这里分享给你。
质量度量指标一定要符合 SMART 原则,否则它充其量是一个愿景,不可落地。
SMART原则构成
指标必须是具体的Specific
指标必须是可以衡量的Measurable
指标必须是可以达到的Attainable
指标是要与其他目标具有一定的相关性(Relevant)
指标必须具有明确的截止期限Time-bound
质量度量是质量现状的镜子,要想改变现状,首先要接受现状。
追求单一或局部指标的提升比较容易,但很容易产生扭曲行为,构建指标体系并整体提升才是正确的路。比如,要想降低千行代码 Bug 率,可以在不增加 Bug 数量的前提下,有意稀释代码,这样该指标肯定能降低,但没有任何意义,自欺欺人罢了。
度量指标的确定,要与相关方达成共识,自上而下认可它们。质量不是测试团队自己的事情,需要产品研发相关方共同的努力。如果制定了一个度量指标,需要相关方提升它,但相关方并不认可它,就容易产生太多无效沟通和扯皮。
另外,《精益软件度量》提道:度量是把双刃剑,具有极强的引导性。度量指标会激励团队重视并改善能够度量的元素,也会导致你忽视无法度量的元素,并使得问题进一步恶化。
质量运营
质量运营的目的是质量改进,质量度量是其着陆点,因为形成了多维度的质量度量体系,所以当出现质量痛点或质量隐患时,可以比较容易在度量指标上得以体现。质量运营是基于质量痛点进行分析,找到可能的解决方案,制定规划并推进,对其进行阶段性地复盘和改进。
我们之前一直有讲过 PDCA它把质量运营各项工作按照作出计划、计划实施、检查实施效果然后将成功的纳入标准不成功的留待下一循环去解决。如下通过 PDCA 四个方面对质量运营展开说明。
PPlan制定改进计划
质量改进计划的制定是质量改进过程的第一步,也是最为关键的一步,你可以从如下改进思路制定计划。
质量痛点驱动:针对日常研发过程中出现的质量痛点问题进行复盘,分析问题所在,制定出可落地的改进方案,利用质量度量体系评估改进效果,从而闭环质量改进过程。
质量目标驱动:从组织管理视角定下来总体质量目标,进而拆解出各个团队在各项度量指标上的合理目标值;在日常研发过程中收集各项指标数据,针对不满足目标的团队进行定向管理和数据分析,从而制定出可落地的改进方案。
通常来说,初创业务或成长期业务下,业务变化快,质量保障建设薄弱,质量痛点问题多,质量目标难以确定,这时候以质量痛点驱动为主。随着业务逐渐成熟和稳定,质量在业务中的重要性更为凸显,对质量目标的要求越来越高,这时候以质量目标驱动为主,质量痛点驱动为辅。
DDo实施落地计划
无论采取怎样的质量改进思路,质量运营都是一个持续运转和迭代的过程,运营周期不同,目的和关注点也有较多不同,具体如下:
数据收集和聚合
有了质量度量体系,还需要针对这些指标所对应的数据进行收集和聚合,这就需要在产品研发过程的关键环节进行”埋点“,对关键过程数据和结果数据进行存储。因此,建议利用成熟的项目过程管理工具,如 Jira、TAPD 等。随着度量指标的丰富,可能还需要进行二次开发或者自建平台。
CCheck复盘和反馈
复盘是质量运营中非常关键的环节,它起到了承前启后的作用。它的最佳场所,常常体现在各种书面总结报告或复盘总结会议上,能够起到最大程度的效果触达,同时提升相关团队的质量意识和认知。报告:如,测试报告、质量周报、质量月报,等等。
会议:如,周会、月会、季度总结、半年总结、大型项目复盘会,等等。
AAction改进和推广
基于前面的步骤,可以知道质量运营计划和改善策略是否有效,如果有效,则进行推广,反哺到日常研发过程中,尽量形成平台能力或可落地的规范。
比如,经过一段时间的质量度量与运营后,当各团队的 Bug 工时比都小于 0.6,那么可以和相关方团队达成共识,将标准提高到 0.4。而如果改善未达预期或完全无效,则可进一步分析原因,从而优化或改进落地计划。
质量运营实践认知
在这里,我也分享一些质量运营的实践认知给你,希望能帮助到你。
很多测试团队所做的质量运营都止步于通晒数据,而事实上最重要的是要基于数据进行分析,帮助相关方做改进,同时跟进反馈改进的效果。看数据谁都会看,做改进才是主要。
质量运营需要推动多个团队配合,应“先礼后兵”,不可轻易用向上管理的激进方式。首先,采用向上管理的方式容易使团队间产生对立情绪,影响日常协作。其次,以我多年的经验,没有哪个团队不重视质量,只是有时候它们在质量改进方面并不是足够专业,这时候反而是测试人员扮演老师和教练角色的时候,带领他们一起做分析、改进和提升。
总结
本节课我讲解了度量与运营的基本知识,包括度量的意义(使现状有客观的评判、对目标有统一的共识、使改进更聚焦和精准),以及运营的本质,它是发现问题、拆解问题、解决问题的过程,强调其人为干预动作需要形成 PDCA 正向循环。
接着我讲解了产品研发过程中针对质量可度量的核心指标,包括交付质量和过程质量。过程质量又分为需求质量、开发质量、测试质量和发布质量。在每一个维度中又有若干个具体的度量指标和含义。同时,我还给出了进行质量度量时的一些实践认知。
最后我讲解了产品研发过程中质量运营的 PDCA 循环。
制定改进计划:采用“质量痛点驱动”或“质量目标驱动”的方式进行质量改进。
实施落地计划:质量运营可以分为“日常运营”、“短期突击”和“长期攻坚”三种类型,并针对度量指标所对应的数据进行收集和聚合。
复盘和反馈:复盘是质量运营中非常关键的环节,它起到了承前启后的作用。它的最佳场所,常常体现在各种书面总结报告或复盘总结会议上。
改进和推广:基于前面的步骤,判断是否有效果。如果有效,则进行推广,反哺到日常研发过程中;如果无效则继续改进。
最后我给出了质量运营方面的实践认知,供你参考。
你所经历的业务或项目,质量度量和运营是如何进行的呢?请写在留言区里。
相关链接
《精益软件度量》张松 著
质量度量指标设定分析:
https://www.dazhuanlan.com/2020/01/29/5e31611a378ad/
质量运营在美团点评智能支付业务测试中的初步实践https://zhuanlan.zhihu.com/p/36714420