博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过增加代码覆盖率提高单元测试的质量
阅读量:6260 次
发布时间:2019-06-22

本文共 3310 字,大约阅读时间需要 11 分钟。

简介: 许多团队都面临的一个挑战是,确保其包含大部分代码。这在确保他们创建尽可能少的缺陷并且代码可重构时非常重要。因此,重要的度量指标(除了通过的所有测试之外)之一是已包含的代码数量。从  Application Developer 8.0.3 开始,您可以配置 IBM® Rational® Application Developer 并将它与 IBM® Rational Team Concert™ 集成,以便在交付代码之前运行测试并检查。本文将介绍如何设置此先决条件(名为 Code Coverage Advisor),还将介绍如何使用它来增加项目中测试的代码的覆盖率。

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

  当代码覆盖率非常重要时

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

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

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

  ● 当某个项目定义了开发和测试之间的协议,以便通过开发测试获得代码覆盖率时,这意味着测试团队在捕捉代码错误上花费的时间更少

  ● 敏捷团队可能想要在每个 sprint(冲刺阶段)结束时制定发布代码决策,因为这会提高交付物的质量,在将代码用于生产之前很少需要转换代码

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

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

   许多敏捷团队都面临的一个具体挑战是,确保他们的单元测试包含大部分代码。这在确保他们创建尽可能少的缺陷并且代码可重构时非常重要。(考虑到团队发展 的趋势是涉及很少的设计或没有设计,则具有良好的单元测试非常重要。)一个主要度量指标(除了通过的所有测试)是已包含的代码数量,这是新 ? 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 知识才能理解本文。

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

  1、何时适合使用 Code Coverage Advisor

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

  3、如何配置 Rational Team Concert 以使用 Advisor

  最适合使用 Code Coverage Advisor 的情况

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

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

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

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

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

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

  配置项目的流程

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

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

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

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

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

  ● 覆盖率低于目标水平。

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

  ● 项目未启用代码覆盖率。

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

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

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

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

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

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

图 5. 交付选项

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

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

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

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

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

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

图 6. Prohibit Unsatisfactory Code Coverage 配置

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

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

转载地址:http://vfesa.baihongyu.com/

你可能感兴趣的文章
约瑟夫环问题
查看>>
五子棋
查看>>
和为S的连续正数序列
查看>>
三周的 软件工程实践课 课程安排建议
查看>>
解决冲突-git入门教程
查看>>
修改ssh端口后无法连接ssh了?
查看>>
[android] 隐式意图的配置
查看>>
HQL: Hibernate查询语言
查看>>
SQL优化之六脉神剑
查看>>
java生成随机字符串uuid
查看>>
黄永成-thinkphp讲解-个人博客讲解26集
查看>>
Mongodb(2)创建数据库,删除数据库,创建集合,删除集合,显示文档内容
查看>>
Tomcat禁止显示目录和文件列表
查看>>
linux mmap 详解【转】
查看>>
注释中不允许出现字符串 "--"。
查看>>
client 如何找到正确的RegionServer(HBase -ROOT-和.META.表)
查看>>
协议森林16 小美的桌号(DHCP协议)
查看>>
简单的ajax封装
查看>>
PHP初学者必须掌握的10个知识点
查看>>
[Asp.Net]获取客户端ip和mac地址
查看>>