技术文章

软件测试技术——敏捷测试团队组织构成

任何企业进行软件系统研发时,都需要匹配的技术人员与管理人员,传统的软件研发模型中,针对团队组织有完善的职能定义,敏捷模型也不例外。

 

第一章、第二章简要阐述了Scrum敏捷开发模型中涉及的角色,本章重点结合项目案例详细介绍敏捷开发团队中的成员构成与组织架构。

 

2.3.1 团队成员构成

 

【案例2-1 威链优创敏捷团队构成】

 

威链优创是一家创业型公司,创始人根据其对某种行业的理解,如电子商务行业,根据市场需求分析,计划做一款支持PC、移动端的在线商城,创始人自己具有市场、销售经验,但不了解IT技术,不懂如何开发这样的软件平台,则其可寻求技术合伙人。

 

技术合伙人刘某某根据自身的行业经验,分析整个产品的演进运营过程,决定用Scrum模型进行开发,因此,刘某某将构造一个敏捷开发团队,进行相关产品的研发。

 

确定开发模型后,技术合伙人进行团队成员的招聘,此时,需清楚计划构建的团队应当有哪些成员,他们对应的职责又有哪些。

 

敏捷开发团队通常包括以下几类人员:产品经理、项目经理、开发工程师、测试工程师、UI设计工程师、架构设计师等。

 

1. 产品经理

产品经理主要负责当前产品的规划、需求提出、成本预算等工作,产品经理应当将规划的产品告知开发团队,确保每个成员知悉产品愿景,同时从边界角度限定时间、资源的使用预算。

 

敏捷开发中产品经理需编写产品待办列表(Product  Backlog),开发团队根据产品待办列表细化具体的开发活动,当然,产品经理也可将产品待办列表的任务安排具体给其他人,但产品经理应当对结果负责。

 

有些公司将产品经理作为某个产品的具体负责人,以上述的技术合伙人“刘某某”为例,他可以作为产品经理,负责整个产品的组织与开发。

 

2. 项目经理

项目经理与传统的项目经理稍有区别,从敏捷团队的自组织特性来看,敏捷开发团队不应当存在管理级别的成员,所有的管理事务应当揉合在结果驱动的自发工作流程中,即传统项目经理/项目经理的计划、管理、监督等活动在敏捷开发团队中应当弱化,甚至取消。

 

但由于国内对敏捷模型掌握仍然不够深入,很多企业只是采用了敏捷的形式,并未真正做到敏捷开发的要求,因此,不少团队仍然存在传统经理/项目经理这个角色,但这个角色仅起到协调、纽带的作用,不具有管理权限,部分职能上与Scrum Master重合。本教程采用的敏捷项目管理平台禅道,在角色设定中默认设置了“项目经理”这个角色。

 

本教程案例中的开发团队,设置了“项目经理”角色,且由“张某某”担任。

 

3. 开发工程师

承担具体设计、开发任务,针对Sprint中的每个用户故事、开发任务开展工作。当测试工程师发现缺陷后,开发工程师与他们沟通,尽快处理缺陷,确保在计划周期内交付增量价值给用户。

 

本教程案例中,“李某某”、“王某某”为开发工程师。

 

4. 测试工程师

承担测试需求管理、测试用例设计、测试用例执行等活动,与开发团队成员加强交互,尽早确认需求、发现缺陷尽早解决,及时回归测试用例,与开发团队成员共同保证按时交付增量价值。

 

本教程案例中,“林某”、“许某某”为测试工程师。

 

5. UI设计工程师

负责产品的UI设计,与开发团队成员交互,确保UI设计满足产品设定及用户习惯,当测试工程师提出缺陷时,UI设计工程师及时沟通解决。

 

本教程案例中,“赵某某”担任UI设计工程师。

 

6. 架构设计师

一般可由项目经理担任,当然前提是其具备架构设计的能力。负责整个产品的整体架构设计,此时,架构设计师除了关注产品需求外,需考虑整个产品的稳定、安全、兼容等质量特性。

 

假设本教程案例中,架构设计师由项目经理“张某某”担任。

 

2.3.2 团队组织结构

 

通过上述关于开发团队成员的角色介绍,本教程案例产品的敏捷开发团队成员组织结构如图2- 1所示。

 

软件测试技术

图2- 1敏捷开发团队组织结构示意图

 

敏捷开发团队中,通常不设置下属团队,团队中每个成员没有级别限定,都属于开发团队,产品经理提出愿景(产品需求、待办列表等)、设定边界(交付日期、用户群体设定、资源耗用限定等),开发团队细化用户故事、确定功能优先级、规划Sprint、实施开发与测试、交付增量价值等。

 

2.3.3 测试工程师选择

 

一般而言,敏捷测试工程师与传统测试工程师的岗位要求相同,主要包括素质要求与技术要求两方面:

 

1. 素质要求

(1) 统招专科以上学历;

(2) 2年以上软件测试经验;

(3) 组织或参与过手机端和WEB端软件测试工作;

(4) 有良好的沟通能力,热爱测试行业;

(5) 工作认真、细心、负责,有较强的责任感。

 

2. 技术要求

(1) 熟悉软件工程、Scrum敏捷模型、软件测试理论和方法;

(2) 熟练运用各种黑盒测试用例设计方法;

(3) 熟悉至少一种缺陷管理工具,如:Jira、ALM、禅道等;

(4) 熟悉至少一种数据库,如Mysql、Oracle等,掌握常用SQL语句编写,如增、删、改、查;

(5) 熟悉常用自动化测试工具,如LoadRunner,Selenium,HttpWatch、Jmeter等;

(6) 有性能测试经验、自动化测试、安全性测试经验优先。

 

具体需求应当根据产品测试需求确定,不过从上述软件测试工程师的岗位需求来看,测试工程师需掌握越来越多的开发技能,才能胜任日益复杂的测试任务。