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

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

3天内不再提示

代码覆盖率工具的重要性

星星科技指导员 来源:Hetal Chauhan 作者:Hetal Chauhan 2022-12-08 15:13 次阅读

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

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

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

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

它创建额外的测试用例以增加覆盖范围

通过减少UAT缺陷和生产缺陷可以实现更高的投资回报率

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

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

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

如何选择代码覆盖率工具?

这是选择用于应用程序测试的代码覆盖率工具的真正挑战。高效的工具可以帮助衡量测试工作的有效性 根据用于编码的语言,有几个选项可以创建代码覆盖率报告。

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

此外,还有其他适用于所有主要语言的覆盖测试工具,其中一些不仅与单元测试相关,还与执行的整体测试(单元、集成、系统、手册等)相关。以下是一些趋势代码覆盖工具的列表,这些工具将帮助您在运行测试过程时选择一个。

1. 默认的视觉工作室代码覆盖率

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

pYYBAGORjrSAOEd5AAE3HzGhA5Y379.png

图 1 – 结果表:Visual Studio

报告可以以块或行的形式获得。管理代码覆盖率结果以及合并不同运行的结果也很容易。

2. 科伯图拉

Cobertura是最常用和广为人知的代码覆盖工具之一。它作为一种免费的 Java 工具而广受欢迎,该工具可以计算执行的各种测试访问的代码百分比。它可用于识别 Java 程序的哪些部分缺少测试覆盖率。它基于jcoverage。

执行可以通过 Ant、Command Line、Eclipse 插件、Maven 插件来完成。它易于使用,可以在没有源代码的情况下测量覆盖范围。它提供HTML或XML格式的报告,并具有测试类和方法的行和分支的能力。

3. Coverage.py

Coverage.py 是Python的代码覆盖工具。使用 Coverage.py 的主要阶段包括执行、分析和报告。它监视 Python 程序,记录代码的哪些部分已执行,然后分析源代码以识别可以执行但未执行的代码。

Coverage.py 随 Tidelift 一起提供,以提供一项企业订阅。其他方式包括通过命令行执行,API以及Django和Mako的插件。

4. 格科夫-利科夫

Gcov 是与 GCC 一起使用的测试覆盖程序。它分析程序以帮助创建更高效、运行更快的代码,以发现代码中未经测试的部分。

它充当分析工具,有助于分析一些基本的性能统计信息,例如:

每行代码执行的次数

实际执行哪些代码行

每段代码使用多少计算时间

Lcov 是一个图形 Gcov.It 前端,用于收集多个源文件的 gcov 数据并创建 HTML 页面,其中包含带有覆盖率信息注释的源代码。它还添加了概述页面,以便在文件结构中轻松导航。Lcov 支持语句、函数和分支覆盖率测量。

5. 测试井 CTC ++

Testwell CTC++ 是一个强大的基于检测的代码覆盖率和动态分析工具,适用于 C 和C++代码。它可以在C#,Java和Objective-C代码上使用特定的附加组件。它基本上也可用于分析任何嵌入式目标机器上的代码。

CTC++提供线路覆盖,语句覆盖,功能覆盖,决策覆盖,多条件覆盖,修改条件/决策覆盖(MC / DC),条件覆盖。

作为动态分析工具,CTC++ 在代码中显示执行计数器(执行的次数)。它还可用于测量函数执行成本(通常是时间),并在测试时启用函数进入/退出跟踪。

该工具用户友好且快速。报告生成可以是纯文本,HTML,XML,JSON(JavaScript对象表示法)和Excel输入形式。在某些环境中,例如Microsoft Visual Studio,可以直接从编译器IDE使用CTC++。

6. NCover

NCover 是 .NET 程序和应用程序的代码覆盖率工具。NCover 旨在与构建过程集成,并具有广泛的命令行支持。代码覆盖过程很简单,可以自动化。NCover 应用程序套件由三个工具 NCover.Explorer.exe、NCover.Console.exe 和 NCover.Reporting.exe 组成。

NCover.Explorer.exe是一个GUI程序,允许生成和查看详细的代码覆盖率信息。

它支持语句覆盖率、分支覆盖率和圈复杂度。它提供了单独选择低、中、高和完整级别的代码覆盖率。它非常易于使用且快速,也可以在开源和商业许可证上使用。

结论:

为了获得更好的产品质量,根据项目的特定需求和所需的代码覆盖率级别,可以轻松选择代码覆盖率工具。所有可用的代码覆盖工具都足以满足基于代码语言和结构的独立需求的代码覆盖所需的功能。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • API
    API
    +关注

    关注

    2

    文章

    1383

    浏览量

    60994
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66784
  • 编辑器
    +关注

    关注

    1

    文章

    788

    浏览量

    30204
收藏 人收藏

    评论

    相关推荐

    代码规范的重要性是什么

    代码规范的重要性
    发表于 05-19 13:07

    如何改善5G覆盖率

    改善5G覆盖率的方法
    发表于 12-15 07:52

    如何提高DFT设计测试覆盖率

    提高DFT设计测试覆盖率的有效方法是什么
    发表于 05-07 06:37

    怎么提高非随机图形设计的故障覆盖率

    怎么提高非随机图形设计的故障覆盖率?为LBIST设计提高故障检测能力的技术是什么?
    发表于 05-08 07:11

    测试用例质量的重要性

    范围内。所有数据类型都是整数。如下图所示的三个测试用例都通过了测试,并且达到了100%的MC/DC覆盖度。图1 这三个测试用例通过并达到了100%的覆盖率图1测试用例都通过并已经达到了100%的覆盖
    发表于 09-02 16:44

    嵌入式仿真平台SkyEye的覆盖率分析相关资料下载

    代码执娜行覆盖情况的功能,来检测代码中未执行覆盖情况。在覆盖率分析时需要分析嵌入式软件的指令覆盖率
    发表于 12-17 07:27

    关于SpinalHDL中的验证覆盖率收集简单说明

    在做RTL仿真验证时,覆盖率收集往往是我们在验证中需要注意的地方,本篇就SpinalHDL中的验证覆盖率收集做一个简单说明。sbt配置在SpinalHDL里进行仿真验证时,我们的待测试代码会生
    发表于 06-24 15:56

    重点厘清覆盖率相关的概念以及在芯片开发流程中跟覆盖率相关的事项

    。提个小建议,即使对SV相关语法很熟悉,实现覆盖率模型的时候还是使用最直接和最简单的方式。这样可以提高可读,便于维护和评审。03 代码覆盖率代码
    发表于 09-14 11:57

    Systemverilog覆盖率的合并和计算方式

      在systemverilog中,对于一个covergroup来说,可能会有多个instance,我们可能需要对这些instance覆盖率进行操作。  只保存covergroup type的覆盖率
    发表于 03-21 14:24

    Verilog代码覆盖率检查

    Verilog代码覆盖率检查是检查验证工作是否完全的重要方法,代码覆盖率(codecoverge)可以指示Verilog
    发表于 04-29 12:35 7945次阅读

    统计嵌入式代码覆盖率的方法和经验

    代码覆盖率是衡量软件测试完成情况的指标,通常基于测试过程中已检查的程序源代码比例计算得出。代码覆盖率可以有效避免包含未测试
    的头像 发表于 03-29 11:58 1612次阅读
    统计嵌入式<b class='flag-5'>代码</b><b class='flag-5'>覆盖率</b>的方法和经验

    覆盖率的Verilog代码的编写技巧

    设计工程师需要关心的主要有行覆盖率(Block),条件覆盖率(Expression),翻转覆盖率(Toggle),状态机覆盖率。本文从ASIC设计的角度上来讨论,如何写出高
    的头像 发表于 05-26 17:30 3727次阅读

    代码覆盖工具重要性

      它支持语句覆盖、分支覆盖和圈复杂度。它提供了分别选择低、中、高和完整级别的代码覆盖率的规定。它非常易于使用和快速,也可用于开源和商业许可。
    的头像 发表于 06-30 10:36 662次阅读
    <b class='flag-5'>代码</b><b class='flag-5'>覆盖</b><b class='flag-5'>工具</b>的<b class='flag-5'>重要性</b>

    更好地测量代码覆盖率的 9 个技巧

    测量代码覆盖率对于嵌入式系统来说越来越重要,但需要一些经验。这是因为有一些障碍需要克服,尤其是小目标。但是,使用正确的方法和合适的工具,无需过多努力即可测量测试
    的头像 发表于 07-14 15:58 2417次阅读
    更好地测量<b class='flag-5'>代码</b><b class='flag-5'>覆盖率</b>的 9 个技巧

    代码覆盖率记录

    为确保具体的产品(例如,医疗或航空电子市场)质量合格, 通常需要提供语句覆盖与判定覆盖认证证明。对于各种嵌 入式系统,规范要求高度优化的代码需要实时测试。禁止 代码插装和运行时篡
    发表于 11-03 11:02 0次下载
    <b class='flag-5'>代码</b><b class='flag-5'>覆盖率</b>记录