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

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

3天内不再提示

代码覆盖率分析是否必要

星星科技指导员 来源:嵌入式计算设计 作者:JAY THOMAS 2022-11-01 10:58 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

程序员讨论测试时,经常出现的一个问题是多少才足够?我需要获得100%的保险吗?让我们首先解决房间里的大象:完全测试一个软件是不可能的。不相信我?一书中描述的100行程序有多达1018条独特的路径。实际上,当您意识到当代软件通常超过数十万甚至数百万行代码时,您很快就会意识到完全测试一个软件是多么不切实际。

一次正在度假,接到一个来自世界偏远地区的卫星电话,告诉我我正在执行的任务是“在饮料中”——一种委婉的说法,表明预计飞行的飞行器在水下。最后,它被证明是由于生锈的螺母而导致的故障,但在调查该故障的过程中,我们通过安全关键代码发现了许多路径,这些路径未被我们的测试制度所涵盖。虽然在接下来的几个月里解决了所有问题,但我的假期很难享受,因为我不知道发生了什么。

那么多少软件测试才足够呢?这是任务和安全关键型软件项目解决的问题,可以从中吸取一些宝贵的经验教训。最基本的方法是测试,测量,重复。这里提到的测量是结构覆盖分析,或代码覆盖率。许多行业标准(例如,航空航天的DO-178和汽车的ISO 26262)要求使用代码覆盖率作为证明测试完整性的唯一手段。

结构覆盖率分析是对给定测试或一组测试执行的代码结构的度量。最基本的指标之一,语句覆盖率 (SC),衡量通过测试执行的代码语句。更严格的度量是决策覆盖率 (DC),它包括 SC 的目标以及测量从代码中的每个决策点获取的决策路径。更严格的是修改条件/决策覆盖率(MC / DC),其中包括DC的目标以及测量决策点中每个条件的值。所有这三种测量都是由DO-178标准强制要求的。

代码覆盖率通常以百分比表示,软件测试越彻底,代码覆盖率越高,软件包含缺陷的可能性就越小。

安全关键型软件标准高度关注如何有效地测试软件。他们指出,有效的软件测试需要一种规范的方法,其中代码覆盖率用于提供有关迄今为止测试有效性的反馈。应用于系统的测试严格程度必须由系统故障的影响决定。后果越严重,测试必须越严格。

然而,需要注意的是;100%的覆盖率并不一定转化为有效的测试。以最大化代码覆盖率为目标的测试可能会遗漏代码中的重要问题,而严格测试有助于识别这些问题,例如:

• 与需求相关的错误• 缺少代码

• 与数据流相关的错误

• 争用条件

• 硬件兼容性/配置

尽管如此,作为测试完整性和严谨性的衡量标准,代码覆盖率是无与伦比的,每个软件开发项目都应该采用。

审核编辑:郭婷

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

    关注

    13

    文章

    856

    浏览量

    47931
  • 代码
    +关注

    关注

    30

    文章

    4983

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Perforce 静态分析现已正式支持 Rust语言!

    是否正计划通过 Rust 编程来提升内存安全性,却又担心它无法覆盖所有的安全漏洞?Perforce QAC 和 Klocwork 现在已支持分析 Rust 代码,填补了开源
    的头像 发表于 04-08 15:38 533次阅读
    Perforce 静态<b class='flag-5'>分析</b>现已正式支持 Rust语言!

    半导体嵌入式单元测试的核心技术、工具选型与落地全流程

    和问题,及时进行改进。例如,如果发现某个模块的测试用例执行时间过长,可以考虑优化测试用例的设计,减少不必要的测试步骤。如果发现测试覆盖率一直无法达到要求,可以检查代码是否存在未测试的分
    发表于 03-06 14:55

    嵌入式软件单元测试必要性与专业工具重要性的系统性专业研究报告

    强制覆盖率要求 报告审计要求 ‌ISO 26262‌(ASIL D) 汽车电子 ‌100% MC/DC‌(修正条件/判定覆盖) 必须由自动化工具生成‌可追溯矩阵‌(需求→代码→测试用例) ‌IEC
    发表于 03-05 10:41

    海尔智家借助MATLAB技术提高测试覆盖率

    20,000 行。这会增加错误出现的概率。此外,它还会导致调试周期长、测试覆盖率低和效率低下等问题,从而影响项目期限。
    的头像 发表于 02-25 11:14 656次阅读
    海尔智家借助MATLAB技术提高测试<b class='flag-5'>覆盖率</b>

    芯片测试覆盖率99%就够了吗?给DFT设计提个醒

    充分。必须将硅后验证向量导入ATPG工具进行覆盖率分析,否则会形成测试盲区。 二、从测试困境到DFT设计反馈 测试工程师的挑战应前置于设计阶段解决。 可测性设计(DFT)的早期介入:在架构设计阶段,测试
    发表于 02-06 11:06

    汽车软件质量跃迁的系统性路径:基于ISO 26262标准的单元测试体系重构与中日实践深度对比(2026学术研究报告)

    单元测试 集成后补测,30%模块无覆盖 覆盖率目标 ASIL-D: ≥95%(2025年平均93.5%) ASIL-D:平均38%(头部企业≤50%) 管理认知 质量总监具代码否决权 项目经理以交付
    发表于 01-05 14:58

    嵌入式软件单元测试中AI自动化与人工检查的协同机制研究:基于专业工具的实证分析

    ‌ ‌摘要****‌ 本文系统探讨嵌入式软件相较于通用软件在单元测试层面的特殊性,分析其对高覆盖率、可追溯性与实时性验证的严苛需求,并以专业工具winAMS为技术载体,深入研究AI驱动的自动化测试在
    发表于 12-31 11:22

    分析嵌入式软件代码的漏洞-代码注入

    找到所有应该做出这种修改的地方。但这对于大型程序来说可能是棘手的,特别是对于第三方代码库。 3、测试漏洞 测试这些类型的漏洞可能很困难; 即使能实现非常高的代码覆盖率的测试也不能触发这些问题。 测试
    发表于 12-22 12:53

    C语言单元测试在嵌入式软件开发中的作用及专业工具的应用

    的源代码文件 设置测试用例和测试套件 配置覆盖率分析选项 生成测试框架和桩函数 winAMS可以自动生成测试框架和必要的桩函数,大大简化测试准备过程。 3. 测试执行与
    发表于 12-18 11:46

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

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

    4G工业网关是否还有需求

    是具体分析: 1. 网络覆盖优势:填补5G空白,满足广泛部署需求 5G覆盖不足 :截至2025年,5G基站仍在全球范围内逐步推广,尤其在偏远地区、地下矿井、海洋平台等场景,5G信号覆盖
    的头像 发表于 09-24 11:29 919次阅读

    HarmonyOSAI编程单元测试用例

    根据选中的ArkTS方法名称,CodeGenie支持自动生成对应单元测试用例,提升测试覆盖率。 在ArkTS文档中,光标放置于方法名称上或框选完整的待测试方法代码块,右键选择CodeGenie
    发表于 08-27 14:33

    太阳光模拟器关键参数 | 光谱匹配度、光谱覆盖率及光谱偏离

    太阳光模拟器作为模拟太阳辐射环境的核心设备,其性能直接关系到诸多领域实验数据的可靠性。光谱匹配度(SMD)、光谱覆盖率(SPC)和光谱偏离(SPD)作为评估其性能的关键指标,从不同维度决定了模拟
    的头像 发表于 07-24 11:26 1353次阅读
    太阳光模拟器关键参数 | 光谱匹配度、光谱<b class='flag-5'>覆盖率</b>及光谱偏离<b class='flag-5'>率</b>

    太阳光模拟器性能的影响参数:光谱匹配度、光谱覆盖率及光谱偏离

    (SPC)用于评估太阳光模拟器对 AM1.5G 标准光谱的覆盖程度,重点关注模拟器是否能完整复现标准光谱的各个波段,不同材料对光谱覆盖的需求存在显著差异。 光谱覆盖率对太阳光模拟器性能
    发表于 07-21 15:35

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

    本功能从DevEco Studio 5.1.0 Release版本开始支持。 根据选中的ArkTS方法名称,CodeGenie支持自动生成对应单元测试用例,提升测试覆盖率。 在ArkTS文档中,光标
    发表于 07-14 17:33