提高单元测试代码覆盖率_通过增加代码覆盖率来提高单元测试的质量
无论您使用的是敏捷,Rational Unified Process(RUP)还是瀑布式开发方法,对开发期间执行多少代码的度量都是许多开发项目中的关键指标。 这对于开发人员和测试人员都非常重要,因为当开发人员生成具有高级别代码覆盖率的代码时,测试团队可以专注于代码是否满足业务目标,而不是被很多低级代码缺陷所困扰。
当代码覆盖量特别重要时
以下情况是代码覆盖率重要时的常见示例:
- 任何希望响应业务并以低风险方式进行更改的团队
- 正在开发代码并希望提供其工作质量的可见性或需要满足合同SLA的第三方
- 当一个项目定义了开发与测试之间的合同时,涉及到开发测试所覆盖的代码量,这意味着测试团队在捕获编码错误上花费的精力更少
- 希望能够在每个sprint(迭代)结束时制定决策发布代码的敏捷团队,因为这可以提高可交付成果的质量,因此不太可能在准备好将其投入生产之前就将代码移交
- 希望通过逐步增加单元测试数量和重构代码以减少错误和复杂性来减少技术负担的团队
- 希望建立度量标准程序以度量质量和技术债务的组织,以便可以发现趋势并尽早进行改进
许多敏捷团队面临的具体挑战之一是确保其单元测试涵盖大多数代码。 这对于确保开发人员创造尽可能少的缺陷以及代码可以重构至关重要。 (鉴于团队趋向于很少或根本不进行设计的趋势,至关重要的是要补充高质量的单元测试。)关键指标之一(除了所有测试都通过之外,)是拥有的代码量。涵盖了-这就是新版本的IBM®Rational®Application Developer可以提供帮助的地方。
今年早些时候,我写了一个原型扩展,用于集成IBM®Rational Team Concert™和Rational Application Developer。 如果没有足够的代码覆盖率(如Rational Application Developer中所述),它可以防止将代码交付给Rational Team Concert。 现在,该扩展名为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以使用顾问程序
最好使用Code Coverage Advisor的情况
那么,您应该如何使用顾问? 有两种主要方案:
- 第一个是用于新项目的 ,要确保单元测试提供足够的代码覆盖率。 在这种情况下,您可以使用顾问来帮助开发团队维持高标准的单元测试和代码覆盖率。
- 第二个是针对您要改进的单元测试不佳或不存在的项目 。 通过打开顾问程序,将要求开发人员仅针对他们修改的代码提供单元测试,以便这些团队可以以简单,增量和可管理的方式开始进行改进。 同样,这种方法意味着正在编写的单元测试将覆盖正在更改的代码。 因此,它们最有可能发现缺陷。
在这两种情况下,Code Coverage Advisor可以通过帮助团队保持其单元测试的高级别代码覆盖率来帮助团队提高代码质量,从而提供大量价值。 下一节说明配置代码覆盖功能后,开发人员如何使用Rational Application Developer交付代码。
使用Rational Application Developer中的新流程交付代码
您需要做的第一件事(如果尚未完成)是配置您的项目以收集代码覆盖率信息。
在您的项目中配置流程
- 右键单击项目浏览器中的一个或多个项目,然后选择属性。
- 然后从菜单中选择Code Coverage ,并按照为团队设置的方式设置项目的Code Coverage信息(请参见图1)。
图1.项目代码覆盖率配置
当您尝试在启用流程的情况下交付代码时会发生什么?
配置代码覆盖率后,代码覆盖率顾问将检查文件的覆盖率,以确定是否可以交付代码。 覆盖率顾问将不允许在以下情况下传递代码:
- 覆盖率低于目标水平。
- 覆盖范围已过期(例如,您已经修改了其中一个文件,而不重新运行测试)。
- 没有为项目启用代码覆盖率。
在这种情况下,将要求开发人员在交付代码之前提高覆盖范围。 但是,如果适当地配置了流程,并且该人员处于具有必要权限的角色中,则开发人员可以选择覆盖警告并以不令人满意的代码覆盖率交付代码。
让我们来看一个例子。 在图2所示的项目中,您可以看到HelloWorld.java类未满足覆盖率要求。
图2. Project Explorer显示失败的代码覆盖率
如果尝试交付代码,交付将失败,并且您将获得图3所示的流程建议:否决“禁止不令人满意的代码覆盖率”前提条件。
图3.代码覆盖率交付失败
在Rational Team Concert中设置流程
在该过程中存储信息意味着所需的覆盖率百分比阈值将集中存储并在团队中平均使用(尽管您可以为不同的组件配置不同的覆盖率要求,这将在后面看到)。 您可以在本地客户端中设置不同的coverage设置,但是在交付代码时将使用基于服务器的设置。
配置过程
小费:
在开始之前,您将需要在项目上具有适当的角色,该角色具有修改项目区域的流程的权限。
- 在Eclipse Shell中,导航到“工作项”透视图,然后打开“ 团队工件”视图。
- 右键单击要配置的项目区域,然后选择打开 。
- 然后单击Process Configuration选项卡以打开流程编辑器(图4)。
图4.流程配置编辑器
- 打开团队配置视图,然后选择操作行为 。
- 向下滚动操作列表,直到找到Deliver(客户端)操作,然后选择Everyone(默认)列下的单元格,如图5所示。
图5.交付操作
配置足够的代码覆盖率作为前提条件
现在,您可以配置规则,以检查每次有人交付代码时代码覆盖范围是否足够。
- 添加一个前提条件来检查代码覆盖率:
- 在先决条件部分中单击Add ,然后选择“ 禁止不满意的代码覆盖率” (请参见图6)。
- 配置所需的各种代码覆盖率级别。
您可以在源代码的各个不同级别上指定所需的覆盖率。 例如,您可能需要每个文件70%的行覆盖率; 但是,开发人员必须为每种类型提供100%的覆盖率。 您还可以提供正则表达式以从覆盖率统计信息中排除文件,如果您有一些自动生成的代码而您不在乎覆盖率,则这很有用。 最后,通过指定这些coverage设置适用于哪些组件,您可以对不同的组件使用不同的规则。
图6.禁止不令人满意的代码覆盖率配置
- 现在保存该过程,这些新规则将在您下次尝试提供代码时应用。
翻译自: https://www.ibm.com/developerworks/rational/library/unit-testing-code-coverage/index.html