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

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

3天内不再提示

VectorCAST在汽车电子C++代码测试的应用

北汇信息POLELINK 2022-09-02 10:16 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


随着汽车行业的发展,软件定义汽车已成为汽车产业达成的共识发展趋势,软件在汽车产品中也承担着越来越重要的角色,车身域各功能的实现,少则几千行代码,动辄百万行代码。随着汽车产业功能多样性以及复杂度的增加,传统的基于C代码开发的模式已不能满足某些特殊功能需求的实现,需要向更高级别的语言进化,实现复杂功能的开发。

1

C++语言的广泛应用

众所周知,C代码是面向过程的语言,具有执行速度快以及效率高的特点,在嵌入式开发领域占据很大的比重,是嵌入式系统、尤其面向底层的主要编程语言。但是随着汽车行业智能化以及网联化的发展,更多的是聚焦在复杂的应用以及算法开发上,对性能的要求就会非常高,比如智能驾驶,智能网联等这类项目,相比C语言,具有面向对象机制的C++更适合用于这类项目的开发。

此外,为适配SOA架构和并行处理大数据等更复杂的需求,AP(Adaptive AUTOSAR)平台正广泛地应用于诸如车载域控制器自动驾驶和车联网等领域;而AP也是基于C++语言开发的,这也正是因为C++所具备的特点更能满足AP平台对高安全性以及高计算能力的要求。

• C++兼容C语言的同时又引入了面向对象的机制。

• 封装,继承以及多态的特性使得C++中的类与对象呈现多样性。

• C++中引入了一些特殊用法,比如const常量、智能指针、cast转换、引用等,使得代码更加安全。

• C++引入了模板概念,实现了将类型参数化的泛型编程,提升了代码复用性;同时,基于模板类或模板函数的STL(标准模板库)使得开发更便捷。

• C++中还提供了很多开源库,比如神经网络、加密、数学开源库等,为复杂的应用开发提供了更多便利。

POLELINK

2

如何高效地

实施C++代码测试

随着汽车软件的复杂度以及代码量级的增加,主机厂和零部件供应商对代码质量的要求也越来越高,并寻求各种方式来提升代码质量,以尽早发现代码问题实现对项目的把控和交付。同时,ISO 26262以及ASPICE也对软件测试提出了明确的要求,即需要实施单元/集成测试。

在对软件进行单元测试和集成测试时,除了要满足相关需求测试的要求,还要考虑代码整个结构的覆盖度,测试过程因而比较繁琐。在面对复杂的C++代码项目时,如何才能高效地完成C++代码的单元测试和集成测试,最大化地实现自动化测试?北汇信息采用的自动化测试工具是Vector旗下的代码动态测试工具----VectorCAST/C++。

VectorCAST/C++

VectorCAST/C++工具是德国Vector公司的一款白盒测试工具,主要用于实现代码的单元测试和集成测试。它最大的特点,同时也是相比于其它同类工具最大的优势就在于,经受过多个大型量产项目实践的对C++高阶特性、Linux系统和CI平台的强力支持。

支持C++11/14/17代码解析

VectorCAST/C++工具内置了权威的商业化前端解析工具EDG对代码进行解析,无论是基于C++11开发的,还是C++14又或者是C++17开发的,工具都可以完美支持C++11/14/17的特性。同时,针对C++复杂数据类型的使用,比如STL、模板、智能指针等,可实现图形化界面操作,无需过多添加测试代码,有效地提高了C++代码的测试效率。


b15134da-296c-11ed-9ade-dac502259ad0.png

1

类的实例化

类在使用之前都需要进行类的实例化----对象创建,通过对象对类的成员属性以及成员方法进行访问,所以在编写测试用例时,需要完成实例化对象的创建。工具可以解析类的所有构造函数,并在测试用例编辑区开辟对象实例化区域,测试人员可根据实际测试需求选择匹配的构造函数来实例化对象。


b1898ca4-296c-11ed-9ade-dac502259ad0.png

2

模板类/模板函数测试

在基于C++开发的代码中,模板的应用也非常广泛,模板的出现,实现了类型的参数化,真正做到代码的重用性。在针对函数模板和类模板进行测试时,VectorCAST/C++支持对模板函数自动插桩,实现图形化界面操作,无需编写测试代码。


b1ba7e0e-296c-11ed-9ade-dac502259ad0.png

此外,在对模板类或者模板函数进行测试之前需要先进行实例化,然后再进行模板的测试。


b1ecf352-296c-11ed-9ade-dac502259ad0.png

3

容器类型数据测试

C++ STL标准模板库中的容器是用来存放各种数据结构对象的集合。关于容器类型的数据,在VectorCAST/C++中,工具支持对C++标准模板库的测试,可以对标准容器(string/vector/list/set/map等)、迭代器等进行解析,可直接在界面中进行赋值操作。

b22ea57c-296c-11ed-9ade-dac502259ad0.png

4

智能指针测试

智能指针的使用解决了C++的内存回收问题。VectorCAST/C++支持解析智能指针,比如shared_ptr,unique_ptr等,可直接通过工具界面为参数赋值。


b25a5492-296c-11ed-9ade-dac502259ad0.png

5

支持对第三方库解析

在涉及到第三方库的代码测试中,VectorCAST/C++工具支持解析众多第三方库,并可针对相关库函数进行自动插桩,实现图像化界面操作。


b29c9a50-296c-11ed-9ade-dac502259ad0.png

集成实际交叉编译链

VectorCAST/C++可以在Windows和Linux平台中稳定运行,且支持众多主流的交叉编译链,比如Green Hills,Hightec,IAR,Tasking,Keil等。之所以支持众多主流编译链,是因为VectorCAST/C++是基于实际编译链进行测试的。


b2cd5744-296c-11ed-9ade-dac502259ad0.png

自动生成测试用例

VectorCAST/C++满足ISO26262和ASPICE中不同安全等级项目对覆盖度指标的要求,包括语句、分支、MC/DC等。同时支持基于不同覆盖度指标要求自动生成测试用例并自动填充输入值,可以有效的提高V2X项目的测试效率。


b2f5889a-296c-11ed-9ade-dac502259ad0.png

综上所述,在汽车电子未来发展中,大量复杂C++代码会得到广泛使用。借助工具对C++代码的完美解析,都可以在工具中找到对应的解决方案,实现图形化界面的操作,同时借助工具自身的测试优势,可以有效地提高测试效率,实现C++代码软件的自动化测试。

3

结束语

本文主要介绍了VectorCAST/C++工具在基于C++开发的汽车电子软件项目中的应用,当前工具也被广泛用于智能网联、智能驾驶的量产项目中。VectorCAST/C++工具不仅适用于C++测试,也适用于C测试,且通过了南德认证,是一款可用于功能安全认证的高效的代码动态自动化测试工具,已广泛用于众多国内知名主机厂和零部件厂商。北汇信息作为Vector在中国的合作伙伴,致力于帮助中国客户提升嵌入式控制系统的开发效率。如果你还在寻找合适的C/C++代码测试工具,不妨来试一试VectorCAST/C++工具,定会让你有心动的感觉。此外,在过去的C++测试项目中,我们也积累了一些测试经验,期待与大家的交流与探讨。


注:部分图片来自于Vector。

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

    关注

    3043

    文章

    8569

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    C/C++条件编译

    条件编译是一种在编译时根据条件选择性地包含或排除部分代码的处理方法。 C/C++ 中,条件编译使用预处理指令 #ifdef、#endif、#else 和 #elif 来实现。常用的条
    发表于 12-05 06:21

    C++程序异常的处理机制

    运行代码进行分离,使得程序更加模块化;另一方面,C++的异常处理可以不需要异常处理异常发生时的同一个函数,而是可以更上层合适的位置进行处理。 下面,我们一起来看看
    发表于 12-02 07:12

    嵌入式C/C++回归测试四大最佳实践(附自动化测试工具TESSY使用教程)

    嵌入式开发中,一次微小的代码改动都可能引发“蝴蝶效应”,如何守护系统的稳健?推荐专业的自动化测试工具#TESSY,源自戴姆勒-奔驰,是嵌入式C/C++单元/集成
    的头像 发表于 10-31 14:21 191次阅读
    嵌入式<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>回归<b class='flag-5'>测试</b>四大最佳实践(附自动化<b class='flag-5'>测试</b>工具TESSY使用教程)

    C/C++代码静态测试工具Perforce QAC 2025.3的新特性

     Perforce Validate 中 QAC 项目的相对/根路径的支持。C++ 分析也得到了增强,增加了用于检测 C++ 并发问题的新检查,并改进了实体名称和实
    的头像 发表于 10-13 18:11 346次阅读
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b><b class='flag-5'>代码</b>静态<b class='flag-5'>测试</b>工具Perforce QAC 2025.3的新特性

    Perforce QAC产品简介:面向C/C++的静态代码分析工具(已通过SO 26262认证)

    Perforce QAC专为C/C++开发者打造,支持多种编码规范、功能安全标准(ISO 26262)等,广泛用于汽车、医疗、嵌入式开发领域,可帮助快速识别关键缺陷、提升代码质量、实现
    的头像 发表于 07-10 15:57 861次阅读
    Perforce QAC产品简介:面向<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>的静态<b class='flag-5'>代码</b>分析工具(已通过SO 26262认证)

    OpenVINO™ C++代码中启用 AddressSanitizer 时的内存泄漏怎么解决?

    OpenVINO™ C++代码中启用 AddressSanitizer 时遇到内存泄漏: \"#0 0xaaaab8558370 in operator new(unsigned
    发表于 06-23 07:16

    高压功率放大器汽车电子测试中的应用研究

    汽车电子系统日益复杂,其性能和可靠性直接影响汽车的安全性、舒适性和燃油经济性等。为确保电子设备汽车
    的头像 发表于 06-16 17:12 421次阅读
    高压功率放大器<b class='flag-5'>在</b><b class='flag-5'>汽车</b><b class='flag-5'>电子</b><b class='flag-5'>测试</b>中的应用研究

    主流的 MCU 开发语言为什么是 C 而不是 C++

    单片机的地界儿里,C语言稳坐中军帐,C++想分杯羹?难喽。咱电子工程师天天跟那针尖大的内存空间较劲,C++那些花里胡哨的玩意儿,在这儿真玩
    的头像 发表于 05-21 10:33 782次阅读
    主流的 MCU 开发语言为什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?

    创建了用于OpenVINO™推理的自定义C++和Python代码,从C++代码中获得的结果与Python代码不同是为什么?

    创建了用于OpenVINO™推理的自定义 C++ 和 Python* 代码两个推理过程中使用相同的图像和模型。 从 C++ 代码
    发表于 03-06 06:22

    代码加密、源代码防泄漏c/c++与git服务器开发环境

    代码加密对于很多研发性单位来说是至关重要的,当然每家企业的业务需求不同所用的开发环境及开发语言也不尽相同,今天主要来讲一下c++及git开发环境的源代码防泄密保护方案。企业源代码泄密
    的头像 发表于 02-12 15:26 884次阅读
    源<b class='flag-5'>代码</b>加密、源<b class='flag-5'>代码</b>防泄漏<b class='flag-5'>c</b>/<b class='flag-5'>c++</b>与git服务器开发环境

    Spire.XLS for C++组件说明

    开发人员可以快速地 C++ 平台上完成对 Excel 的各种编程操作,如根据模板创建新的 Excel 文档,编辑现有 Excel 文档,以及对 Excel 文档进行转换。 Spire.XLS
    的头像 发表于 01-14 09:40 1303次阅读
    Spire.XLS for <b class='flag-5'>C++</b>组件说明

    EE-112:模拟C++中的类实现

    电子发烧友网站提供《EE-112:模拟C++中的类实现.pdf》资料免费下载
    发表于 01-03 15:15 0次下载
    EE-112:模拟<b class='flag-5'>C++</b>中的类实现

    AKI跨语言调用库神助攻C/C++代码迁移至HarmonyOS NEXT

    产品创新与功能迭代,而非技术迁移的细节问题,大幅提升开发效率。 据悉,涉及C/C++/ETS跨越语言调用的鸿蒙化应用中,有超过80%的项目都在使用AKI,如某知名购物应用,使用后减少了项目10%
    发表于 01-02 17:08

    HighTec C/C++编译器套件全面支持芯来RISC-V IP

    德国萨尔布吕肯,2024年12月5日——世界领先的汽车C/C++编译器解决方案提供商HighTec EDV Systeme GmbH宣布全面支持芯来科技的RISC-V IP。HighTec编译器
    的头像 发表于 12-23 09:04 2009次阅读
    HighTec <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>编译器套件全面支持芯来RISC-V IP

    HighTec C/C++编译器支持Andes晶心科技RISC-V IP

    汽车编译器解决方案领先供货商HighTec EDV-Systeme GmbH宣布其针对汽车市场的高度优化C/C++编译器支持Andes晶心科技的RISC-V IP。这项支持对
    的头像 发表于 12-12 16:26 1572次阅读