0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

代码覆盖工具的重要性

星星科技指导员 ? 来源:嵌入式计算设计 ? 作者:Hetal Chauhan ? 2022-06-30 10:36 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

世界已经目睹了一些灾难性事件,仅仅是因为软件中的错误。2008 年发生了一起此类事件,行李处理系统软件的测试覆盖实践出现故障导致 500 多个航班取消。

测试覆盖率是衡量软件质量的重要指标,也是软件维护的重要组成部分。它通过提供不同覆盖项目的数据来帮助评估测试的有效性。这种洞察力可以通过为未经测试的代码定义新的测试用例来改进测试,然后提高代码质量,最终增加代码覆盖率并降低成本。

为什么需要代码覆盖率?- 目的和好处

项目生命周期早期的缺陷预防

创建额外的测试用例以增加覆盖率

通过减少 UAT 缺陷和生产缺陷可以实现更好的 ROI

它有助于找到一组测试用例未执行的程序区域

通过管理基于风险的测试方法,测试将变得更加顺畅

帮助确定代码覆盖率的定量测量,间接测量应用程序或产品的质量

如何选择代码覆盖工具

真正的挑战是选择哪些代码覆盖工具用于应用程序测试。一个有效的工具可以帮助衡量测试工作的有效性 根据用于编码的语言,有几个选项可以创建代码覆盖率报告。下面列出了一些与编码语言相关的流行工具:

pYYBAGK9DECAFBmAAAB_oVwPTY4050.png

一些工具,如 istanbul(一个 JavaScript 测试覆盖工具)会将结果直接放入您的终端,而其他工具可以生成完整的 HTML 报告,让您探索您缺少覆盖的代码部分。

此外,还有其他适用于所有主要语言的覆盖测试工具,其中一些不仅与单元测试相关,而且与执行的整体测试(单元、集成、系统、手册等)相关。下面是一些有助于运行测试程序的趋势代码覆盖工具列表。

1. 默认 Visual Studio 代码覆盖率

Visual Studio Enterprise 具有代码覆盖率集合作为内置功能。它可以应用于托管(CLI)和非托管(本机)代码。在尝试使用测试资源管理器运行测试方法时,代码覆盖率作为一个选项提供。您可以选择所有测试或其中的子集。它可以帮助您在查看代码时可视化覆盖范围。下表显示了在每个程序集、类和方法中运行的代码的百分比。此外,源代码编辑器会显示哪些代码已经过测试。

pYYBAGK9DEqAHrUPAAI6TKc06RM489.png

图 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
    +关注

    关注

    20

    文章

    2990

    浏览量

    111344
  • 编译器
    +关注

    关注

    1

    文章

    1663

    浏览量

    50454
  • GUI
    GUI
    +关注

    关注

    3

    文章

    684

    浏览量

    41550
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    120Ω的秘密:CAN总线终端电阻的重要性

    CAN总线作为一种广泛应用的工业通信协议,其终端电阻的作用不容忽视。本文将详细探讨CAN总线终端电阻的重要性及其在通信中的关键作用。CAN总线终端电阻的重要性CAN总线终端电阻顾名思义就是夹在总线
    的头像 发表于 08-08 11:35 ?174次阅读
    120Ω的秘密:CAN总线终端电阻的<b class='flag-5'>重要性</b>

    PCBA加工必看!BOM表的重要性大揭秘

    一站式PCBA加工厂家今天为大家讲讲PCBA加工中BOM表的内容和格式有什么要求?BOM表在PCBA加工中的重要性。在PCBA加工中,BOM表(物料清单)扮演着至关重要的角色,是连接设计与制造的重要
    的头像 发表于 06-18 10:15 ?434次阅读

    连接器气密检测的重要性

    。连接器气密检测的重要性?恶劣环境电气连接保障:潮湿、粉尘、腐蚀性气体、温度剧变等恶劣环境,气密不良将导致触点腐蚀、绝缘下降、信号中断等故障,威胁设备安全运行
    的头像 发表于 03-17 11:01 ?384次阅读
    连接器气密<b class='flag-5'>性</b>检测的<b class='flag-5'>重要性</b>

    PCB拼板设计全解析:重要性、优势与应用实践

    一站式PCBA智造厂家今天为大家讲讲PCB拼板设计的重要性表现哪些方面?PCB拼板设计的基本概念及其重要性。在电子制造行业,SMT贴片工艺中,PCB拼板设计是一项极为关键的步骤。通过优化PCB拼板
    的头像 发表于 03-13 09:35 ?649次阅读
    PCB拼板设计全解析:<b class='flag-5'>重要性</b>、优势与应用实践

    芯片制造中薄膜厚度量测的重要性

    本文论述了芯片制造中薄膜厚度量测的重要性,介绍了量测纳米级薄膜的原理,并介绍了如何在制造过程中融入薄膜量测技术。
    的头像 发表于 02-26 17:30 ?1416次阅读
    芯片制造中薄膜厚度量测的<b class='flag-5'>重要性</b>

    构建综合指挥调度系统的重要性

    构建综合指挥调度系统的重要性不言而喻,它对于提升应急响应速度、优化资源配置、加强跨部门协作、提高决策效率和确保公共安全等方面都具有至关重要的作用。以下是古河云科技构建综合指挥调度系统重要性的几个关键方面:
    的头像 发表于 02-06 16:56 ?605次阅读

    电桥在电子测试中的重要性

    电桥在电子测试中的重要性体现在多个方面,以下是详细的分析: 一、精确测量电参数 电桥作为一种精密的测量工具,能够精确测量电阻、电容、电感等电参数。在电子测试中,这些参数的准确
    的头像 发表于 01-09 10:03 ?1042次阅读

    IPC发布双重重要性评估白皮书

    ),同时利用双重重要性评估(DMA)这一工具,实现企业的可持续增长和差异化竞争优势。 在该白皮书中,IPC详细阐述了双重重要性评估的核心概念,以及它如何帮助企业平衡经济、社会和环境三方面的考量,从而制定出更加全面、可持续的发展战
    的头像 发表于 12-23 17:28 ?894次阅读

    PCB板元器件点胶加固的重要性

    PCB板元器件点胶加固的重要性PCB板元器件点胶加固在电子制造过程中起到了至关重要的作用,其重要性主要体现在以下几个方面:一、提高机械强度点胶加固可以显著降低电子元件的翘曲和变形现象,从而提高整个
    的头像 发表于 12-20 10:18 ?1535次阅读
    PCB板元器件点胶加固的<b class='flag-5'>重要性</b>

    汽车软件单元测试的重要性

    和测试不充分密切相关,这引发了社会各界对汽车软件健壮重要性进行深入思考。本文将探讨汽车软件的测试,尤其是单元测试的重要性,以及WinAMS单元测试工具在这一过程中的关键作用。 一、
    的头像 发表于 11-29 10:57 ?575次阅读

    PROM器件在物联网设备中的重要性

    PROM器件(Programmable Read-Only Memory,可编程只读存储器)在物联网(IoT)设备中扮演着至关重要的角色。以下是关于PROM器件在物联网设备中重要性的分析: 一、存储
    的头像 发表于 11-23 11:35 ?817次阅读

    元器件在电路设计中的重要性

    元器件在电路设计中的重要性是不言而喻的,它们构成了电路的基本单元,并决定了电路的功能、性能以及可靠。以下从几个方面详细阐述元器件在电路设计中的重要性: 实现电路功能 : 元器件是电路功能实现
    的头像 发表于 10-29 16:17 ?1188次阅读

    BMS电池管理系统的重要性

    如今,锂电池已经成为很多电子产品的标配,而BMS作为锂电池的大脑,其重要性不言而喻。BMS作为锂电池系统的核心部件,主要负责监控、控制和管理电池组的状态,确保电池组在安全、稳定、高效的条件下运行。
    的头像 发表于 10-21 09:43 ?1383次阅读
    BMS电池管理系统的<b class='flag-5'>重要性</b>

    示波器探头接地的重要性

    在电子测量领域,示波器是一种不可或缺的工具,它能够捕捉和显示电压随时间变化的波形。然而,要确保这些测量的准确和安全,示波器探头的正确接地是至关重要的。接地不仅仅是一个简单的操作步骤
    的头像 发表于 10-15 11:32 ?1068次阅读

    关于蓄电池气密检测仪重要性和使用方法

    在能源存储领域,电池的性能和安全非常重要,气密作为衡量其质量的关键指标之一,直接影响电池的使用寿命、性能和安全。因此,蓄电池气密检测
    的头像 发表于 08-23 15:48 ?695次阅读
    关于蓄电池气密<b class='flag-5'>性</b>检测仪<b class='flag-5'>重要性</b>和使用方法