在过去的几年里,我已经通过在Rational环境中加入一种额外的测试技术改善了这种情况:ODC,其表示“正交缺陷分类”。它是缺陷分析一个革命性的方法,在充实了记录的内容同时提供了一个系统的分析方法,可以追溯到缺陷的开发阶段。ODC能够提高测试的效率,监控质量状态,向开发者提供改进的线索,同时有助于评估顾客的满意程度。
在这篇文章中,我将和大家一起分享我在一个使用Rational开发环境的软件项目中采用ODC方法的经验。我们将看到ODC可以给我们带来的许多好处,同时我将向大家提出一些关于实现ODC的建议。
究竟有多少缺陷?我们怎样才能区分这些缺陷?通常情况下,我们可以收集尽可能多 的缺陷并将它们按照“严重程度”和“优先级”进行分类。因此我们可能在相同的严重程度和优先级发现几百个缺陷情况,对于相同的缺陷我们的测试可能产生一百个实例。这些过于简单的缺陷属性不足于进行高质量的分析,原因有以下几点:
事实上,我们需要更多的属性来描述缺陷,并且需要一个相应的方法来分析这些额外的属性。这些属性与开发者和测试人员相关,与开发阶段相关,与顾客的满意程度也相关。通过分析这些属性的结果可以提高软件的质量,这是ODC的承诺。
ODC在高层次上,是帮助获取缺陷信息的一个缺陷分类方案。但是它不仅仅是一个分类方案,ODC是一个软件过程的度量系统,它是建立在包含于缺陷流中的语义信息基础上的。它可以帮助我们评估测试的效力和效率,可以进行错误跟踪,通过方案背后的分析机制评估顾客的满意度。
在这个简单的术语中,ODC为测试人员的记录定义了一组缺陷属性。同时为分析这些缺陷提供了一组经验性的规则。然后,可以根据这些分析,对提高软件质量采取正确的措施。
在以下一个或者多个条件下,ODC是十分有用的:
ODC通过搜集有用的信息丰富了缺陷的属性。ODC一共有8个属性,如图1所示。当一个测试人员发现并提交一个缺陷时,他可以给这个缺陷分配“活动(Activity)”、“触发(Trigger)”、“影响(Impact)”这三个属性。当一个开发人员修复或者回应了一个缺陷时,他可以分配“阶段(Age)”、“来源(Source)”、“限定符(Qualifier)”、“类型(Type)”以及“目标(Target)”这些属性。下面将介绍这些不同的属性。
图1:ODC的八个属性.来源: ODC v5.11, IBM 软件工程中心, www.research.ibm.com/softeng.
在ODC活动中,这个测试人员就是“ODC提交者”或者“ODC打开者”,我们称呼开发人员为“ODC回应者”或者“ODC关闭者”。对这八个属性的分别介绍如下所示:
现在,ODC是由IBM Rational ClearQuest (RCQ)和Jmystiq支持的。2 我们可以将特殊的ODC属性合并到RCQ 窗口和制表符中去。图2显示了我们将ODC用户化以后的一个RCQ窗口。“ODC Submitter”和“ODC Responder”是两个集成ODC八个属性信息的标签。与ODC中独创的属性一起,我们同时可以获得大量需要通过Jmystiq分析的资源,这些资源可以使ODC的分析变得更容易。
图2:一个在定制ODC后的Rational ClearQuest窗口。“ODC Submitter”和“ODC Responder”是收集ODC八个属性信息的两个页签
我们的项目是一个典型的基于J2EE portal 技术的Web应用。这个项目属于中等规模,大约由86,000行Java代码和14,000行Java Server Pages代码组成。这个项目使用了典型的迭代开发模式,并在最终版本之前包含多个迭代,如图3所示。在这个项目上我们已经设置了相当高的质量目标。
图3:案例项目中使用的迭代模式
这个项目包括十五个开发人员和测试人员,各自分成两个团队。在每一个开发阶段,主要的角色要承担的主要的责任也不相同。表1中显示了这个项目开发的阶段和相应的责任人,同时也包括最初在采取ODC方法之前的退出标准。
活动 | 负责人 | 产生缺陷 | 退出标准 |
---|---|---|---|
需求管理 | 负责人 | No | |
代码实现 | 开发者 | No | |
单元测试 | 开发者 | Yes (ClearQuest) | 所有单元测试用例都通过。 |
代码审查 | 开发者 | Yes (ClearQuest) | 所有代码评审检查单中的规则都通过。 |
功能测试 | 测试者 | Yes (ClearQuest) | 95% 测试用例通过。没有严重程度级别 1 和 级别 2 未被修复的缺陷存在。 |
系统测试 | 测试者 | Yes (ClearQuest) | 95% 测试用例通过。没有严重程度级别 1 和 级别 2 未被修复的缺陷存在。 |
用户验收测试 | 用户 | Yes (ClearQuest 和 Notes 数据库) | 没有严重程度级别 1 和 级别 2 未被修复的缺陷存在。 |
ODC有它自己的生命周期,我们可以将它整合到迭代软件开发的生命周期中去。随着迭代的进行,我们可以监控每个开发阶段的软件质量状况。如果在我们的ODC分析结果中发现异常情况,我们可以采取纠正或者预防措施。
如图4所示,ODC的生命周期包括六个步骤,由三个可能的角色,三个循环来实施,这将取决于所需的ODC步骤的数量。我将详细阐述下面的这些概念。
图4:通过三个不同颜色标明的角色实现六个ODC步骤
ODC生命周期包括三个不同的角色:
根据ODC所需的步骤的数量,它有三个可能的循环:
这篇文章中我将阐述一个完整的大循环。通常循环中的一个步骤被看作是下一个步骤的基础,上一个步骤的输出是当前步骤的输入。除了预备步骤,其他四个步骤形成一个支持迭代软件开发的循环。
步骤1:预备阶段
第一个步骤是十分重要的,对于那些以前没有采用ODC的团队来说尤其关键。在这个步骤中,我们需要做的事包括:
步骤2:计划
计划步骤的主要任务是定义“来源”,它在随后的数据输入步骤中将会用到。这个步骤中产生的信号对评估退出标准是十分关键的。
在这个步骤中我们需要做的事包括以下几个方面:
在我们的案例项目中,我们确定使用30%的阶段属性是基础代码,70%的是新代码。我们将项目按照功能中的逻辑关系划分为十二个组件,并使用ODC信号模板编辑ODC计划文档。对这个文档进行几次评审以后,我们准备进入下一个步骤,数据输入和确认。
步骤3和4:数据输入和确认
我们可以将这两个步骤合并成一个步骤。这里的主要目的是提供一套可靠而且准确的缺陷数据记录。
以下几点是这两个步骤中要特别注意的事项:
在我们的案例项目中,我们使用Rational ClearQuest来采集数据输入,并通过创建一些逻辑关系使用Jmystiq来实现自动确认。另外我们还创建一个特殊的指导方针确保所有的开发人员和测试人员理解这些属性的意义。
步骤5:评估
这是一个收获的步骤,收集到如此多优良的数据以后,你可以生成一个结果用来以下几种方法来分析:
在开发生命周期的任何时候都可以进行评估。我们利用Jmystiq为评估产生一些图表。当在图表中发现不正常的现象时,我们可以设法从不同的方面来对它作出解释。下面我将展示一些这种评估工作的例子。