满足功能安全要求的代码测试方案:ParasoftC++test

汽车电子与软件 2022-06-28 12:32

安全功能越来越多地在电气、电子或可编程电子系统中得到实现。这些系统一般都是非常复杂的,这就使得在实际中完整地判断每个失效模式(failure mode)或测试所有可能的行为成为了不可能完成的任务。虽然预测其安全方面的性能非常困难,但测试仍然是非常有必要的。关键的挑战在于设计一种能够预防危险性失效或能在这些失效发生的时候对其进行控制的系统。安全性将成为未来汽车开发中的一个关键因素。新功能——不仅仅在驾驶员辅助系统领域,同样在车辆动态控制以及主动和被动安全系统中——越来越多地触及到了安全性工程的范畴。未来的开发以及对这些功能的集成将会进一步提升对安全系统开发流程的需求,同时还需要提供所有合理安全性目标已满足的证据。

随着复杂性增强、软件内容以及机电层面实现的趋势,系统化的失效以及随机硬件失效的风险有显著增加的趋势。通过提供可行的需求以及流程,ISO/DIS 26262 包含了能够将这些风险降低到可接受程度的指南。

Parasoft 公司 C++test 帮助汽车软件开发组织遵守ISO/DIS 26262 标准,是为软件开发以及测试提供自动化最佳实践的集成解决方案



01丨Parasoft

 Parasoft C++test

Parasoft C++test 是经广泛证明的最佳实践集成解决方案,它能有效提 高开发团队工作效率和软件质量。C++test 能促进:

  • 静态分析—— 静态代码分析,数据流静态分析以及度量指标分析

  • 同行代码审查流程自动化——准备、提示以及追踪

  • 元测试——单元测试创建、执行、优化以及维护

  • 运行时错误检测——内存访问错误、泄漏、崩溃以及其它

这为开发团队提供了一种实际的方式来预防、发现以及纠正相关的错误,从而确保其C 以及C++代码如预期般工作。为了促进快速修复,每个检测到的问题都基于可配置的严重级别分配进行排序,并自动分发到相应代码的开发者处,同时分配到他或她的IDE 环境中,并配以该问题代码处的直接链接以及如何修正该问题的描述。对于嵌入式以及交叉平台开发而言,C++test 可以同时用在基于宿主机以及基于目标平台的代码分析以及测试流程中。
 
1.1 自动进行代码分析以监测是否遵守标准

采用合适的编码策略可以建立预防性的编码习惯,从而消除整类编码错误的发生。C++test 对这些代码进行静态分析,以检测其是否遵守相应策略。如需配置C++test 以增强某个团队或组织专用的编码标准策略,用户可以使用内建以及自定义规则来建立自己的规则集。代码分析报告可以按不同的形式生成,包括HTML 以及PDF 格式。


数百条的内建规则——包括MISRA、MISRA 2004、全新的MISRA C++标准的实现,HIS 源码度量指标、Meyer 在《Effective C++》以及《Effective STL》等书中推荐的以及来自其它主流源码的准则——有助于从使用不当的C/C++ 语言识别潜在缺陷,实施最佳编码实践,以及提升代码的可维护性和可重用性。通过图形化的RuleWizard 编辑器创建的自定义规则,可以增强标准API的使用并防止单个缺陷被发现后类似的应用程序缺陷重复出现。

1.2在不运行软件的情况下识别运行时缺陷
    
作为 C++test 先进的数据流静态分析模块,BugDetective 能模拟可行的应用程序执行路径,这些路径可能会跨越多个函数和文件,并判断这些路径是否会触发特定类别的运行时缺陷。能够发现的缺陷包括使用未初始化或无效的内存、空指针解引用、数组及缓存溢出、除零、内存和资源泄漏以及各种无效代码(dead code)。这种不运行软件即可发现运行时错误的能力对于嵌入式代码是尤其有价值的,因为在嵌入式开发中要进行详细的运行时分析以检测这些错误往往是无效或不可能的。

 由于在开发者的IDE 环境中提供了对潜在缺陷的完整路径追踪,C++test 极大地简化了缺陷分析过程。自动化到代码的交叉链接能帮助用户迅捷地跳转到某段高亮显示的分析路径中的任意一点上

1.3合理化的代码审查

代码审查被认为是发现代码缺陷最有效的方法。不幸的是,由于认为代码审查会耗费大量额外的精力,很多组织都未充分使用代码审查。C++test 的代码审查 (Code Review)模块能自动地准备、提示以及追踪同行代码审查,从而建立起非常高效的面向团队的审查流程。所有代码审查的状态,包括审查者所添加的所有注释都会被C++test 的基础设施加以维护并进行自动分配。C++test 支持两种典型的代码审查流程:

●提交后代码审查。该模式是通过自定义的源码控制器接口来自动识别代码库中的代码更改而实现的,并基于预设的更改代码与审查者的映射关系创建代码审查任务。

●提交前代码审查。用户可以在桌面上选择某一文件集并分配到审查者进行审查,或者自动地检测所有本地更改源代码的方式来初始化代码审查。

团队代码审查的效果可以通过C++test 的静态分析能力进一步地增强。由于自动监视团队的编码策略,从而消除了对逐行审查代码的必要性。一旦代码被提交进行审查,相应的违例就已经被发现并清除了。这样,审查者就可以更加注重对算法的检查,对设计本身的审查,以及查找那些自动化工具无法检测到的隐蔽的错误。

1.4监测应用程序以发现内存问题

应用程序内存监测是用于消除严重的内存相关缺陷并具有零误报率的最著名方法。对正在运行的应用程序进行监测以查找某类特定问题——诸如内存泄漏、空指针、未初始化内存以及缓存溢出等,测试过程一旦结束后,结果将会立即可见。

无需进行高级并且耗时的测试活动,被插装的应用程序为进行监测添加了额外的代码,将通过标准的功能测试并标注出所存在的所有问题。应用程序可以在目标设备、模拟的目标平台或宿主机上执行。收集到的问题将直接显示在开发者的IDE 中,并提供了解以及修复该问题的详细信息(包括内存块大小、数组索引、分配/释放堆栈的追踪等)。

覆盖率度量指标将在应用程序执行时进行收集。这些指标可以用来说明哪部分应用程序经过了测试,以及调整回归单元测试用例集(作为功能测试的补充)

运行时错误检测允许用户:

●通过简单的功能测试查找复杂的内存相关问题——例如内存泄漏、空指针、未初始化内存以及缓冲溢出等

●通过应用程序运行来收集代码覆盖率

●通过在真实目标环境中执行被监测的应用程序来提升测试结果的精确性


1.5 具有覆盖率分析的单元及集成测试

C++test 的自动化能力极大地提升了测试新开发或既有代码的正确性和可靠性的效率。C++test 自动地生成完整的测试套件,包括测试驱动以及

用于各个独立函数的测试用例,这些测试套件都是以类似CppUnit 格式的纯C 或C++代码的形式提供的。这些测试套件,无论是否进行修改,都可以用于对代码的功能行为进行初始化验证。通过使用边界用例条件,这些自动生成的测试用例同样能检测函数对未预期输入的相应状况,从而发现潜在的可靠性问题。

完全通过一组具体的GUI 实用程序来简化测试的创建和管理。图形化的测试用例向导(Test Case Wizard)能帮助开发者为选中的功能快速创建黑盒功能测试套件,而不必要担心它们之间的内部运作或嵌入数据的关联性。数据源向导(Data Source Wizard)能协助参数化测试用例以及桩函数——使开发者以最少的努力提升测试范围和覆盖率。桩函数视图(Stub View)能促进桩函数的分析以及生成,在该视图中,将显示出代码中所用到的所有函数并允许用户为任何在测试范围内不可用的函数创建桩函数——或为某个特定测试目的更改既有函数功能。测试执行以及分析集中在测试用例浏览器(Test Case Explorer)中,该浏览器统一管理所有既有项目测试套件并提供明确的通过/失败状态。这些功能对于支持自动化的持续性集成和测试“随工程进度而测试”的开发是非常有帮助的。

通过自动记录运行时测试结果的测试断言来捕捉既有的软件行为,自动生成和用户编写的测试用例都可以用来生成回归测试用例的基础。随着代码库的演进,C++test 重新运行这些测试并将当前测试结果与最初捕捉到的“黄金集”进行比较。C++test 可以轻松地配置为使用不同的执行设置、测试用例以及桩函数以支持在不同环境中的测试(例如不同的持续性集成阶段、测试未完成的系统或测试已完成系统中的某个特定部分)

多重度量指标测试覆盖率分析器,包括语句、分支、路径以及MC/DC 覆盖率,能帮助用户评估测试套件的效率以及完成度,同时还能显示测试以及验证需求的遵从性,例如DO-178B。测试覆盖率是通过所支持的所有覆盖率度量指标中高亮显示的代码来表示的——在GUI 中或以不同颜色标注列举出的报告。覆盖率摘要报告包括文件、类以及函数数据可以不同的格式生成。


1.6  通过DTP提供测试可见性

Parasoft开发测试平台(DTP)监控和测量合规遵从性实践,如静态分析、单元测试、覆盖率分析、运行时错误检测等;

Parasoft DTP收集、关联和分析整个SDLC生成的数据,生成智能、可操作的报告,这样您就可以查阅变更代码的影响,并演示完全的合规遵从性、可追溯性。

通过DTP的深入报告和仪表板,您可以对软件的合规遵从性要求获得信心,消除与不安全的软件相关的业务风险,同时加速交付,并持续促进流程改进。DTP提供了违规趋势图,以帮助了解合规活动的进展,并且可以对开发人员的违规分配做出相应的决策。


02丨认证

关于认证

   
Parasoft C/C++test和 Parasoft DTP 参照IEC61508、IEC62304、ISO26262和EN50128标准通过了TUV的功能安全认证,帮助开发团队达到期望的安全完整性级别(SIL/ASIL),该认证简化了工具鉴定过程,并消除了鉴定未经认证的工具所需的额外测试和验证工作。


03丨系统集成


与其他系统集成


基于DTP,利用与ALM/需求管理工具的现成集成,如Polarion ALM、CodeBeamar和Jama Connect plus ,需求管理系统比如Git, Subversion, Mercurial, Microsoft TFS等等。

 集成通过提供对可执行测试用例的自动双向可追溯性来完成需求的验证和确认,其中包括传递成功或失败的结果,并追溯到实现需求的源代码。从Parasoft的Marketplace下载扩展,与流行的开源工具和系统集成。

ALM工具集成实现了一系列的功能:

  • 从违规行为的浏览器视图中手动创建错误/问题和任务。

  • 从测试资源管理器视图中手动创建错误/问题和任务。

  • 发送、查看和更新工作项中的Parasoft测试结果。

  • 从需求到测试、静态分析结果和代码审查的可追溯性。



04丨解决方案

Parasoft整体解决方案



Parasoft兼顾安全合规,提供了端到端的软件质量过程管控解决方案,除了C/C++ test 和DTP,包含Jtest, dotTEST, SOAtest等,如下图示:



更多关于汽车代码测试的讨论,欢迎添加微信交流:


汽车电子与软件 主要介绍汽车电子软件设计相关内容,每天分享一篇技术文章!
评论
  • 故障现象 一辆2007款日产天籁车,搭载VQ23发动机(气缸编号如图1所示,点火顺序为1-2-3-4-5-6),累计行驶里程约为21万km。车主反映,该车起步加速时偶尔抖动,且行驶中加速无力。 图1 VQ23发动机的气缸编号 故障诊断接车后试车,发动机怠速运转平稳,但只要换挡起步,稍微踩下一点加速踏板,就能感觉到车身明显抖动。用故障检测仪检测,发动机控制模块(ECM)无故障代码存储,且无失火数据流。用虹科Pico汽车示波器测量气缸1点火信号(COP点火信号)和曲轴位置传感器信
    虹科Pico汽车示波器 2025-01-23 10:46 267浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 231浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 181浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 350浏览
  • 随着AI大模型训练和推理对计算能力的需求呈指数级增长,AI数据中心的网络带宽需求大幅提升,推动了高速光模块的发展。光模块作为数据中心和高性能计算系统中的关键器件,主要用于提供高速和大容量的数据传输服务。 光模块提升带宽的方法有两种:1)提高每个通道的比特速率,如直接提升波特率,或者保持波特率不变,使用复杂的调制解调方式(如PAM4);2)增加通道数,如提升并行光纤数量,或采用波分复用(CWDM、LWDM)。按照传输模式,光模块可分为并行和波分两种类型,其中并行方案主要应用在中短距传输场景中成本
    hycsystembella 2025-01-25 17:24 290浏览
  • 不让汽车专美于前,近年来哈雷(Harley-Davidson)和本田(Honda)等大型重型机车大厂的旗下车款皆已陆续配备车载娱乐系统与语音助理,在路上也有越来越多的普通机车车主开始使用安全帽麦克风,在骑车时透过蓝牙连线执行语音搜寻地点导航、音乐播放控制或免持拨打接听电话等各种「机车语音助理」功能。客户背景与面临的挑战以本次分享的客户个案为例,该客户是一个跨国车用语音软件供货商,过往是与车厂合作开发前装车机为主,且有着多年的「汽车语音助理」产品经验。由于客户这次是首度跨足「机车语音助理」产品,因
    百佳泰测试实验室 2025-01-24 17:00 159浏览
  • 书接上回:【2022年终总结】阳光总在风雨后,启航2023-面包板社区  https://mbb.eet-china.com/blog/468701-438244.html 总结2019,松山湖有个欧洲小镇-面包板社区  https://mbb.eet-china.com/blog/468701-413397.html        2025年该是总结下2024年的喜怒哀乐,有个好的开始,才能更好的面对2025年即将
    liweicheng 2025-01-24 23:18 260浏览
  • 项目展示①正面、反面②左侧、右侧项目源码:https://mbb.eet-china.com/download/316656.html前言为什么想到要做这个小玩意呢,作为一个死宅,懒得看手机,但又想要抬头就能看见时间和天气信息,于是就做个这么个小东西,放在示波器上面正好(示波器外壳有个小槽,刚好可以卡住)功能主要有,获取国家气象局的天气信息,还有实时的温湿度,主控采用ESP32,所以后续还可以开放更多奇奇怪怪的功能,比如油价信息、股票信息之类的,反正能联网可操作性就大多了原理图、PCB、面板设计
    小恶魔owo 2025-01-25 22:09 385浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 1151浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 412浏览
  • 飞凌嵌入式基于瑞芯微RK3562系列处理器打造的FET3562J-C全国产核心板,是一款专为工业自动化及消费类电子设备设计的产品,凭借其强大的功能和灵活性,自上市以来得到了各行业客户的广泛关注。本文将详细介绍如何启动并测试RK3562J处理器的MCU,通过实际操作步骤,帮助各位工程师朋友更好地了解这款芯片。1、RK3562J处理器概述RK3562J处理器采用了4*Cortex-A53@1.8GHz+Cortex-M0@200MHz架构。其中,4个Cortex-A53核心作为主要核心,负责处理复杂
    飞凌嵌入式 2025-01-24 11:21 238浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 654浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 224浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 915浏览
  • 前篇文章中『服务器散热效能不佳有解吗?』提到气冷式的服务器其散热效能对于系统稳定度是非常重要的关键因素,同时也说明了百佳泰对于散热效能能提供的协助与服务。本篇将为您延伸说明我们如何进行评估,同时也会举例在测试过程中发现的问题及改善后的数据。AI服务器的散热架构三大重点:GPU导风罩:尝试不同的GPU导风罩架构,用以集中服务器进风量,加强对GPU的降温效果。GPU托盘:改动GPU托盘架构,验证出风面积大小对GPU散热的影想程度。CPU导风罩:尝试封闭CPU导风罩间隙,集中风流,验证CPU降温效果。
    百佳泰测试实验室 2025-01-24 16:58 141浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦