通过增加代码覆盖率提高单元测试的质量

简介:

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

   在许多类型的开发项目中,无论您使用的是敏捷开发方法、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 知识才能理解本文。

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

  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. 代码覆盖率交付失败


 在 Rational Team Concert 中设置流程

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

  配置流程

  提示:

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

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

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

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

图 4. 流程配置编辑器

  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/

目录
相关文章
|
3月前
|
Devops 测试技术 持续交付
测试左移,使质量反馈更快速,更可靠
测试左移,使质量反馈更快速,更可靠
测试左移,使质量反馈更快速,更可靠
|
3月前
|
监控 测试技术 持续交付
自动化测试和持续集成/交付:提升软件质量和效率的关键
在当今快节奏的软件开发环境中,自动化测试和持续集成/交付已经成为了必不可少的工具和流程。通过自动化测试,开发团队可以更快地检测和修复缺陷,同时提高测试覆盖率和质量。而持续集成/交付则可以让开发者将代码快速、自动地构建、测试和部署到生产环境中。这篇文章将探讨自动化测试和持续集成/交付的优势和实现方式,以及如何在实践中有效地使用它们来提升软件质量和效率。
|
1月前
|
测试技术
模型驱动测试:引领软件质量的新潮流
模型驱动测试:引领软件质量的新潮流
24 2
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
提升软件测试效率与质量:AI驱动的自动化测试策略
【2月更文挑战第19天】 在快速迭代的软件发展环境中,传统的手动测试方法已无法满足高效率和高质量的要求。本文探讨了人工智能(AI)技术如何革新现有的软件测试流程,通过引入AI驱动的自动化测试策略,旨在提高测试覆盖率,减少人为错误,优化资源分配,并缩短产品上市时间。我们将分析AI在识别潜在缺陷、生成测试用例、执行测试以及结果分析中的应用,并讨论实施这些策略时可能遇到的挑战和限制。
107 3
|
1月前
|
敏捷开发 测试技术 持续交付
提升软件测试效率与质量的自动化策略
【2月更文挑战第19天】 在快速迭代的软件开发周期中,传统的手动测试方法往往难以满足高效率和高质量的双重要求。本文将探讨如何通过实施自动化测试策略来优化软件测试流程,减少重复劳动,提高测试覆盖率及发现缺陷的速度。我们将分析自动化测试的关键优势,包括时间效率、一致性、可重复性以及其在持续集成环境中的作用,并讨论实施过程中面临的挑战及解决策略。
|
25天前
|
安全 测试技术
【软件设计师备考 专题 】软件测试的原则与方法:确保软件质量的关键步骤
【软件设计师备考 专题 】软件测试的原则与方法:确保软件质量的关键步骤
41 0
|
1月前
|
算法 测试技术 开发者
软件质量测试笔记-合工大
软件质量测试笔记-合工大
101 1
|
1月前
|
算法 测试技术 开发者
软件质量保证与测试知识点总结
【2月更文挑战第21天】软件质量保证与测试知识点总结
56 0
|
1月前
|
敏捷开发 Devops 测试技术
深入理解与应用单元测试:提升软件质量的关键步骤
【2月更文挑战第19天】 本文将深入探讨单元测试在软件开发周期中的作用,分析其对提升软件质量的重要性,并介绍如何有效地实施单元测试。通过阐述单元测试的基本原理、关键实践和常见问题解决策略,旨在为软件开发者提供一套系统的单元测试方法论,以支持更健壮、可靠和可维护的软件产品的构建。
|
7月前
|
数据采集 大数据 Java
熊猫代理代理IP测试,最新代理IP质量测试
希望这篇测试文章,能够帮到那些在观望HTTP代理哪家强的人。