逐步采用 EclEmma 和 Rational Team Concert 集成

通过 Code Coverage Advisor 提高单元测试质量

Comments

EclEmma 和 IBM Rational Team Concert 之间的集成有许多好处,这些好处会影响整个团队。该集成可以帮助团队提高代码覆盖水平,这会改进代码质量和减少缺陷数量。出于这个原因:

  • 开发团队能生成具有很高的代码覆盖水平的代码。
  • 测试团队可以将精力集中在代码是否满足业务目标上,而不是陷入在许多低级代码缺陷中脱不开身。

要了解本教程中的概念,熟悉初始 EclEmma 和 Rational Team Concert 集成工具会对您有所帮助。有关的更多信息,请参阅 集成 eclEmma 和 Rational Team Concert 来改进单元测试质量

Code Coverage Advisor 是一个 Rational Team Concert 流程扩展,如果没有足够的代码覆盖范围,它可以阻止代码交付,这有助于团队改进代码质量。本教程将介绍该集成工具的新版本中的改进。下载 部分包含从该工具的最新增强中获益所需的其他文件。

使用 Code Coverage Advisor 的时机

使用 Code Coverage Advisor:

  • 对于新项目,可以确保单元测试提供了足够宽广的代码覆盖范围。在该场景中,使用顾问程序 (advisor) 帮助开发团队采用与编码相同的节奏执行单元测试。这使得达到最高的代码覆盖水平变得更容易。
  • 对于具有糟糕的或没有现存的单元测试的现有项目,可以帮助团队逐步改进单元测试和代码覆盖水平。

在两种场景中,Code Coverage Advisor 都可以帮助团队改进其代码的质量,帮助他们为单元测试保持很高的代码覆盖水平。在配置代码覆盖并运行应用程序后,Code Coverage Advisor 会分析交付的文件的覆盖范围,以确定它们是否拥有令人满意的代码覆盖范围。如果覆盖范围低于目标水平,或者没有为项目启用代码覆盖,则无法交付该代码。如果出现这种情况,开发人员需要在交付代码之前改进覆盖范围。您可以设置该顾问程序,只检查新的或修改的行的覆盖水平。设置此检查后,只会检查新插入的或修改的代码行的代码覆盖。将新的/修改的代码的覆盖百分比与团队流程中设置的阈值进行比较。

选择 Only check for new or modified lines 来激活此设置:

图 1. 激活只检查新的或修改的行的覆盖范围的设置
该屏幕截图显示了激活仅检查新行或修改的行的设置的屏幕截图
该屏幕截图显示了激活仅检查新行或修改的行的设置的屏幕截图

例如,如果您修改了 HelloWorld.java 类,而且它不满足覆盖需求,那么 Coverage Advisor 会告诉您覆盖百分比。在图 2 中,覆盖百分比为 73.6%。

图 2. 代码覆盖状态
该屏幕截图显示了覆盖需求未得到满足
该屏幕截图显示了覆盖需求未得到满足

图 3 显示了在交付时新的或修改的行的覆盖百分比的比较。

图 3. 新的/修改的行的代码覆盖
该屏幕截图显示了 Team Advisor 中的一个错误,即覆盖范围不足
该屏幕截图显示了 Team Advisor 中的一个错误,即覆盖范围不足

Team Advisor 视图中的覆盖错误不同于 Coverage 视图,因为 Team Advisor 视图基于设置 “Only check for new or modified lines”。将新的或修改的行添加到您的测试路径,这可以帮助您达到目标覆盖水平。

允许具有不足的代码覆盖范围的交付结果

有时要相信开发人员交付了 “良好质量的” 代码,以便准备好代码,无论代码覆盖水平如何。在项目准备好单元测试之前交付代码更加重要时,通常会出现这种情况。要允许开发人员交付不满足目标代码覆盖水平的代码,必须设置流程设置,以便顾问程序:

  • 允许交付,但跟踪相关工作项上的代码覆盖水平
  • 如果获得了需要的批准,允许交付代码

跟踪具有不足的代码覆盖范围的交付

如果无论代码覆盖水平如何,都需要交付代码,团队开发主管可以选择允许交付,并将关联的工作项中的状态跟踪记录到变更集中。

谓词,选择 Allow deliveries and only update associated workitems with Code Coverage status

图 4. 允许交付但执行跟踪的选项
该屏幕截图显示,已经选定了与交付和更新相关的工作项
该屏幕截图显示,已经选定了与交付和更新相关的工作项

选择此选项后,无论代码覆盖水平如何,都允许交付。但是,如果覆盖范围低于需要的水平,则会将一条注释和一个 code_coverage_failed 标记添加到关联的工作项:

图 5. 工作项中的跟踪消息
该屏幕截图显示了关于代码覆盖的消息
该屏幕截图显示了关于代码覆盖的消息

此方法允许团队开发主管快速搜索所有具有不合格的测试覆盖范围的工作项。团队开发主管可以决定该覆盖范围是否可接受,或者是否需要计划更多工作来改进该覆盖范围。它还允许在以后的阶段执行分析,查看具有较小覆盖范围的工作项是否具有较高的缺陷密度。

交付具有不足的代码覆盖范围的代码

即使覆盖水平处于较低水平,在获得了所要的批准时,您还可以交付代码更改。为此,您需要在每个关联的工作项中获得 Ignore Code Coverage 批准(参见图 6)。确保未选中 “Allow Deliveries and Only update associated workitems with Code Coverage status” 复选框。

图 6. Ignore Code Coverage 批准请求
该屏幕截图显示了 Ignore Code Coverage 批准细节
该屏幕截图显示了 Ignore Code Coverage 批准细节

如果代码覆盖范围不足,而且批准未处于所需的状态,顾问程序会提供一个错误:

图 7. Ignore Code Coverage 错误
错误表明没有批准忽略代码覆盖范围
错误表明没有批准忽略代码覆盖范围

实现 Code Coverage Advisor

要在您自己的环境中实现此方法,可以从 Eclipse 更新网站 安装 eclEmma。您需要的剩余文件包含在 下载 部分。

该代码是在 IBM Bluemix® DevOps 服务 上的一个开放 Rational Team Concert 实例中开发的。如果您想要增强该顾问程序,或者如果您想为该顾问程序做出贡献,请联系本教程的作者或 Steve Arnold,或者在 eclEmma Rational Team Concert Code Coverage Advisor 项目上打开一个工作项。


下载资源


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational, DevOps
ArticleID=1029503
ArticleTitle=逐步采用 EclEmma 和 Rational Team Concert 集成
publish-date=04062016