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

    文章

    807

    浏览量

    47348
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【产品介绍】Questa One Sim软件

    优势与平台支持优势行业领先的高性能多语言仿真器用于可测性设计(DFT)向量验证的最快仿真器高性能、高容量的集成调试环境覆盖率加速功能,助力更快实现覆盖率收敛智能编译(SmartCompile)和多核
    的头像 发表于 11-17 10:39 190次阅读
    【产品介绍】Questa One Sim软件

    如何判断电能质量在线监测装置的采样是否达标?

    判断电能质量在线监测装置采样是否达标,核心是 **“核对参数是否符合国标 + 实际测试验证数据准确性”**,需结合装置配置、标准要求和场景需求,分 3 步落地:
    的头像 发表于 11-08 16:51 1770次阅读

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

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

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

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

    耦合之殇,软件设计中的隐疾

    和控制耦合。如果控制耦合未被正确分析,可能会导致系统在某些情况下做出错误的决策。因此当测试覆盖率未满足要求时,还要给出相关的解决方案。 02 定 义 从DO-178C中得到数据耦合与控制耦合的定义。 数据
    的头像 发表于 08-28 15:54 512次阅读
    耦合之殇,软件设计中的隐疾

    HarmonyOSAI编程单元测试用例

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

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

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

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

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

    如何评估协议分析仪的性能指标?

    )的准确。 评估方法: 注入错误流量:手动构造错误包(如篡改TCP校验和),观察分析是否报警。 对比基线:与已知错误日志(如交换机日志)对比,验证检测覆盖率。 关键场景: 工业
    发表于 07-18 14:44

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

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

    新思科技VSO.ai如何颠覆芯片验证

    随着片上系统(SoC)复杂性不断增加,IP的复杂性与验证难度以及用于验证的VIP的开发要求也日益提高。不断发展的协议标准要求为IP和VIP提供动态测试套件,并满足规定的功能和代码覆盖率指标。
    的头像 发表于 05-21 14:49 997次阅读
    新思科技VSO.ai如何颠覆芯片验证

    新能源车软件单元测试深度解析:自动驾驶系统视角

    FGSM攻击生成干扰图像)和神经元覆盖率指标(如DeepXplore框架),确保模型在极端输入下的可靠性。 ‌测试用例设计方法论‌ ‌ 故障树分析(FTA): ‌针对制动失效等高风险场景,逆向推导
    发表于 05-12 15:59

    智行者蜗小白SC80地库版开启地下空间清洁新纪元

    在流动的车位与交错的车道间,传统清洁总在追逐"覆盖率"与"安全性"的平衡。如今,智行者用算法给出了新答案。
    的头像 发表于 04-09 15:47 769次阅读

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

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

    分析C语言代码结构的设计问题

    分析一个C语言代码结构的设计问题。 这段代码,使用了两次malloc,分别给 p1 和 p2 申请了内存。用完后,内存释放,防止内存泄漏。 大家觉得,这样的代码设计有没有问题。
    的头像 发表于 02-11 09:31 669次阅读