满足功能安全要求的代码测试方案: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等,如下图示:



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


汽车电子与软件 主要介绍汽车电子软件设计相关内容,每天分享一篇技术文章!
评论
  • 磁学为啥神秘?1.磁学应用不直观。2.电感器使用量相对少。3.深度阐述书籍资料比较少。主要内容:第一章介绍磁学的基础概念,电磁感应,磁心损耗,气隙,趋肤效应,临近效应。第二章介绍磁性元件 电感原理与制造工艺,磁珠,变压器原理。第三章介绍应用电路 LC滤波器,谐振电路,射频中电感和变压器的应用,开关电源中变压器的应用。第四章介绍磁能的形态及转换,主要讲磁能存在哪里?转换过程,转换条件。第五章简介电感储能的相关问题,纠正常识性错误。第六章介绍变压器的常识性知识,如功率与初级匝数的关系。本书的阐述角度
    cow74562014 2025-06-10 22:41 264浏览
  • 检测电磁铁性能需要系统性地考察多个关键指标。首先通过吸附测试评估磁力强度,可定量测量最大吸附重量或定性观察衔铁动作的灵敏性。电气参数检测包括测量线圈电阻值是否正常,以及通电后电流是否稳定在额定范围内。动态性能方面需测试响应时间和释放特性,记录通电吸合与断电分离的时效性。环境适应性验证要模拟电压波动和高温条件,观察磁力稳定性变化。安全检测环节必须检查绝缘状态和接线可靠性,运行中注意异常发热、异响等故障征兆。日常维护应保持磁极面清洁,定期复测线圈电阻。专业应用场合建议使用磁通计等仪器精确测量磁场参数
    锦正茂科技 2025-06-12 11:20 3821浏览
  • 七年前买了个远程控制开关,想想那个时候应该物联网才兴起的时候吧。如今因为控制麻烦且经常出现连接掉线问题,于是给淘汰了。这个设备我是拿来控制吊灯,特别麻烦的是,当晚上关灯后,会有一点灯点亮着,掉线的时候还会闪,想想睡梦中醒来往天花板一看,一个东西在那闪多吓人,关键还是绿色的。而且二次匹配需要打开灯罩,按那个黑色的按钮才能重新配网。种种原因,让我今天给他拆了,结构也简单,拆开外壳就只有一个主板正面正面电路看起来还是很简单的:220V经过整流桥(背面U1),通过变压器将市电转化低压直流电一个继电器,这
    二月半 2025-06-12 14:32 191浏览
  • Micro OLED作为下一代微显示技术的核心,广泛应用于AR/VR等HMD、汽车HUD、电子枪瞄、以及工业和医疗等高分辨率近眼显示领域。当前,Micro OLED的市场规模持续扩大,商业化进程不断加速,终端应用厂商急需加快产品验证步伐,抢占市场先机。为助力加速设计和开发,冠显光电推出了TV系列评估套件,帮助客户快速启动相关应用开发,提升验证效率,推动产品从概念到市场的快速落地。冠显0.39" Micro OLED显示解决方案主要包括0.39" 显示屏、FPC及驱动板,是TV系列中最小巧紧凑的一
    冠显光电MicroOLED代理视涯 2025-06-12 09:54 3925浏览
  • 近年来,随着全球能源转型和清洁能源行业的快速发展,户用光伏系统的装机量正呈逐年上升态势。同时,为了应对居民用电价格的显著上涨以及峰谷电价差异的持续扩大,在户用储能单元可大幅降低用电成本的背景下,各国正在大力扶持光伏配储政策,户用光储系统已逐步成为普通家庭应对电价波动与电网停机的经济之选。据高工产研储能研究所(GGII)统计数据显示,2024年全球户用储能装机规模约14GWh,GGII预计2025年全球户用储能市场规模将以25%的增速发展,装机规模将达到17.5GWh,整体增长趋势显著。而这也从侧
    华普微HOPERF 2025-06-12 14:16 309浏览
  • 夸克发布首个高考志愿大模型,为考生提供了智能化、个性化的志愿填报服务,这一创新对考生群体和传统报考机构产生了截然不同的影响。对于考生而言,夸克高考志愿大模型无疑是一大利好。该模型整合了教育官网、省招生办官网等权威信息源,确保数据准确可信,同时将高校毕业生就业信息、产业趋势等纳入知识库,为考生提供更全面的参考。通过深度搜索、志愿工具和志愿报告三大服务,夸克能精准理解考生需求,提供从专业适配性、地域优势到就业前景的全方位分析,并生成专属志愿报告和多种填报策略。这种智能化、个性化的服务大大减轻了考生和
    curton 2025-06-12 17:24 4122浏览
  • 电路图GPIO的中断类型相关API函数应用举例总结电路图在ESP32中内部有完整的控制电路,比如上下拉以及滤波器等,所以我们这里可以直接用一个微动开关连接到地。GPIO的中断类型GPIO_INTR_DISABLE不使能中断GPIO_INTR_POSEDGE上升沿触发GPIO_INTR_NEGEDGE下降沿触发GPIO_INTR_ANYEDGE上升沿和下降沿都触发GPIO_INTR_LOW_LEVEL低电平触发GPIO_INTR_HIGH_LEVEL高电平触发在GPIO中断应用中,一般使用上升沿或
    二月半 2025-06-12 10:11 165浏览
  • 一、前言多线程是 Java 的强大特性之一,它允许程序并发执行多个任务,提高资源利用率和响应能力。无论是 Web 服务、高性能计算、文件下载、图像处理,还是后台任务调度,多线程都是提升效率的利器。本篇文章将深入介绍 Java 多线程编程,包括创建线程、同步控制、线程通信、线程池与实际案例。二、Java 创建线程的三种方式2.1 方式一:继承 Thread 类java复制编辑publicclassMyThreadextendsThread { publicvoidrun() {
    小菜菜编程 2025-06-10 22:35 5530浏览
  • 一、前言文件处理是 Java 应用程序中最常见、最实用的功能之一,无论是读取配置文件、处理日志、批量处理 CSV,还是备份、压缩文件,都离不开对文件的高效操作。本篇文章将系统讲解 Java 文件操作的各个方面,包括文件读取、写入、复制、删除、压缩等,并提供实际代码示例。二、Java 文件与目录的基础操作2.1 使用 File 类检查文件属性java复制编辑import java.io.File; publicclassFileCheck { publicstaticvoidmai
    小菜菜编程 2025-06-10 22:34 5313浏览
  • 在自动驾驶时代奔涌向前的路上,仿真测试早已不再是可选项,而是验证智能驾驶系统安全性、鲁棒性和泛化能力的刚需,如何提升仿真测试的保真度已成为无法避免的重要话题。这正是“数字孪生”出现的时代背景。本文为大家详细介绍如何用传统与前沿结合的数字孪生构建流程,再配合3DGS 的神经网络重建技术,为自动驾驶仿真测试注入真正的“现实之眼”。一、从点云到高精地图的重建依托独家的aiData工具链与aiSim仿真平台,本文建立了一套高精度数字孪生地图构建流程,已经广泛应用于布达佩斯 Kolosy广场、ZalaZo
    康谋 2025-06-11 14:13 225浏览
  • 一、前言在当今互联网应用中,网络编程是 Java 开发者必须掌握的一项关键技能。无论是构建聊天系统、文件传输、物联网交互,还是服务端 API 通信,Java 的网络编程提供了强大的支持。本文将从基础的 Socket 通信开始,逐步深入到多线程服务器开发,并提供图文实例帮助理解。二、Java 网络通信的基础概念Java 网络编程主要依赖于以下核心类:类名用途Socket客户端通信套接字ServerSocket服务器监听套接字InetAddressIP 地址解析与封装DatagramSocketUD
    小菜菜编程 2025-06-10 23:20 5837浏览
  • 一、前言Java 除了广泛用于后端开发与跨平台服务,也支持图形用户界面(GUI)的开发。对于需要构建桌面应用、工具软件、图形交互系统的场景,Java 的 GUI 框架(如 Swing、JavaFX)提供了丰富的组件和事件机制。本文将带你入门 Swing GUI 开发,并通过一个实战项目,构建一个简单但完整的 Java 桌面应用。二、Java GUI 技术体系概览Java 支持多种 GUI 开发方式,最常见有:技术特点AWT最早的 GUI,依赖本地组件,跨平台性差SwingAWT 的增强版,组件完
    小菜菜编程 2025-06-10 23:21 6039浏览
  • 1.03" CVBS 驱动方案 Micro-OLED显示技术因其高分辨率、高亮度、低功耗和小体积的优势,已成为微显示领域的首选方案。针对Micro-OLED在光学瞄准、夜视成像、工业检测、安防监控及户外探索等终端应用,上海冠显光电(TDO)设计开发了1.03"CVBS驱动方案。这一方案能够实现CVBS信号向Micro-OLED显示屏的稳定转换和显示控制,与市面上大多数光学瞄准应用终端无缝对接,满足行业对高质量、高性能显示解决方案的迫切需求。方案组成型号:TV103F1CSFS02&nb
    冠显光电MicroOLED代理视涯 2025-06-11 16:48 4608浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦