实施测试活动过程中,针对缺陷开展有效跟踪管理是测试工程师质量保证活动的重点,因此,在一个成熟的测试团队或组织内,缺陷管理流程的完善与否直接决定测试活动的质量。

缺陷管理流程通常由角色定义、流程定义、工具应用、缺陷分析模型等几个关键因素构成。

 

角色定义表述了在缺陷管理流程中所涉及的若干角色及其职责内容,从而清晰明确定义每个流程节点中角色所需完成的事务。流程定义规定了在项目或产品实施测试活动时所需遵循的流程规则。

 

工具应用则从项目或产品规模、团队流程、成本控制、风险防范等多个角度考虑,选择何种缺陷管理工具更能提升测试效果,提高缺陷管理效率。缺陷分析模型是针对缺陷进行综合判断,分析缺陷风险的科学方法,目前业内常用的模型有ODC、四象限、Gompertz等。

一、角色定义

缺陷管理流程活动一般包括测试工程师、测试负责人、开发负责人、开发人员、项目经理等若干角色。

1. 测试工程师

测试工程师负责实施测试活动,发现缺陷,及时提交缺陷,确认校验缺陷,实施回归测试。

2. 测试负责人

测试负责人评审缺陷,检查测试工程师新增的缺陷是否符合规范,是否因为不熟悉需求、理解偏差而引起的误提,并负责缺陷产生争议后的协调处理。

3. 开发负责人

开发负责人负责缺陷分配活动,将需修复的缺陷根据缺陷修复任务分配给对应的开发人员,协调解决争议缺陷。

4. 开发工程师

当缺陷提交给开发人员后,开发人员负责缺陷的确认及修复活动。

5. 项目经理

当对提交的缺陷有分歧、被拒绝时,可由项目经理、测试负责人、开发负责人等进行缺陷评审活动,商定问题如何处理,是否保留或当前版本不做处理等结论。

二、流程定义

不同公司因组织结构不同,所采用的管理流程亦不相同。大部分公司使用流程如图5-5所示。

测试员自我提升丨清晰梳理缺陷管理流程

 

图5-5通用缺陷管理流程

注:流程中操作关键词以HP商用的项目管理工具Application Lifecycle Management为范例

1. 测试工程师或其他人员发现缺陷,经过确认后提交缺陷,缺陷状态设置为“新建(New)”,“指派(Assign)”下步处理人为测试负责人。

2. 测试负责人针对需要自己处理的缺陷进行“评审(Review)”操作。检查测试工程师提交的缺陷是否符合缺陷报告规范,如语言描述是否清晰、问题定位是否准确等,或者判断该问题是否确实是一个缺陷,还是因测试工程师不熟悉需求、理解偏差而引起的误提。如有问题,将该缺陷“指派(Assign)”至测试工程师,让其修改后再提交,此时缺陷状态为“新建(New)”。如无问题,确定是缺陷,则将该缺陷提交给开发负责人,缺陷状态为“打开(Open)”。

3. 如果测试负责人“评审(Review)”后,缺陷“指派(Assign)”至测试工程师处,测试工程师则需再次确认缺陷是否误提,是则“关闭(Close)”缺陷,并注明缺陷关闭原因,否则再次“指派(Assign)”至测试负责人处,缺陷状态为“新建(New)”,并注明原因。测试负责人重复步骤2。

4. 开发负责人将测试负责人“评审(Review)”后的缺陷根据缺陷修复任务分配给相应的开发人员,开发负责人一般仅分配缺陷,不再过滤缺陷,此时缺陷状态为“打开(Open)”。

5. 开发人员根据缺陷描述确认是否是缺陷,如果是,则进行缺陷修复活动,修复完成后,缺陷状态置为“修复(Fix)”,并将对应缺陷“指派(Assign)”至缺陷发现者。如果不是缺陷,则将缺陷状态置为“拒绝(Reject)”,由测试工程师再次确认处理。

6. 测试工程师针对“拒绝(Reject)”的缺陷进行再次确认验证,如果确认缺陷属于误提或不再存在,则可“关闭(Close)”对应缺陷,并注明关闭原因,若确认是缺陷,则需“重新打开(Reopen)”缺陷至开发人员处,并注明“重新打开(Reopen)”原因。开发人员重复步骤5。

7. 当缺陷无法确认或产生争执时,由测试、开发负责人及项目经理评审确认并给出最终处理结果。测试工程师及开发人员原则上不直接沟通,避免产生无效沟通。一般来讲,缺陷处理是一个循环反复的过程。当出现争议时,必须由项目经理参与缺陷处理活动,而不能由开发组或者测试组单方面决定缺陷的处理方式。

上述流程可根据测试流程及时间进度适当调整,一般适用于5~10人的团队,可精简为适合3~5人团队的流程,也可细化为适合10~15人的中型测试团队。

三、工具应用

缺陷管理早期最通用的工具是Excel,简单方便,但随着缺陷管理流程的复杂化,对缺陷管理工具的要求越来越高,一般而言,缺陷管理工具需要具备以下几个特征。

1. 缺陷提交便捷。

2. 可细分角色、权限。

3. 可定制流程。

4. 可进行缺陷数据分析。

5. 支持邮件收发功能。

目前市面上大部分缺陷管理工具都具备上述特征,较为常用的工具有以下几种。

1. 开源免费工具

(1)Bugzilla

Bugzilla起源于UNIX,后续版本可安装在Linux、Windows平台,使用便捷,分析功能、流程定制功能一般。

(2)BugFree

BugFree借鉴微软研发流程和Bug管理理念,使用PHP+MySQL独立设计的Bug管理系统,简单实用。

(3)禅道

禅道是国内一款优秀的项目管理工具,提供了完善的测试工作平台,其中包括缺陷管理功能。目前国内众多软件研发公司在用。

2. 商业工具

(1)TestTrack

TestTrack是SeaPine公司生产的软件缺陷管理工具,除了常规缺陷管理功能外,流程定制是其一大特色,甚至优于HP的QualityCenter,是目前业内专业的缺陷跟踪工具之一,支持B/S和C/S两种架构。

(2)Application Lifecycle Management(ALM)

HP的Application Lifecycle Management(ALM),前身是Quality Center,采用B/S结构,可在广泛的应用环境下自动执行软件质量测试和管理,是目前应用较为广泛的商用测试管理工具。

四、缺陷分析

针对缺陷的关键字段,运用数据分析的统计方法,发掘软件系统的缺陷分布、密度及发展趋势,在此基础上追溯软件生产过程中引发缺陷的根本原因,为软件质量分析提供基础真实的数据依据。

缺陷分析活动中常用的度量字段有严重度、所属模块、产生原因、所属版本、持续周期、缺陷性质等。常用的缺陷分析模型有ODC、四象限、Gompertz等。

1. ODC

ODC由IBM推出,将一个缺陷在生命周期各环节的属性组织起来,从单维度、多维度来对缺陷进行分析,从不同角度得到各类缺陷的缺陷密度和缺陷比率,从而积累得到各类缺陷的基线值,用于评估测试活动、指导测试改进和整个研发流程的改进;同时根据各阶段缺陷分布得到缺陷去除过程特征模型,用于对测试活动进行评估和预测。ODC结构如图5-6所示。

测试员自我提升丨清晰梳理缺陷管理流程

 

图5-6 ODC模型示意图

2. 四象限

根据软件内部各模块、子系统、特性测试所累积时间和缺陷去除情况,与累积时间和缺陷去除情况的基线进行比较,得到各个模块、子系统、特性测试分别位于的区间,从而判断哪些部分测试可以退出,哪些测试还需加强,用于指导测试计划和策略的调整。

3. Gompertz

根据测试的累积投入时间和累积缺陷增长情况,拟合得到符合自己过程能力的缺陷增长Gompertz曲线,用来评估软件测试的充分性、预测软件极限缺陷数和退出测试所需时间、作为测试退出的判断依据、指导测试计划和策略的调整。