一个软件测试工程师的成长日记(连载二)

发表于:2013-5-02 10:38

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:《从菜鸟到测试架构师    来源:51Testing软件测试网采编

  1.2  开发团队做的远不仅是开发

  加入团队已经有一段时间,小艾逐渐发现,在工作中,似乎每个人都在做不一样的事情,而每个人在团队中的位置都显得不可或缺。一个疑问从小艾的心中冒出来:为什么团队中大家似乎都在做不同的事情?开发团队有多少种角色?测试团队又有多少种角色?测试专家的核心价值究竟在哪里?

  凯文的解答从讲述团队分工开始。

  细致的分工能提高效率的道理已经在许多需要专门技能的领域得到充分证明。在软件开发领域,分工的作用同样突出。分工的结果是,团队的成员根据分工的结果担当不同的角色,在其位,谋其职。

  在一个软件开发团队中,狭义上从事开发任务的成员其实只占其中一部分;开发以外的其他任务,如项目管理、设计、测试等在软件开发过程中同样非常重要。作为测试团队中的一员,小艾有必要了解更多关于测试团队中角色分工的内容。测试在软件开发过程中的重要性,在许多人心目中并不那么突出,但实际上,软件的好坏,在很大程度上是由测试决定的。

  1.2.1  术业有专攻

  在知识密集型的社会,人是最关键的资源。软件开发的产出和从业人员的技能密不可分。然而,随着软件系统的复杂度越来越高,驾驭软件开发所需的人力资源远远超出单一个体的可承受限度。从这个角度而言,分工是解决个人控制力有限的唯一方法。从经验和效率的角度看,一个团队中的个体在技术和经验上各有千秋,分工能更有效地发挥人的长处。

  在一个成熟的开发团队中,细致严密的分工使团队能以更高的效率运作。分工有助于提高效能的奥秘在于,绝大多数情况下,专注的人在效率上要高于注意力分散的人。细致的分工有利于凝聚人的注意力,提高熟练程度的同时减少切换带来的开销。在软件开发团队中,特别是使用了敏捷开发以后,团队的角色分工是非常明确的,每个成员根据各自的角色,专注于开发过程中的相应任务。

  电子商务平台是一个涉及多种业务场景的复杂软件系统。软件开发任务的顺利完成,必须依赖于一个角色完善的团队的紧密合作。那么团队中究竟都需要哪些角色分工呢?

  小艾所在的开发团队使用Scrum模式敏捷开发,是已经被证实可以提高开发效率的开发方式。按照敏捷开发的团队角色划分方式,Scrum团队的核心角色主要包括产品负责人(Product Owner)、Scrum Master及团队成员(Team)。在Scrum团队的外围还包括客户(Stakeholder)、经理(Manager)等角色 。

  团队成员主要负责产品的具体开发。每个团队成员有具体的分工,如架构师、开发人员、测试人员、文档设计人员等。团队成员组成执行团队,这是个自组织、自定向和跨功能的执行团队。执行团队通过直接的行动推进项目的进度,以达到计划的目标。执行团队一般由5~9个各方面的专家组成,团队的组织结构文档贯穿整个开发周期。团队成员都是开发周期里各个领域的专家,他们使用专业的技能完成开发任务。对每种角色,通常都有一套技能集(Skill Set),通过技能集,可以定义一个角色应该具备的能力,反过来也能够判定一个员工是否具备担当某个角色的专业素质。

  架构师是对软件开发过程的各个领域都具备一定专业技能的人员,主要任务是把软件开发的需求转化为可以实现的抽象设计和具体设计,并完成相应的设计文档。同时,架构师还需要把业务化的需求转化为技术化的功能性需求及非功能性需求。架构师需要参与软件开发各个阶段,也作为审核人员对详细设计和开发计划进行审查。架构师的技能特点是,具有更高视角,对技术的发展方向能够有全局的把握,对业务也有深刻的认识。可以说,架构师的知识体系兼顾了深度和广度。

  开发人员的职责是根据抽象设计和高层次的具体设计进行更细化的具体设计,并按照设计完成编码实现及单元测试任务。在测试阶段,开发人员还有完成问题分析和解决缺陷的任务。由于软件的代码实现都是由开发人员完成的,因此开发人员的开发技能与软件是否以高质量完成有重要的关系。开发人员具有把宏观任务抽象化和把抽象概念具体化的能力,能够以微观的视角完成功能细节的开发。作为开发人员,卓越的理解能力和编码能力是必需的。

  测试人员的任务是根据软件设计文档编写测试计划,并按照测试计划对软件进行测试。要完成的测试种类是根据需求定义的,在复杂软件系统的开发团队中,通常包括多种类型的测试人员,分别对各自的领域进行有针对性的测试。测试人员从另一个角度促进软件的开发过程,其工作的重点是发现问题和解决问题,因此,这对测试人员的洞察能力和分析能力提出非常高的要求。测试人员除了掌握测试方法学以外,还需要具有良好的抽象思维能力和逻辑分析能力。

  文档设计人员的任务是根据需求文档和设计文档,设计编写交付给用户的说明文档和使用手册。文档对于软件产品的重要作用是不言而喻的,完备的文档是成熟软件产品必须具备的交付成果。一套好的文档在很大程度上决定了软件产品能否顺利被最终用户接受。文档对于开发团队也有重要的意义。清晰细致的技术文档对于产品维护的帮助也是不言而喻的。为了完成文档的设计,对文档设计人员的技能要求丝毫不能马虎。文档设计人员需要具有突出的表达能力和叙述能力,善于把抽象的问题具体化,另外,还需要有一定的艺术才能。

  在团队的外围,相关的角色还有客户和经理。

  客户是软件产品的直接利益相关者,他们从业务的角度提出对软件产品的需求。从本质上而言,客户是开发软件的根本动力,为软件开发支付相应的费用。在开发过程中,他们需要对软件的进度、是否满足需求进行相应的把关,并参与阶段性的回顾。客户的特点是对业务有深入的理解,能够清晰地理解业务流程。

  经理在团队中的任务是控制开发进度、解决团队的资源问题、对团队的运行进行技术性的指导等。根据这三种不同的任务,可以有三个人分别担当不同的经理角色,分别是项目经理(Project Manager)、人事经理(People Manager)及指导经理(Coaching Manager)。通常情况下,也可能是一个成员同时兼顾多个经理角色。经理不直接参与项目,但在项目的外围提供关键的支持,为软件开发营造良好的环境,因而需要有更高的视觉和领导力以完成相应的任务。

51/512345>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号