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

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

3天内不再提示

选择代码覆盖工具的 10 个标准

陆军航空兵 来源:陆军航空兵 作者:陆军航空兵 2022-07-20 18:06 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

为了开发安全可靠的软件,测试是质量保证不可或缺的一部分。如果没有充分的记录测试,就不可能确定软件是否安全且功能是否正确。在这种情况下,代码覆盖率(测试覆盖率)的测量尤为重要。这是因为它可以用来确定一个软件已经被测试的全面程度。代码覆盖率表示测试代码与总代码的比率。简而言之,例如,如果在测试期间运行四分之三的可能选项,则代码覆盖率为 75%。

特别是在安全关键型软件开发中,行业标准对代码覆盖率规定了精确的要求,因此如果没有足够的测试覆盖率证明,产品就无法在此处进行认证。而且在其他开发项目中,公司也越来越重视软件质量和衡量代码覆盖率。

市场上有各种代码覆盖率分析仪可用于测量代码覆盖率。它们在处理和质量方面存在显着差异。出于这个原因,我们展示了选择代码覆盖工具的十个基本标准:

1. 独立于编译器

当然,代码覆盖工具必须与项目中使用的编译器配合使用。但是,从一开始就依赖于可以独立于编译器使用的工具是很有意义的。这样的工具可以在所有项目中使用,在编译器更改的情况下也可以在当前项目中使用。可以独立于编译器使用的覆盖工具可以以更多样化的方式使用,因此是值得投资的。

2. 易用性

如果最好的软件不必要地复杂或没有经过深思熟虑,则不情愿地(因此很少)使用它。另一方面,简单的处理可以显着提高用户对使用测试覆盖工具的接受度。理想情况下,该工具在后台运行,并且在测试期间不会为用户生成任何额外的工作。

3. 报道的可理解性

在评估覆盖率报告时,应该一目了然地知道哪些代码部分已经过测试,哪些地方仍然缺乏覆盖率。使用良好的覆盖率工具,测试人员可以轻松地在源代码级别识别哪些测试用例仍然出色。通过执行这些缺失的测试,可以有针对性地增加代码覆盖率。同时,这避免了因冗余测试而导致的不必要的工作。

poYBAGLO7YSAe2AlAAMJY_ah8x0377.jpg


图:除了单个代码部分的代码覆盖率概述(上),有效的代码覆盖率工具(如 Testwell CTC++)还显示详细信息(下),准确显示测试覆盖源代码的程度,即使是最高覆盖率。(来源:Verifysoft Technology)

4. 为安全关键型开发提供更高覆盖水平的支持

对于安全关键软件的测试,标准(例如汽车领域的 ISO 26262、航空领域的 DO-178C 和铁路运输领域的 EN-50128)规定了最高 MC/DC 覆盖范围的高覆盖水平。因此,必须确保覆盖工具支持所有必需的覆盖级别。为了能够长期使用解决方案,不仅要考虑当前的需求,还要考虑未来的需求。重要提示:许多覆盖工具仅提供决策或分支覆盖,因此不足以进行安全关键型软件开发。

代码覆盖率一览

函数覆盖率
函数覆盖率衡量程序的所有函数是否都被调用。功能覆盖率是通常测试覆盖率级别中“最弱的”。

语句覆盖率
语句覆盖率衡量测试语句与所有语句相比的百分比。

决策覆盖率/分支覆盖率
在此覆盖率级别,每个决策必须至少测试一次为真,一次为假。对于普通的 if 语句,这对应于分支覆盖,其中每个分支都必须已执行。

条件覆盖
条件覆盖详细考虑复合决策。对于由通过布尔运算符组成的多个原子条件组成的决策,必须将这些条件中的每一个单独测试为“真”和“假”。

多条件覆盖和修正条件/决策覆盖 (MC/DC)
对于多条件覆盖,必须检查所有可能的真假组合以进行复合决策。在一个决策中有多个条件的情况下,这需要大量几乎不切实际的测试用例。因此,在实践和标准中,修改后的条件/决策覆盖率 (MC/DC) 是相关的,其中测试用例的数量减少了,而测试覆盖率的信息价值仍然足够高。

5. 灵活集成

即使在公司内部,开发环境和工具链通常也非常多样化。覆盖工具应该可以轻松应对所有这些不同的环境。必须能够无缝地集成到各自的构建过程和测试的执行中,并且无需付出很大的努力。如果该工具也可以通过命令行使用,则在创建自动构建方面具有优势。

6. 低仪表开销

大多数覆盖率工具通过检测源代码来衡量代码覆盖率。源代码由带有“计数器”的覆盖工具丰富,它计算相关代码部分在测试期间执行的位置和频率。但是,这会增加原始代码的大小。因此,在内存有限的嵌入式目标上进行测试时,应注意将这种所谓的检测开销保持在尽可能低的水平。各个代码覆盖工具之间的内存需求差异有时是相当大的。例如,Verifysoft Technology 的代码覆盖率分析器 Testwell CTC++ 在这方面非常节省资源。

7.支持不同的编程语言

公司经常使用不同的编程语言或计划在未来引入其他语言。因此,从一开始就选择支持所有或尽可能多的这些语言的工具是有意义的。

8. 支持“创意”编程

一些覆盖工具在分析偏离通用标准或嵌套深度较高的语言结构时会遇到问题。然而,衡量测试覆盖率的好工具也应该能够应对“创造性”的编程风格。

9. 安全关键软件开发的适用性

在开发安全关键型软件时,相关标准要求整个工具链必须经过认证。这里的目的是证明覆盖分析器和整个工具链中使用的其他工具都能可靠地工作。专业代码覆盖工具的制造商通过鉴定工具包和工具鉴定建议支持软件项目。在这种情况下,还应注意所选的覆盖工具是否已在安全关键项目中成功使用。

10. 评估许可、技术支持和客户参考

应在工具评估期间检查覆盖工具对自己项目的适用性。在此期间,您已经对技术支持的表现有所了解。是否也可以通过电话或仅通过电子邮件获得支持?支持人员的能力如何?响应时间呢?用户手册有多好和实用?制造商是否也提供培训?最后但同样重要的是,还建议查看制造商的客户参考资料。这些可以提供有关覆盖分析仪质量和供应商性能的更多信息。

结论

代码覆盖对于安全关键型软件开发来说是强制性的,这是有充分理由的。但对于任何想要提高软件质量的人来说,这也是衡量和增加测试覆盖率和价值的好方法。在选择代码覆盖率分析器时,必须注意确保该工具满足设定的要求。此外,易用性和专业支持等因素也起着重要作用。正确使用,一个好的测试覆盖工具有助于显着提高质量,增加开发人员和测试人员的积极性,并以节省成本的方式执行测试。

审核编辑 黄昊宇

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

    关注

    30

    文章

    4940

    浏览量

    73118
  • 覆盖
    +关注

    关注

    0

    文章

    18

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何选择适合的智驾仿真工具进行场景生成和测试?

    在自动驾驶技术日益发展的背景下,选择合适的智驾仿真工具进行场景生成和测试显得尤为重要。该工具不仅需要支持高精度的场景重建,还需满足多种环境条件和传感器模型的兼容性。本文将深入探讨如何评估不同智驾仿真
    的头像 发表于 11-25 10:32 140次阅读
    如何<b class='flag-5'>选择</b>适合的智驾仿真<b class='flag-5'>工具</b>进行场景生成和测试?

    嵌入式开发工具版本的选择策略

    兼容性测试标准过渡期支持策略 二、可灵活选择软件版本,但建议统一 有些工具,它对项目的“依耐性”不强,基本上不同版本之间都能用,团队之间可以不用统一软件版本。 比如J-Link 、ST-Link等这种
    发表于 11-25 06:11

    Neway微波的高频覆盖

    Neway微波高频覆盖的核心优势体现在其产品支持从低频到毫米波频段(DC-110 GHz)的全面覆盖,满足高频场景对低损耗、抗干扰及环境适应性的严苛需求。一、高频覆盖范围与核心能力l 全频段支持
    发表于 11-20 09:02

    使用SAFERTOS与LDRA工具套件提升功能安全

    人员可以自动化代码覆盖分析,加速关键标准(如IEC 61508、ISO 26262、DO-178C等)的认证过程。
    的头像 发表于 11-11 09:44 381次阅读

    代码开发平台推荐:2025国内低代码开发平台排名TOP10

    是 2025 年国内低代码开发平台排行榜 TOP10,为企业选择适合的代码开发平台提供参考。 1. 普元低代码平台 普元低
    的头像 发表于 10-28 10:22 301次阅读

    嵌入式软件测试与专业测试工具的必要性深度解析

    系统化解决方案,其必要性体现在多个维度:满足行业合规要求汽车电子ISO 26262、航空DO-178C等标准强制要求代码覆盖率指标达到C1(分支覆盖)≥100%、MC/DC(修正条件判
    发表于 09-28 17:42

    如何利用外部校验工具验证电能质量在线监测装置的准确性?

    ,判断其误差是否在规定精度范围内。该方法是校准周期延长后、或日常怀疑装置精度时最可靠的验证手段,需遵循 “标准溯源、多工况覆盖、数据闭环” 的原则。以下是具体操作流程、工具选择及关键要
    的头像 发表于 09-11 17:24 605次阅读
    如何利用外部校验<b class='flag-5'>工具</b>验证电能质量在线监测装置的准确性?

    如何选择适合的标准源设备来校准电能质量在线监测装置?

    选择适合的标准源设备校准电能质量在线监测装置(以下简称 “监测装置”),核心是 匹配校准需求、覆盖技术参数、适配应用场景 ,需从 “校准目标→技术指标→场景适配→附加能力” 四维度层
    的头像 发表于 09-04 16:50 621次阅读
    如何<b class='flag-5'>选择</b>适合的<b class='flag-5'>标准</b>源设备来校准电能质量在线监测装置?

    如何选择适合自己项目的通信协议评估工具

    骤的决策框架,结合项目关键变量(如协议类型、评估目标、资源约束等),帮助精准匹配工具: 一、先明确 3 核心决策前提:锚定选型方向 在选择工具前,需先梳理项目的基础约束,这是后续筛选
    的头像 发表于 08-27 09:19 430次阅读
    如何<b class='flag-5'>选择</b>适合自己项目的通信协议评估<b class='flag-5'>工具</b>?

    HarmonyOS AI辅助编程工具(CodeGenie)代码测试

    放置于方法名称上或框选完整的待测试方法代码块,右键选择CodeGenie > Generate UT,开始生成单元测试用例。 说明 最多支持解读20000字符以内的代码片段。ArkUI
    发表于 07-14 17:33

    代码静态测试工具Perforce QAC 2025.1新特性

    Perforce QAC 2025.1实现了对新发布的MISRA C:2025®标准的100%覆盖,并提供了对应的新合规模块。该版本还扩展了对CERT C Level 1建议的覆盖范围,改进了与持续
    的头像 发表于 04-21 15:14 919次阅读
    <b class='flag-5'>代码</b>静态测试<b class='flag-5'>工具</b>Perforce QAC 2025.1新特性

    零跑汽车选择QNX技术为B10车型提供支持

    近日,BlackBerry有限公司(纽约证券交易所代码:BB;多伦多证券交易所代码:BB)旗下部门QNX今日宣布,中国智能电动车企零跑汽车已选择QNX技术作为其全新B系列首款全球化智能电动SUV——B
    的头像 发表于 04-09 14:25 783次阅读

    安森美再谈图像传感器的选择标准

    要成功设计和开发需要图像传感器的设备,了解选择标准的复杂性和细微差别至关重要。设计人员需要从众多参数中进行选择,例如分辨率、像素大小、像素类型、帧率、快门类型、光学格式、功能特性等。选择
    的头像 发表于 03-12 11:37 892次阅读

    STM32CubeMX生成代码就会覆盖CMakeLists.txt文件,怎么解决?

    请教一下用STM32CubeMX生成代码后,我自己加了一头文件和源文件,这些自己加的文件不是要配置到CMakeLists.txt编译么,但下载在用STM32CubeMX生成成代码,就会覆盖
    发表于 03-12 08:03

    点焊机测量工具选择与应用指南

    和正确使用测量工具是每个焊接工程师必须掌握的基本技能之一。本文将详细介绍点焊机测量工具选择原则、常用工具及其具体应用方法。 首先,了解点焊机的工作原理对于
    的头像 发表于 02-19 09:56 828次阅读
    点焊机测量<b class='flag-5'>工具</b><b class='flag-5'>选择</b>与应用指南