世界已经目睹了一些灾难性事件,仅仅是因为软件中的错误。2008 年发生了一起此类事件,行李处理系统软件的测试覆盖实践出现故障导致 500 多个航班取消。
测试覆盖率是衡量软件质量的重要指标,也是软件维护的重要组成部分。它通过提供不同覆盖项目的数据来帮助评估测试的有效性。这种洞察力可以通过为未经测试的代码定义新的测试用例来改进测试,然后提高代码质量,最终增加代码覆盖率并降低成本。
为什么需要代码覆盖率?- 目的和好处
项目生命周期早期的缺陷预防
创建额外的测试用例以增加覆盖率
通过减少 UAT 缺陷和生产缺陷可以实现更好的 ROI
它有助于找到一组测试用例未执行的程序区域
通过管理基于风险的测试方法,测试将变得更加顺畅
帮助确定代码覆盖率的定量测量,间接测量应用程序或产品的质量
如何选择代码覆盖工具
真正的挑战是选择哪些代码覆盖工具用于应用程序测试。一个有效的工具可以帮助衡量测试工作的有效性 根据用于编码的语言,有几个选项可以创建代码覆盖率报告。下面列出了一些与编码语言相关的流行工具:
一些工具,如 istanbul(一个 JavaScript 测试覆盖工具)会将结果直接放入您的终端,而其他工具可以生成完整的 HTML 报告,让您探索您缺少覆盖的代码部分。
此外,还有其他适用于所有主要语言的覆盖测试工具,其中一些不仅与单元测试相关,而且与执行的整体测试(单元、集成、系统、手册等)相关。下面是一些有助于运行测试程序的趋势代码覆盖工具列表。
1. 默认 Visual Studio 代码覆盖率
Visual Studio Enterprise 具有代码覆盖率集合作为内置功能。它可以应用于托管(CLI)和非托管(本机)代码。在尝试使用测试资源管理器运行测试方法时,代码覆盖率作为一个选项提供。您可以选择所有测试或其中的子集。它可以帮助您在查看代码时可视化覆盖范围。下表显示了在每个程序集、类和方法中运行的代码的百分比。此外,源代码编辑器会显示哪些代码已经过测试。
图 1:结果表:Visual Studio
报告可以以块或行的形式获得。管理代码覆盖结果以及合并来自不同运行的结果也很容易。
2. 覆盖范围
Cobertura 是最常用和广为人知的代码覆盖工具之一。它是一种免费的Java工具,可以计算被执行的各种测试访问的代码百分比。它可用于识别 Java 程序的哪些部分缺少测试覆盖。它基于jcoverage。
可以通过 Ant、命令行、Eclipse 插件或 Maven 插件执行。它易于使用,无需源代码即可测量覆盖率。它以 HTML 或 XML 格式提供报告,并具有测试类和方法的行和分支的能力。
3. Coverage.py
Coverage.py 是Python的代码覆盖工具。使用 Coverage.py 的主要阶段包括执行、分析和报告。它监视 Python 程序,记录代码的哪些部分已被执行,然后分析源代码以识别可能已执行但未执行的代码。
Coverage.py 可用于 Tidelift 以提供一个企业订阅。其他方式包括通过命令行、API 以及 Django 和 Mako 插件执行。
4. Gcov-Lcov
Gcov 是一个与 GCC 一起使用的测试覆盖程序。它分析程序以帮助创建更高效、更快运行的代码,以发现代码中未经测试的部分。
它充当分析工具,有助于分析一些基本的性能统计信息,例如:
每行代码执行的次数
实际执行了哪些代码行
每段代码使用多少计算时间
Lcov 是 Gcov 的图形前端。它收集多个源文件的 gcov 数据并创建 HTML 页面,其中包含带有覆盖信息注释的源代码。它还添加了概览页面,以便在文件结构中轻松导航。Lcov 支持语句、函数和分支覆盖率测量。
5.Testwell CTC++
Testwell CTC++ 是一款功能强大的基于仪器的代码覆盖和动态分析工具,适用于C和C++代码。它可以用于具有特定附加组件的C# 、Java和Objective-C代码。它也可以用来在任何嵌入式目标机器上分析代码。
CTC++提供行覆盖、语句覆盖、函数覆盖、决策覆盖、多条件覆盖、修改条件/决策覆盖(MC/DC)、条件覆盖。
作为动态分析工具,CTC++在代码中显示了执行计数器(执行了多少次)。它还可用于测量函数执行成本(通常是时间)并在测试时启用函数进入/退出跟踪。
该工具用户友好且快速。报告生成可以是纯文本、HTML、XML、JSON(JavaScript Object Notation)和 Excel 输入形式。在某些环境中,例如 Microsoft Visual Studio,可以直接从编译器 IDE 使用 CTC++。
6. 无盖
NCover 是.NET程序和应用程序的代码覆盖工具。NCover 旨在与构建过程集成,并具有广泛的命令行支持。代码覆盖过程很简单,可以自动化。NCover 应用程序套件由三个工具组成:NCover.Explorer.exe、NCover.Console.exe 和 NCover.Reporting.exe。
NCover.Explorer.exe 是一个 GUI 程序,允许您生成和查看详细的代码覆盖率信息。
它支持语句覆盖、分支覆盖和圈复杂度。它提供了分别选择低、中、高和完整级别的代码覆盖率的规定。它非常易于使用和快速,也可用于开源和商业许可。
结论
为了更好的产品质量,根据项目的具体需求和所需的代码覆盖率水平,很容易选择代码覆盖率工具。基于代码语言和结构的独立需求,所有可用的代码覆盖工具都足以满足代码覆盖所需的能力。
审核编辑:郭婷
-
JAVA
+关注
关注
19文章
2952浏览量
104457 -
编译器
+关注
关注
1文章
1615浏览量
49007 -
GUI
+关注
关注
3文章
635浏览量
39473
发布评论请先 登录
相关推荐
评论