上一课时,我讲解了微服务质量保障体系的全景概览。本课时我主要讲解流程规范——高速迭代的研发过程需要怎样的规范呢?
众所周知,产品研发是为业务服务的。在深入讲解产品研发流程之前,我们先整体看下业务流程,分为 3 个阶段:
产品研发阶段是指需求产生到需求上线的过程,这阶段是测试人员的“主战场”。但这三个阶段共同组成了整个业务流程,要做到全流程质量保障,需要具有全局思维。即积极影响产品研发阶段,推动流程规范的制定、建设和完善;对日常运营/运维阶段和售后服务阶段保持关注,定期收集这两个阶段中遇到的问题,做好协同和配合,思考在产品研发阶段如何预防或闭环解决这类问题。
关注圈&影响圈
好的流程规范(Process specification) 能够保障业务稳步进行,使各部门各司其职。要想使产品研发阶段能够有条不紊地进行,就需要制定和执行流程规范。产品研发流程大体分为需求阶段、研发阶段、测试阶段、发布阶段等,每个阶段都需要有相应的流程规范,从而把需求变成软件产品并发布到线上。
流程规范是用来约束有关部门和人员的,在产品研发流程中主要有如下关键角色。
SRE是指Site Reliability Engineer (网站可靠性工程师)。他是软件工程师和系统管理员的结合,一个SRE工程师基本上需要掌握很多知识:算法、数据结构、编程能力、网络编程、分布式系统、可扩展架构、故障排除等。
微服务架构下,一个业务所具有的微服务数量多,服务与服务之间存在着复杂的交互关系,不同服务分布在不同的团队中维护,一个需求通常需要多个微服务团队参与开发,基于这样的背景,在制定流程规范时会有如下考虑:
一个小型需求的产品研发过程,需要产品经理、研发人员和测试人员等角色的协同。一个大型需求,往往是由几个小型需求组成,同一个职能角色之间会有多个人员进行协同,因此,为了有利于协同,降低协同风险,应在每一个角色中设置 Owner 角色。基于此,Owner 角色在一定程度上需要有一些项目管理的意识、知识和技能。
产品研发过程是一个脑力密集型的工作,复杂度高,大量的实践统计表明,在大规模软件开发中超过 50% 的错误来自需求分析和技术设计阶段。为了最大程度地降低风险,在其流程中需要加大评审和讨论环节的投入,通过多方审查的机制来保证过程质量、提高研发效率,所以,需求阶段和研发阶段的早期流程应有好的规范。
高速迭代的研发过程,需要在研发过程的早期,前置发现更多的问题,使后面过程更顺畅,尽量达到“前紧后松”的效果,以降低研发过程的复杂度和风险。
产品研发的子阶段之间体现了承上启下的作用,主导方会发生变化,所以对这些节点要严格把控,避免将风险和问题遗漏到以后解决。
规范的制定没有特定的频率限制,通常情况下,在刚开始进行产品研发时会制定一个粗颗粒度的规范。在之后的项目过程中,出现了现有规范不能解决的问题,则会先商讨出来解决方案,再逐步把相应的流程规范明确下来。一个规范制定出来后,首先优先在测试部门内部进行评审,然后再与协同方达成共识,最后按照一定的节奏开始推广执行。
在将规范进行落地后,应不断跟进执行情况,针对执行不到位的地方进行分析和改进,从而形成 PDCA 循环。
PDCA 循环是美国质量管理专家休哈特博士首先提出的,由戴明采纳、宣传,获得普及,所以又称戴明环。全面质量管理的思想基础和方法依据就是 PDCA 循环。PDCA 循环的含义是将质量管理分为四个阶段,即 Plan(计划)、Do(执行)、Check(检查) 和 Action(处理)。在质量管理活动中,要求把各项工作按照作出计划、计划实施、检查实施效果,然后将成功的纳入标准,不成功的留待下一循环去解决。这一工作方法是质量管理的基本方法,也是企业管理各项工作的一般规律。
当然,规范的制定与落地,还需要结合人员配备情况、工具建设情况协同来看。
流程规范涉及多方协作,其呈现形式的第一要点应为通俗易懂,一图胜千言,建议采用流程图的方式来展现,比如使用泳道图。
泳道图示意图
泳道图,一种 UML 活动图,能够清晰体现出某个动作发生在哪个部门,常见工具有 StarUML、Rose、Visio 等。泳道图在纵向上是部门职能,横向是岗位(有时候横向上不区分岗位)。绘图元素与传统流程图类似,但在业务流程主体上,通过泳道(纵向条)区分出执行主体,即部门和岗位来。
流程规范中对关键字眼或者需要重点关注的信息,需要用醒目的颜色或粗体标记出来。存放流程规范的文档要放在人人可以访问到的地方。
基于此,产品研发阶段的流程可以包含如下内容:
产品研发阶段又进一步分为需求阶段、研发阶段、测试阶段、发布阶段等。
产品需求评审是产品研发阶段中非常重要的环节,通过它可以确保需求表述上没有歧义。需求文档通常的表现形式是产品需求文档(PRD)或市场需求文档(MRD),它们也是技术设计文档和测试设计文档的重要输入,所以这一环节是后续所有工作的基础。
评审要点
通常来说,需求评审必须要确保对于需求的说明没有二义性。除此之外,对于需求还应该满足如下质量要求。
常见的需求表述问题有“同线上逻辑”“同已有逻辑”,或者一句话的概况描述,如“每种状态都需要处理”,却不说明一共有几种状态,这些都非常容易产生理解上的偏差,应该予以杜绝。
其中,测试人员尤其要重视需求的可测性。 早期提出可测试性方面的问题和风险,可以及早应对,从而降低项目风险。否则,到了后续的环节才发现需求不可测,这可能会导致需求变更或技术实现方案的变更,这对质量和效率的影响就太大了。
测试人员如何参与需求评审?
对于测试人员来说,在要进行需求评审或技术设计评审时,通常情况下还在另外一个需求的测试执行过程当中。测试执行过程通常需要投入较高的专注度,所以很多测试人员最最容易出现的情况是,弱化需求评审或技术设计评审环节,投入度较低,等其他需求测试完成了再花精力去熟悉它。 殊不知,这就造成了长期的恶性循环。正确的做法是,强化需求评审或技术设计评审环节,投入较多的精力,前置思考好一个需求中的重点、难点、风险点,提前应对。如果与测试执行时间有一定的冲突,则可以优先投入更多的个人时间来化解,同时在后续的测试执行过程中留有一定的 buffer,几个需求过后,你就会进入一个良性循环。对其他关键的评审环节,如技术设计评审也同样适用。
技术设计主要评审是否满足业务需求的功能和非功能质量属性,以及发布方案是否完备。
评审要点
测试阶段主要分两部分,测试设计阶段和测试执行阶段,测试设计阶段主要是进行测试方案和用例的设计,测试执行阶段主要是在提测后,对测试方案或用例进行执行的过程。
测试用例评审
同样地,测试用例的质量关系到测试执行的质量和测试工作本身的质量。提高测试用例质量,可以通过两种方式,一是尽量将测试用例模板进行标准化;二是对用例进行评审。测试用例评审时间过早和过晚都不好,一般应在提测前 2 天左右的时间完成为宜。
评审要点
如果前面的阶段完成得较好,测试执行阶段和发布阶段就会轻松很多。在这两个阶段,只需要按计划执行,出现风险时要及时并充分地暴露出来。
其中,测试执行阶段会涉及缺陷管理、测试总结与分析、测试报告编写等工作,这些是测试人员的看家本领,此处不再赘述。发布阶段需要前置准备发布内容、采用既定的发布策略,发布完成后实时观察线上日志、并进行线上回归。发布过程如果出现问题,切忌不要在线上解决问题,应立即回滚。线上回归完毕后,需持续关注监控指标,对告警进行及时响应。
这里给出了产品研发的流程图,从该图中可以看出来各个职能角色的关键活动和活动状态流转。其中,所有的“菱形”环节都是需要 PM、RD、QA 三方参与的。
产品研发阶段流程规范
好的流程规范能够保障业务稳步进行,使各部门各司其职。但它也不是万能的,这里给出一些实践经验和认知,供你参考:
本节课我首先介绍了业务流程的三个阶段:产品研发阶段、日常运营/运维阶段、售后服务阶段。其中产品研发阶段是测试人员的主战场,所以测试人员应积极影响产品研发阶段,推动流程规范的制定、建设和完善,同时对日常运营/运维阶段和售后服务阶段保持关注。
其次讲解了产品研发流程中的关键角色(PM、RD 和 QA),制定规范时的关键原则,如各职能角色要有 Owner 角色,整体把控该职能角色的协同,重视评审和讨论环节,提前应对风险,做到前紧后松,并对关键节点的流转严格把控。
最后我阐述了产品研发阶段中的关键步骤,分别是不同阶段中的评审环节以及它们的评审要点。后面我也给出了我在流程规范方面的实践经验和认知,供你参考。
你所负责的项目或业务,产品研发阶段的流程规范是怎样的?你对流程规范有着怎样的理解和困惑,请写在留言区。同时欢迎你能把这篇文章分享给你的同学、朋友和同事,大家一起来探讨。
相关链接 流程规范概念:https://wiki.mbalib.com/wiki/%E6%B5%81%E7%A8%8B%E8%A7%84%E8%8C%83 https://concisesoftware.com/software-development-process/ 项目管理:https://www.pmi.org/pmbok-guide-standards