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

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

3天内不再提示

解决提升覆盖率难题-使用C/C++test覆盖率指导助手

麦克泰技术 来源:麦克泰技术 2023-03-31 13:57 次阅读

在构建关键系统时,将代码覆盖率结构化是必须的,也是非常重要的。这篇文章阐述了Parasoft C/C++test如何通过覆盖率指导助手等自动化生产力功能更好地帮助测试团队。

软件测试是软件开发不可分割的一部分。每个开发和执行代码的行业都可以从使用结构代码覆盖率测试工具中受益。这些工具在安全关键型应用的嵌入式开发行业中特别有用,在这些行业中,软件系统不能出现故障,否则就会涉及生命危险。Parasoft C/C++test的覆盖率指导助手能够帮助用户对难以捉摸又耗时的代码创建测试用例。

代码覆盖率是一个重要且必要的条件

我们在嵌入式安全和安全关键系统中将代码提升到100%覆盖率有多种目的。其中最主要的目是符合DO-178C、IEC 62304等流程标准中定义的验证和确认(Verification & Validation)要求。

优点

代码覆盖率提供的价值是对V&V(Verification & Validation)过程的提升,它可以帮助我们清除代码中的缺陷,确保每行代码都已执行,从而满足团队或者认证的要求。这可以大大提高团队代码质量的安全性和可靠性。

同样,如果我们执行了所有的测试用例,而只获得了60%的覆盖率,那么很明显我们没有创建足够的测试用例。因此,隐藏的缺陷可能潜伏在这些未测试的部分。

另一个问题是“死代码”。这意味着这些代码永远不会被执行,因为没有条件能够支持这些代码被执行。这种情况可能发生在实现了某个特性/功能,但在某种条件下,这个功能需求被删除了。如果不完全删除这些相关的代码,就可能会导致死代码这种情况。在函数或方法中查找死代码的同时,还可以突出必须解决的坏代码。

如何满足您的代码覆盖率要求

您可以通过下面的测试方法或它们的组合方法来实现代码的高覆盖率:

单元测试

集成测试

系统测试

下面是Parasoft支持度较高的两种方法:

1.系统测试和单元测试的组合。首先,检测代码并执行所有的系统测试用例,这将会产生比较高的覆盖率指标。最后,使用单元测试方法来提升剩余未覆盖代码的覆盖率。

2.利用单元测试实现100%代码覆盖率。这种方法很直接。用户创建单元级的测试用例,以确保对每个功能/方法被覆盖。

代码覆盖率指标

覆盖率指标有非常多种类。具体应用哪种覆盖率指标取决于IEC 61508中定义的安全完整性等级(SIL)。另一种情况是DO-178B/C的设计保证级别(DAL)对覆盖率指标的不同要求。对于嵌入式系统,我们可能常用到的覆盖率指标是语句、分支、修改条件/判定(MC/DC)覆盖率。其中,对于那些最严格的要求,会包括汇编代码的覆盖率。Parasoft支持收集所有这些覆盖率指标,包括其他行业名称不同的覆盖率指标种类,比如块、调用、函数、路径、判定覆盖率等。

a0492880-cf77-11ed-bfe3-dac502259ad0.png

图一:指标和趋势

自动化流程

Parasoft C/C++test的“一键获取覆盖率”功能在对减轻团队工作任务和减少成本方面,有着巨大作用。首先是自动生成测试用例,我们只需要单击一下测试配置,C/C++test即可分析代码并且自动生成智能的单元测试用例。然后我们可以执行这些单元测试用例。根据不同代码的大小和复杂性,团队基本上可以达到80%左右的覆盖率。

对于复杂的代码,总是有一些结构复杂的代码语句,要覆盖这些语句并且获取覆盖率是非常困难的。对于这些结构复杂的代码,我们可能需要根据不同的路径或条件情况排列,设计很多组测试用例,才有可能覆盖这些代码,这需要花费我们大量的时间和精力。但是我们现在就有一个完美的解决方案,那就是Parasoft C/C++test Coverage Advisor。Parasoft C/C++test覆盖率指导助手,可以帮我们分析结构或条件复杂的代码,提供给我们多组测试用例,使这些代码更容易被覆盖。

如何在Coverage Advisor中获取覆盖率

在编辑器中,右键单击您想要覆盖的代码行,然后选择Parasoft->Show in Coverage Advisor。

a0702390-cf77-11ed-bfe3-dac502259ad0.png

图二:在Coverage Advisor菜单中显示

下图展示了为用户提供的多种测试用例,前置条件字段表示:

mainSensorSignal和coSensorSignal的范围和输入值

外部调用的预期输出

在使用这些设置的参数值和外部调用的桩函数创建单元测试用例时,用户将获得所选行的覆盖率。

a08cd12a-cf77-11ed-bfe3-dac502259ad0.png

图三:Parasoft C/C++test2020.2 Coverage Advisor行覆盖分析反馈

总结

在构建嵌入式安全和安全关键型软件系统时,代码结构覆盖率是必须的。同时,我们可以将对应的测试用例和需求关联上,这样可以确保:

创建了足够的测试用例来测试软件

没有任何死代码

每一行代码都经过合规性和认证需求的检查

Parasoft C/C++test是一个完整的软件测试解决方案,它为团队提供了测试方法功能和自动化生产能力,比如覆盖率覆盖率指导助手。利用这个功能,开发人员可以快速实现他们的代码覆盖率目标。相应地,管理者可以加快产品上市时间、保障审计和简化产品认证。在向市场输出高质量软件的同时,能够降低成本投入。

审核编辑 :李倩

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

    关注

    5082

    文章

    19096

    浏览量

    304618
  • C++
    C++
    +关注

    关注

    22

    文章

    2108

    浏览量

    73604
  • 代码
    +关注

    关注

    30

    文章

    4774

    浏览量

    68504

原文标题:解决提升覆盖率难题-使用C/C++test覆盖率指导助手

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    怎么用Vivado做覆盖率分析

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

    synopsys 的design ware:DW_fpv_div,浮点数除法器,默认32位下,想提升覆盖率(TMAX),如果用功能case去提升覆盖率呢?

    覆盖率只有微微的提升,请问是否要遍历很多数才能提升覆盖率吗?一般这种浮点数有什么方法去跑吗? 每个数都跑岂不是天文数字,本人刚接触不久,请大佬指教下,谢谢
    发表于 10-15 18:38

    如何改善5G覆盖率

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

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

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

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

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

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

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

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

    功能覆盖率和代码覆盖率的目标前,一般要求用例是100%pass的,即手上已开发的用例都能执行通过。计划覆盖率指的是测试通过的测试点(test point)占所有测试点的比例。严格来讲,
    发表于 09-14 11:57

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

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

    Verilog代码覆盖率检查

    Verilog代码覆盖率检查是检查验证工作是否完全的重要方法,代码覆盖率(codecoverge)可以指示Verilog代码描述的功能有多少在仿真过程中被验证过了,代码覆盖率分析包括以下分析内容。
    发表于 04-29 12:35 8406次阅读

    IP开发时如何考虑复用覆盖率

    如何在开发IP的同时去巩固集成和复用覆盖率?IP的某些功能和性能是可以配置的,需要考虑的是IP被各种合理配置后的工作是否都能够正常,将功能覆盖率先整理为层次化的抽象功能覆盖率模型,称之为cover model。
    的头像 发表于 02-18 12:08 2607次阅读

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

    代码覆盖率是衡量软件测试完成情况的指标,通常基于测试过程中已检查的程序源代码比例计算得出。代码覆盖率可以有效避免包含未测试代码的程序被发布。 1. 问题背景 代码覆盖(Code coverage
    的头像 发表于 01-06 15:06 3153次阅读
    嵌入式代码<b class='flag-5'>覆盖率</b>统计方法和经验

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

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

    怎么才能写出高覆盖率的Verilog代码?

    芯片前端工程中,测试验证的核心理念:以提高覆盖率为核心。设计工程师需要关心的主要有行覆盖率(Block),条件覆盖率(Expression),翻转覆盖率(Toggle),状态机
    的头像 发表于 06-01 10:13 2614次阅读

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

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

    代码覆盖率记录

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