最佳实践:独立测试团队敏捷实践探索 | IDCF

科技   2024-10-23 07:58   天津  

点这里👇星标关注,获取最新资讯!


谢鹏,中国民航信息网络股份有限公司重庆分公司,资深软件测试工程师,PMP/ACP/CSPM-3/ISTQB-TA/OBCA/信息系统项目管理师/软件评测师,研发效能(DevOps)技术工程师(中级)学员

一、为什么还有独立测试团队

都DevOps了,为什么还有独立测试团队存在?或者说独立测试团队还有存在的必要吗?回答这两个问题之前,我们先回顾一下软件测试(Software Testing)的发展历程。软件测试是伴随着软件的产生而产生的。早期的软件开发过程中软件规模都很小、复杂程度低,软件开发的过程混乱无序、相当随意,测试的含义比较狭窄,开发人员将测试等同于“调试”,目的是纠正软件中已经知道的故障,常常由开发人员自己完成这部分的工作。对测试的投入极少,测试介入也晚,常常是等到形成代码,产品已经基本完成时才进行测试。到了上世纪80年代初期,软件和IT行业进入了大发展,软件趋向大型化、高复杂度,软件的质量越来越重要。这个时候,一些软件测试的基础理论和实用技术开始形成,并且人们开始为软件开发设计了各种流程和管理方法,软件开发的方式也逐渐由混乱无序的开发过程过渡到结构化的开发过程,以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试为特征。人们还将“质量”的概念融入其中,软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且将测试作为软件质量保证(SQA)的主要职能,包含软件质量评价的内容,Bill Hetzel在《软件测试完全指南》(Complete Guide of Software Testing)一书中指出:“测试是以评价一个程序或者系统属性为目标的任何一种活动。测试是对软件质量的度量。”这个定义仍被引用。软件开发人员和测试人员开始坐在一起探讨软件工程和测试问题。1983年IEEE定义了软件测试及其行业标准(IEEE829),软件测试是“使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。它再也不是一个一次性的,而且只是开发后期的活动,而是与整个开发流程融合成一体。软件测试成为一个专业,需要运用专门的方法和手段,需要专门人才和专家来承担。软件测试是由于软件开发编程行业高度成熟后所形成的产物。

从组织形态和职责划分上来看,软件测试经历了由开发人员自行调试,到专人测试,到专业测试团队,再到融合团队专人测试的发展过程。当前主流的敏态研发流程下,测试工程师通常与开发同处于一个跨职能的融合团队中。融合团队虽然带来了沟通和效率的提升,却也引入了新的问题。尤其是开发和测试,究其根源一个是创造性的一个是破坏性的,不可避免存在对立。但当前大环境下,不论是人数比例、岗位价值、关键角色支持,测试都处于弱势,在融合团队无法有效坚持测试原则、保证产品质量,甚至沦为开发附庸。我们都知道,理想的测试人选应该是能力不亚于开发的专业人士,但以目前国内的行业现状,这几乎是一种奢望。一个Scrum团队规模一般为5-9人,再结合业界4:1甚至更高的开测比,意味着一个团队中通常只有1-2名测试人员。试想1-2名能力和经验都不对等的测试如何坚持在团队中发出有效的反对声音,如何在响应快速迭代的同时提升专业化能力,如何引进或自研组织级工具?再结合分布式多地研发、测试外包等情况,独立测试团队仍然存在。针对达到一定量级的互联网企业,也建议保留测试职能组织,一方面作为敏捷团队的测试人力资源池,另一方面更好的响应系统集成测试(SIT)需求、开展测试专业化探索、打造组织级测试工具或平台、赋能研发团队。推行独立测试团队不是为了推历史的倒车,而是为了更好的践行DevOps和测试驱动开发(TDD)。因此,独立测试团队同样需要敏捷转型,而常规的敏捷框架均基于标准研发团队设计,本文旨在探索和分享一套独立测试团队敏捷实践。

二、敏捷框架选择与设计

敏捷是一种项目管理方法论,旨在通过快速、灵活的方法实现项目目标。它强调团队协作、快速反馈和持续改进,以适应不断变化的需求和环境。敏捷管理强调项目团队的自组织和自主决策,以及通过小规模的迭代周期来实现项目目标。通常情况下,敏捷适用于需求不明确且不断变化的项目,并能较好的应对技术、时间的不确定性。如果把测试阶段看做一个独立的项目,不难发现敏捷完美契合测试团队诉求。

再来看看敏捷带来的收益,只要团队想要达成其中的一个或者多个目标,那就大胆尝试。经过调研和试点,独立测试团队希望通过敏捷解决的核心诉求主要表现为:任务管理更加清晰透明、打破业务壁垒团队共责、提升团队活力和积极性、推进持续改进和自组织。

接下来是选择合适的框架,不存在最好的框架,也没有一种框架是完成适合独立测试团队的。我们选择了Scrum+Kanban+XP相结合,并基于独立测试团队特点进行了裁剪和调整。 

2.1 独立测试团队个性化3356
三个角色:

  • PO(Product Owner):可以由测试经理或测试负责人担任,负责Product Backlog和Sprint Backlog,负责决定做什么和为什么做这些,代表项目团队和客户。

  • SM(Scrum Master):传播敏捷思想,保证Scrum流程,促进团队工作,精心组织Scrum各种仪式,确保团队高效和紧密协作,保护团队不受外界干扰;SM可以是外部教练,但一定不能是团队内“有身份”的人。

  • ST(Scrum Team):均由测试人员组成,按时交付成果,自组织的团队。

三个工件:
  • 产品待办事项集合(Product Backlog):以用户故事的形式表示完整的测试需求列表,可以是来自客户或其他团队的测试任务,也可以是测试能力提升和改进事项;同样推荐As a , I want , so that句式。
  • 冲刺待办事项列表(Sprint Backlog):一个冲刺目标阶段内的用户故事列表,这些用户故事来自Product Backlog,每次冲刺前,PO根据交付价值,将优先级最高的用户故事放入迭代。
  • 增量(Increment):是一个 Sprint 完成的所有产品待办列表项的总和,以及之前所有 Sprint 所产生的增量的价值总和。在 Sprint 的最后,新的增量必须是“完成”的,即完成的测试任务。

五个价值观(与Scrum一致):

  • 专注(Focus)

将故事拆解为冲刺阶段,目标细化,同时也是集中绝对的团队能力,解决既定目标,体现当前的专注,也排除其他插入时间的消耗。

通过在一段时间内只专注于少数几件事情,团队可以很好地进行合作并交付出优质的成果,也能够更快地交付有价值的事项。

专心成就专注,专注造就专业,专业铸就成功!

  • 勇气(Courage)

Scrum团队中的成员,既要有勇气接受看似不可能的挑战,又要有勇气拼尽全力去完成个人承诺要交付的成果,更要有勇气对不合理的要求说“不”。Scrum团队不是单打独斗,大家能够相互支持,因而应当具备足够的勇气去接受更大的挑战。

为了接受并负责任的交付产品,团队成员必须有足够的勇气来对大家说“不”,比如不能承诺时,对纳入Sprint的故事说“不”等,做这些决定其实是需要很大的勇气的,因为前面并不一定是平坦之路,但对自己要绝对自信。

  • 开放(Openness)

在Scrum团队中,每个人都会遇到障碍,每个人都会有长于别人、弱于别人之处。保持开放的心态,公开透明地展示自己的强项、弱点,明确地展示自己的工作进展、遇到的障碍等状态,有助于构建更加团结、凝聚的团队氛围,构建更加稳固的自组织、自管理、跨职能的Scrum团队。

当团队成员遇到障碍,或对某些事项表示担忧,明确无误地表达出来,有助于团队及时采取措施解决问题,预防风险的发生,按时完成团队承诺的交付成果。

开放是体现敏捷可视化、透明性的重要保证。

  • 尊重(Respect)

团队成员具有不同的技能、经历背景,在技术上各有所长,因而才具备交付客户价值所需要的各种技能。保持对别人的尊重,既是最基本的个人涵养,也是团队保持团结、凝聚所必需的人际技巧。

就个人而言,三人行必有我师,常怀空杯心态,尊重每一个人,向不同人的学习,自己才能真正不断成长。就团队而言,彼此尊重,才能凝聚更大力量,才能塑造团队成员之间的信任,在工作中彼此支持、相互帮助,协同工作,分享成功和失败。

  • 承诺(Commitment)

自组织、自管理团队成员主动认领任务,既是对团队的承诺,也是对自己个人能力的自信,更是对交付客户价值的渴望。中国人向来讲究“一诺千金”,每个人都恪守对团队的承诺,不遗余力、竭尽全力去交付自己的承诺,团队才能前进、客户价值才能实现。

由于对自己的命运有更大的掌控,团队会有更坚定的信念去创造成功。

六个仪式:

  • Sprint计划会:在每个Spring开始之时召开,由Product Owner、Scrum Master和Scrum Team全体人员参加。主要确定当前Sprint的目标,选定并估算当前Sprint要处理的最具价值的用户故事,创建Sprint Backlog。

  • Sprint冲刺:一个固定时间长度的测试交付周期,建议为1-2周。

  • 每日站会:15分钟,不讨论问题细节,每个团队成员回答“本次会议之前,自己做了什么?本次会议之后,自己打算或计划做什么?目前,是否遇到了阻碍自己的问题?”。

  • 窗口期:每个Sprint内1-2次,在不影响Sprint周期的情况下,设置窗口期允许必要的变更,以更好响应测试需求,避免因实施敏捷引起其他团队或关键干系人不满。

  • Sprint评审会:全员参与,评审和验收测试结果,PO负责最终确认和拒绝,可以视情况邀请开发参加。

  • Sprint回顾会:用来回顾在当前结束的Sprint中的工作,进行经验的总结、反思,并拟定相应的改进措施。

2.2 量身打造的看板

推荐使用JIRA电子看板投屏或物理看板,自定义泳道,团队任务和负载透明化。

2.3 XP之结对测试

倡导结对测试,根据团队成员能力特点绘制能力象限图,结合任务认领情况AB角结对测试;提升交流与协作、提升测试质量、打破业务壁垒提升能力互备。

2.4 独立测试团队与开发团队协同

在独立测试团队推行敏捷并非意味着闭门造车,关起门来搞敏捷。团队中的大部分任务来自于开发,意味着开发即是“客户”,通过邀请开发团队参与评审会、透明化的电子/物理看板、实时同步任务进度等方式,与开发团队保持高度协同。同时,SM也有义务保护团队,在承诺完成必要增量前提下,有精力得以解决技术债务、提升测试人员专业能力,赋能研发过程。通过与开发团队建立良好的合作关系,实现互利共赢。

三、实践流程

3.1 破冰与布道
半天至一天,开展敏捷认知工作坊活动,细分敏捷理论工作坊、团队画像工作坊、团队契约工作坊、故事地图工作坊、开卡仪式工作坊、流水线工作坊、提问沟通工作坊、持续改进工作坊等,视团队情况裁剪,结合场景任务和互动游戏,快速破冰并建立团队契约,帮助团队成员提升敏捷思维、加强沟通与协作能力。

3.2 驻场转型

2-4个迭代,由经验丰富的敏捷教练驻场指导,参考独立测试团队敏捷框架,带领团队成员适应各自角色,熟悉相应工件、仪式;接受必要的试错成本,敏捷教练以观察者身份参与和记录问题,引导团队不断思考和改进;物色和培养团队自己的SM。

3.3 自驱运转

4-6个迭代,由团队自己的SM组织各种仪式,鼓励团队自驱,形成团队自己的节奏和“套路”,专业教练仅作为受邀嘉宾参与回顾会;必要时SM可轮值帮助团队更快理解和适应敏捷模式。

3.4 评估与建议

从共责、需求、响应速度、交付保障、沟通、治理六个维度,每个维度又分为阻碍进步、中立保守、相互配合、运转流畅、适应变化、改革创新六个等级,随机访谈团队成员,综合评判团队敏捷成熟度,并给予分析建议。

3.5 持续改进

建立基于敏捷方法的持续改进机制,鼓励团队成员不断提出改进建议并付诸实践;为团队成员提供持续的敏捷方法和工具培训和支持,确保他们能够适应不断变化的工作环境和需求;推动组织文化变革,营造更加开放、协作和创新的工作氛围。

四、经验总结

灵活变通、大胆尝试。敏捷是一种理念,而非一成不变的方法。最适合团队的才是最好的,领悟敏捷思想精髓的前提下,灵活选择工具和方法、自定义仪式和行动项。没有不适合敏捷的项目和团队,只是没找到适合的道路。目标是提升团队效率和自驱的持续改进能力,而非照猫画虎追求“形似”。
持续传教、信任团队。敏捷想要取得成效并非一朝一夕,尤其是在相对独立的职能组织内部,前期的成本增加甚至不可避免。持续传教和影响团队,充分信任团队,需求必要的上层支持,让团队乐意接受敏捷、感受敏捷带来的变化、自发维护敏捷。弱管理重教练,避免命令式沟通,允许试错成本,让团队找到属于自己的敏捷之路。

推行敏捷有助于独立测试团队更好的融入DevOps研发体系,是在提升效率和保证质量之间寻求平衡的一种破局之法。局部的独立是为了更好的融合,量身打造的个性化敏态共同筑牢组织的稳态。

参考文献

[1]《软件测试完全指南》(Complete Guide of Software Testing),Bill Hetzel

[2]《Scrum官方指南》,Ken Schwaber、Jeff Sutherland


END

《研发效能(DevOps)工程师》工信部教考中心-职业技术证书
12月20日,开始招生,本年度最后一期!
报名咨询:黛西老师159 1031 7788
🏆 考取证书,提升职业竞争力!
1门顶5门,学习端到端的研发生命周期!
稳稳拿捏400+技术技能知识点。

DevOps
分享研发效能(DevOps)相关趋势、发展、技术、实践等优质内容和组织相关活动。 IDCF国际DevOps教练联合会,培养端到端研发效能人才,链接高效能组织与个人,成就不凡。
 最新文章