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

    文章

    4742

    浏览量

    68330
  • 覆盖
    +关注

    关注

    0

    文章

    18

    浏览量

    10938
收藏 人收藏

    评论

    相关推荐

    ECU故障诊断工具 如何选择合适的ECU

    数据监控和执行元件测试。这些功能是诊断工具的核心,能够帮助技师识别和解决问题。 2. 兼容性 选择ECU故障诊断工具时,首先要考虑的是工具的兼容性。一
    的头像 发表于 11-05 10:23 184次阅读

    知识分享 | 符合ISO 26262标准工具分类与鉴定

    工具分类和鉴定对于确保汽车开发流程的安全和可靠性不可或缺,尤其是在ISO 26262标准之下。通过系统性地评估工具的影响、确定所需的置信度、并采用稳健的鉴定方法,企业可以确保其所使用的工具
    的头像 发表于 10-16 17:36 836次阅读
    知识分享 | 符合ISO 26262<b class='flag-5'>标准</b>的<b class='flag-5'>工具</b>分类与鉴定

    化学标识选择工具(GPC)的简单指南

    电子发烧友网站提供《化学标识选择工具(GPC)的简单指南.pdf》资料免费下载
    发表于 10-08 11:18 0次下载
    化学标识<b class='flag-5'>选择</b><b class='flag-5'>工具</b>(GPC)的简单指南

    java反编译的代码可以修改么

    的影响。 1. Java反编译工具 在Java反编译领域,有一些知名的工具可以帮助开发者将字节码转换回源代码。这些工具包括: JD-GUI :一
    的头像 发表于 09-02 11:00 510次阅读

    单元测试工具TESSY 新版本亮点速览:提供测试驾驶舱视图、超级覆盖率、代码访问分析、增强覆盖率审查

    各种测试对象和方法的所有覆盖率测量结果,并记录在新的测试总结报告中。 了解更多TESSY新版本功能详情或申请免费试用,欢迎咨询TESSY中国授权分销商——龙智。 新版本功能亮点速览: 1、超级覆盖率 逐行评估源代码。 基于
    的头像 发表于 07-08 16:20 399次阅读
    单元测试<b class='flag-5'>工具</b>TESSY 新版本亮点速览:提供测试驾驶舱视图、超级<b class='flag-5'>覆盖</b>率、<b class='flag-5'>代码</b>访问分析、增强<b class='flag-5'>覆盖</b>率审查

    整流滤波电容大小选择标准

    整流滤波电容的大小选择需要考虑几个因素,包括电路的功率需求、负载特性、纹波要求以及成本和尺寸限制等。以下是一些常见的选择标准
    的头像 发表于 05-27 14:15 1729次阅读
    整流滤波电容大小<b class='flag-5'>选择</b><b class='flag-5'>标准</b>

    电源设计的10阶段

    、产品开发周期、标准要求和降低成本,同样也给设计和设计人员带来巨大影响。电源设计是一项复杂的工作,分成许多步骤。在本指南中,我们将根据简单的工作流程,提供 10 设计阶段每个阶段的测试小贴士。希望能让您的测试更高效
    发表于 04-25 09:06 8次下载

    鸿蒙APP开发实战:【Api9】拍照、拍视频;选择图片、视频、文件工具

    鸿蒙开发过程中,经常会进行系统调用,拍照、拍视频、选择图库图片、选择图库视频、选择文件。今天就给大家分享一工具类。
    的头像 发表于 03-26 16:27 722次阅读
    鸿蒙APP开发实战:【Api9】拍照、拍视频;<b class='flag-5'>选择</b>图片、视频、文件<b class='flag-5'>工具</b>类

    无线中继器有哪些优点?为什么选择它来作为WiFi覆盖不全的补充呢?

    无线中继器到底有哪些优点?为什么很多用户会选择它来作为WiFi覆盖不全的补充呢? 无线中继器是一种常用的网络设备,可用于将现有无线网络信号增强和扩展到无法直接覆盖的区域。它具有许多优点,使其成为用户
    的头像 发表于 02-02 14:11 2365次阅读

    英特尔无线蓝牙设备无法启动代码10

    无线蓝牙设备在现代生活中扮演着重要的角色,因为它们使我们能够方便地与其他设备进行通信和传输文件。然而,有时候我们可能会遇到一常见的问题,即蓝牙设备无法启动,错误代码10。 了解问题 1.1
    的头像 发表于 01-04 17:30 7230次阅读

    怎么用Vivado做覆盖率分析

    在做仿真的时候往往会去做代码覆盖率和功能覆盖率的分析,来保证仿真是做的比较充分完备的。
    的头像 发表于 01-03 12:34 1560次阅读
    怎么用Vivado做<b class='flag-5'>覆盖</b>率分析

    如何为10G网络选择合适的超六类网线

    需要考虑网络的带宽需求。10G网络需要支持10Gbps的传输速度。超六类网线是一种高性能的网线标准,能够支持10Gbps的传输。不过,不同的超六类网线在实际应用中的性能可能会有所差别。
    的头像 发表于 12-27 10:56 1627次阅读

    软件代码结构化覆盖测试-MC/DC覆盖

    MC/DC的全称是Modified Condition/Decision Coverage,修正条件判定覆盖率。很多文章对于定义的解释都比较专业,通常也会让人感觉理解困难,本文我们用通俗易懂的说明给大家做介绍。
    的头像 发表于 12-15 15:22 2917次阅读
    软件<b class='flag-5'>代码</b>结构化<b class='flag-5'>覆盖</b>测试-MC/DC<b class='flag-5'>覆盖</b>

    10kv一次消谐器如何选择

    在电力系统中,10kV一次消谐器是保护电力设备的重要工具选择合适的消谐器能够有效地避免谐波对电力设备的影响,提高设备运行效率。那么,如何选择10
    的头像 发表于 12-05 09:22 452次阅读

    codeblocks在哪里输入代码

    Code::Blocks是一集成开发环境(IDE),可以在其中编写、调试和执行程序。下面是关于Code::Blocks中输入代码的详细说明,希望对你有帮助。 进入Code::Blocks后,你将
    的头像 发表于 11-26 09:43 1280次阅读