求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
通过增加代码覆盖率提高单元测试的质量
 
作者: Steve Arnold ,发布于2013-1-22
 

在许多类型的开发项目中,无论您使用的是敏捷开发方法、Rational Unified Process (RUP),还是瀑布式开发方法,在开发期间,测量已执行代码的数量是一个主要度量指标。这对开发人员和测试人员都很重要,因为当开发人员生成具有高代码覆盖率的代码时,测试团队可以关注代码是否满足业务目标,而不是陷入大量低级代码缺陷中。

当代码覆盖率非常重要时

下列是代码覆盖率非常重要时的一些场景的常见示例:

任何想要响应业务并以低风险方式进行更改的团队

正在开发代码、想要提供工作质量可见性或需要满足约定的 SLA 的第三方

当某个项目定义了开发和测试之间的协议,以便通过开发测试获得代码覆盖率时,这意味着测试团队在捕捉代码错误上花费的时间更少敏捷团队可能想要在每个 sprint(冲刺阶段)结束时制定发布代码决策,因为这会提高交付物的质量,在将代码用于生产之前很少需要转换代码

一些想要减少技术债务的团队,这些团队可以逐渐增加单元测试的数量并重构代码,从而减少错误并减低复杂性

想要通过构建度量程序来衡量质量和技术债务的组织,这样做可及早发现发展趋势并进行相应的改进

许多敏捷团队都面临的一个具体挑战是,确保他们的单元测试包含大部分代码。这在确保他们创建尽可能少的缺陷并且代码可重构时非常重要。(考虑到团队发展的趋势是涉及很少的设计或没有设计,则具有良好的单元测试非常重要。)一个主要度量指标(除了通过的所有测试)是已包含的代码数量,这是新 IBM? Rational? Application Developer 版本发挥作用的地方。

今年早些时候,我编写了一个原型扩展,用该扩展来集成 IBM? Rational Team Concert? 和 Rational Application Developer。如果没有足够的代码覆盖率,就会阻止交付给 Rational Team Concert 的代码,正如在 Rational Application Developer 中测量的那样。此扩展(现在名为 Code Coverage Advisor)已正式纳入 Rational Application Developer 中,在版本 8.0.3 之后都可以找到它。这意味着您现在可以配置 Rational Application Developer 和 IBM Rational Team Concert,在交付代码之前检查代码覆盖率。本文将介绍如何设置它,以及在项目开发期间如何使用它来提高代码覆盖率。

提示:

您需要了解一些 Rational Application Developer 知识才能理解本文。

后面的内容包含了三个主题:

何时适合使用 Code Coverage Advisor

当使用在 Rational Application Developer 中配置的此额外过程交付代码时会发生什么事

如何配置 Rational Team Concert 以使用 Advisor

最适合使用 Code Coverage Advisor 的情况

如何使用 advisor?以下是两个主要场景:

第一个场景针对的是新项目,出现在您想要确保单元测试提供足够的代码覆盖率时。在这种场景下,可使用 Advisor 帮助开发团队维护高标准的单元测试和代码覆盖率。

第二个场景针对的是您想要改进的具有糟糕的单元测试或不存在单元测试的项目。通过打开 Advisor,要求开发人员为他们修改的代码提供单元测试,这样这些团队可以一种简单、递增且可管理的方式进行改进。此外,这种方法意味着正在编写的单元测试将包含正在修改的代码;因此,开发人员很可能会发现缺陷。

在这两种场景中,Code Coverage Advisor 可提供大量价值,通过帮助团队维护单元测试的高代码覆盖率来改进其代码质量。下一部分将介绍开发人员在已经配置了代码覆盖率功能时如何使用 Rational Application Developer 交付代码。

使用 Rational Application Developer 中的新流程交付代码

您需要做的第一件事是(如果还没有做)配置项目,以收集代码覆盖率信息。

配置项目的流程

在 Project Explorer 中右键单击项目,选择 Properties。

然后从菜单中选择 Code Coverage ,采用与设置团队相同的方式设置项目的代码覆盖率信息(参见图 1)。

图 1.项目代码覆盖率配置

使用启动的流程交付代码时会发生什么事

在配置了代码覆盖率后,Code Coverage Advisor 会检查文件的覆盖率,以确定是否交付了代码。Coverage Advisor 在下列情况下不支持交付代码:

覆盖率低于目标水平。

覆盖率过期了(例如,您已修改了其中一个文件,但没有重新运行测试)。

项目未启用代码覆盖率。

在这些情况下,需要开发人员在交付代码前提高覆盖率。但是,如果已大致配置了流程,并且人员具有必备的权限,那么开发人员可选择忽略警告并交付代码覆盖率不足的代码。

让我们看一个示例。在如图 2 所示的项目中,您可以看到,HelloWorld.java 类并不满足覆盖率要求。

图 2. Project Explorer 显示了失败的代码覆盖率

如果您尝试交付代码,交付将失败,您将得到如图 3 所示的流程建议:重写“Prohibit Unsatisfactory Code Coverage”先决条件。

图 3. 代码覆盖率交付失败

在 Rational Team Concert 中设置流程

在流程中存储信息意味着集中存储所必需的代码百分比阈值,并在团队中平等应用它们(尽管您可要针对不同组件配置不同的代码覆盖率要求,如后面所见)。您可以在本地客户端设置不同的覆盖率设置,但是当交付代码时将使用基于服务器的设置。

配置流程

提示:

在开始前,您需要具有修改 Project Area 的流程的相应角色。

从 Eclipse shell,导航到 Work Item 视图,打开 Team Artifacts 视图。

在想要配置的项目区域右键单击,并选择 Open。

然后单击 Process Configuration 选项卡打开流程编辑器(图 4)。

图 4. 流程配置编辑器

打开 Team Configuration 视图,选择 Deliver (client) 操作,然后选择 Everyone (default) 列下面的单元格,如图 5 所示。

图 5. 交付选项

将足够的代码覆盖率配置为先决条件

现在您准备好配置规则,然后可以检查每次有人交付代码时代码覆盖率是否足够。

添加一个先决条件来检查代码覆盖率:

在 Preconditions 部分单击 Add,选择 Prohibit Unsatisfactory Code Coverage(参见图 6)。

配置所需的各种代码覆盖率级别。

您可以在源代码的不同级别指定所需的覆盖率。例如,每个文件可能需要 70% 的行覆盖率;但是,开发人员对每种类型必须具有 100% 的覆盖率。您还可以正则表达式以将文件从覆盖率统计信息中排除,这在您具有一些自动生成的不在意覆盖率的代码时很有用。最后,不同的组件可以具有不同的规则,方法是指定这些覆盖率设置应用的组件。

图 6. Prohibit Unsatisfactory Code Coverage 配置

现在保存流程,这些新规则会在您下次交付代码时生效。




LoadRunner性能测试基础
软件测试结果分析和质量报告
面向对象软件测试技术研究
设计测试用例的四条原则
功能测试中故障模型的建立
性能测试综述
更多...   


性能测试方法与技术
测试过程与团队管理
LoadRunner进行性能测试
WEB应用的软件测试
手机软件测试
白盒测试方法与技术


某博彩行业 数据库自动化测试
IT服务商 Web安全测试
IT服务商 自动化测试框架
海航股份 单元测试、重构
测试需求分析与测试用例分析
互联网web测试方法与实践
基于Selenium的Web自动化测试
更多...