来源:AUTOSEMO、汽车电子与软件 | 首图图源:网络
全文 6000+ 字,预计阅读 35-40 分钟
图 1-1 CANoe 界面示意图
广泛的总线支持:支持多种车用网络协议,如 CAN 、LIN 、FlexRay、以太 网、MOST 等,以及一些基于 CAN 的通讯协议,如 J1939、CANopen、ARINC825 和 ISOBUS 等,能满足汽车电子系统中复杂的总线通信需求。
强大的仿真能力:可在实验室环境下模拟整车网络通信,帮助工程师在开发初期对 ECU 的功能进行评估,也可用于系统的功能分析、测试以及总线系统和 ECU 的集成,以便尽早发现并解决问题。
高效的测试功能:具有测试功能集,能够简化或自动进行测试,并自动生成 测试报告,方便工程师对测试结果进行分析和评估。
全面的诊断功能:可与 ECU 进行诊断通信,帮助工程师分析诊断通信过程中的问题,对 ECU 的诊断功能进行验证和测试。
1.2 INTEWORK VBA
VBA(INTEWORK VBA)是由经纬恒润推出的一款国产化的总线分析工具,近几年在市场中有不错的表现,具体的功能特点有:
基本监控与分析:能够对 CAN 、CANFD 、LIN、以太网等总线数据进行监控和分析,实时采集总线上的报文,并解析报文中的单个信号,帮助工程师掌握总线通信的详细情况。
节点仿真功能:可以模拟车辆电子控制单元(ECU)的行为,在总线上发送和接收报文,方便进行系统的集成测试和验证。
报文发送与回放:支持用户手动发送特定的报文到总线,用于测试总线系统对特定指令的响应,还可以将之前监控到的总线数据保存下来进行离线回放,以便深入研究历史数据。
脚本编程支持:基于 Python 脚本开发环境,用户可以根据自己的需求编写脚本,实现自动化测试、数据处理和复杂的仿真场景,具有较高的灵活性和可扩展性。
图 1-2 VBA 界面示意图
1.3 Wireshark
Wireshark 是一款免费、开源的网络数据包分析工具,主要应用在汽车网络通信分析的场景。
Wireshark 可以捕获汽车以太网总线上的数据包,对数据包进行详细的分析和解读,帮助工程师了解网络通信的细节,例如分析网络通信中的协议、数据格式、通信频率等。不过,与专业的汽车总线监控工具相比,Wireshark 在汽车领域的应用可能需要更多的配置和专业知识。
1.4 Vehicle Spy
Vehicle Spy 是一款综合功能强大且易于上手的软件工具,在工作中有广泛的应用。
功能特点:可用于执行诊断、节点/ECU 仿真、数据采集、 自动测试、存储器编辑或校准以及车辆网络总线监控等方面。 几乎支持所有汽车网络,包括 CAN 、CANFD、汽车以太网、LIN 、FlexRay 、K-Line 等。它能够满足汽车电子系统开发和测试过程中的多种需求,为工程师提供了全面的解决方案。
2.1 Helix QAC
QAC 工具是一款主要用于 C/C++代码的自动化静态分析工具,可以提供编码规则检查、代码质量度量、软件结构分析、测试结果管理等功能。其功能特点如下:
代码规则检查全面:能够对 C/C++代码规则进行自动检查,报告所违反的编程标准和准则,可发现 1200 多种 C 语言问题、800 多种 C++的问题。能准确发现危险的结构、维护和移植中可能发生的问题,帮助开发人员在开发阶段提高代码质量。
支持多种标准和扩展:支持多种编程标准(如 ISO 、MISRA C/C++ 、CERT C/C++ 、CWE C/C++ 、AUTOSAR C++等)以及多种其他行业编程规则。
便捷的操作和报告:产品界面简洁直观,操作简单,建立工程后加入代码即可进行分析。分析报告形式多样,可输出为 excel 、word 、pdf、图表等。
图 2-1 QAC 静态分析结果
2.2 StatiCode
StatiCode 是一款静态代码分析工具,可以提供多种语言的质量安全分析和代码度量分析,也可以提供编程标准合规分析。其特点有:
图 2-2 StatiCode 静态分析结果
支持C/C++/Java/C#/JavaScript/TypeScript/Golang/PHP/Python 等多种语言。
采用全路径扫描、并行程序分析、数据流、符号执行、抽象解释、作用域分析等检测技术,能够检查内存崩溃、未初始化变量、资源泄露、空指针引用、控制流缺陷、程序假死、除零错误、类型溢出等运行时缺陷。
软件可以从问题严重等级、Top10 统计、趋势、处理状态分布等多种维度展示检测结果,支持多条件组合缺陷查询。展示缺陷上下文细节,帮助技术人员复盘缺陷的产生过程。
3.1 Tessy
Tessy 是一款主要用于动态单元测试的工具,其主要特点如下:
多种测试用例设计方式:除了在简洁的界面中手动输入测试用例之外,还支持从 Excel 中导入测试数据,也可以通过脚本编辑器编写测试用例。
支持多种覆盖度分析:提供 C0、C1、MC/DC 等多种覆盖情况,可以帮助测试人员全面了解测试的覆盖程度。
图 3-1 Tessy 工具执行单元测试效果图
3.2 Google Test
Google Test(简称为 gtest)是 Google 开发的一个用于 C++程序的单元测试框架。它帮助开发者通过编写和运行测试来验证代码的正确性,并提供了丰富的功能来支持各种测试需求。以下是 Google Test 的一些关键特点:
简单的测试编写方式:开发者可以通过定义测试函数来编写单元测试,测试函数一般用TEST 宏来定义。Google Test 让编写测试变得直观且容易理解。
丰富的断言支持: Google Test 提供多种断言类型来验证测试结果,如 EXPECT_EQ、EXPECT_TRUE、ASSERT_EQ 等。EXPECT_*断言允许测试继续执行,即使断言失败;而 ASSERT_*断言则会在失败时立即停止测试。
测试分组:可以通过测试用例组将相关的测试组织在一起,便于管理和执行。 每个测试组可以包含多个单独的测试。
Fixture 支持:通过测试夹具(Test Fixture),可以为一组测试设置通用的初始化和清理代码。使用夹具有助于减少测试中的重复代码,并确保每个测试在相同的初始条件下运行。
跨平台支持:Google Test 可以运行在 Linux 、Windows 、macOS 等多种平台上,具备良好的跨平台兼容性。
3.3 Catch2
Catch2 是一个专门针对于 C++设计的单元测试框架,它能够帮助开发者高效地编写和管理单元测试用例,提高代码的质量和可靠性,其具体特点如下:
自动注册测试用例:能够自动发现和注册测试用例,无需手动管理测试用例的列表或执行顺序,简化了测试代码的编写和维护。
支持多种测试场景:允许以结构化的方式组织测试,可描述不同的测试场景和条件,能够有效的提高复杂的业务逻辑测试覆盖度和效率。
良好的文档和教程:拥有详细的文档和丰富的教程,对于初学者来说易于上手,能够快速掌握框架的使用方法。
#04
4.1 Tessy
Tessy 工具除了能够进行单元测试之外还有着强大的集成测试功能。工具内包含了一系列专门的集成测试套件,这些套件符合 ISO 26262 功能安全 标准,专注于ECU(电子控制单元)的模块交互测试和通信协议(如 CAN、 LIN)的集成验证。Tessy提供的测试套件涵盖了模块之间的交互、接口验证、 数据流测试和系统行为验证等方面。其集成测试的优势在于:
测试用例生成和执行自动化,适合复杂的汽车基础软件;
提供 FC/CPC 覆盖率,满足 ISO 26262 等功能安全标准;
支持主流编译器和调试器,与汽车基础软件工具链无缝集成;
直接在目标硬件上运行测试,确保与真实环境一致;
自动生成符合 ISO 26262 的测试报告,便于审核和验证。
图 4-1 Tessy 工具执行集成测试效果图
4.2 VectorCAST
VectorCAST 是一款专门用于嵌入式软件测试的自动化工具,广泛应用于汽车、航空航天、铁路、医疗等领域,尤其适合对安全性、可靠性要求比较高的系统。
采用高度模块化的设计,以独立模块协同工作的方式实现高效的测试功能。其核心模块包括:
VectorCAST/C++ 和 VectorCAST/Ada:分别支持 C/C++ 和 Ada 语言的单元测试和集成测试,进而提供自动生成测试用例的功能。
VectorCAST/QA:集成测试模块,专注于代码覆盖率分析和回归测试。 此外,通过与 CI/CD 工具链结合,完成测试过程的持续集成和质量保证。
VectorCAST/Manage:项目管理模块,用于管理多个测试环境、报告生成和测试进度跟踪。
Stub 和 Mock 支持模块:提供对外部依赖的模拟功能,实现未完成模块的隔离测试。
图 4-2 VectorCAST 工具图
4.3 Cantata
Cantata 是一款功能强大的 C/C++ 软件测试工具,特别是在嵌入式和高可靠性领域中表现出色。其软件设计具有高度模块化、用户友好性和自动化的特点,其架构和功能的设计完全针对嵌入式系统和复杂集成测试的需求。 具体模块介绍如下:
测试框架模块:这是Cantata核心设计之一,让用户只需关注测试逻辑的设计。测试框架包括测试用例函数、初始化代码和断言代码。
Stub 和 Mock 模块:专为嵌入式开发设计,支持模块间依赖的隔离测试。Stub 和 Mock 功能能够动态生成,方便用户模拟未实现模块或硬件接口。
数据驱动模块:支持导入外部测试数据文件(如 CSV 、Excel),将测试逻辑与测试数据分离,实现数据驱动测试。
此外,Cantata 内置的回归测试机制,能够自动检测代码变更,识别受影响的测试用例并重新运行,从而确保代码更新后的系统稳定性。
图 4-3 Cantata 管理视图
5.1 AbsInt
AbsInt 是一款应用于性能测试的静态分析工具,该工具能够在代码开发、控制器集成阶段评估资源使用率,指导芯片选型和工程优化、保证堆栈空间分配合理性、保证任务周期的稳定性,规避软件中函数执行时间的不合理风险。
在 AbsInt 工具中集成丰富的功能套件,能够支持用户应对不同的使用场景:
AIT WCET Analyzer:最差情况执行时间分析工具,针对特定的处理器和编译器,能够分析出接近实际运行情况的最差执行时间。
StackAnalyzer:最差情况堆栈使用量分析工具,可针对特定的处理器族和编译器, 自动分析出任务的最差堆栈使用量,防止堆栈溢出或资源浪费。
TimingProfiler:代码执行时间分析工具,针对特定的处理器族和编译器,能从初期开始对代码执行时间进行持续分析和评估。
特点优势:作为代码静态分析工具,可直接导入编译后的二进制可执行文件进行自动分析;具有图形化显示功能,可为优化提供依据;能遍历所有程序执行路径,对所有场景有效且无需提供测试用例。
图 5-1 AbsInt 执行方案
5.2 RVS
RVS(Rapita Verification Suite)工具是一款嵌入式系统在板测试工具,其能够进行自动化时间性能分析,并为复杂嵌入式系统提供可视化任务调度和时序追踪,其功能套件主要有:
RapiTime:软件时间性能分析工具,可提供函数级、代码段级的最差情况执行时间、最大执行时间、最小执行时间、平均执行时间、高水位执行时间的测量和统计,帮助用户定位性能瓶颈和软件优化重点。
RapiTask:软件任务调度和事件分析工具,可视化软件任务调度和事件跟踪,帮助用户解决在使用复杂调度行为(如多核、多线程)的嵌入式系统时可能面临的挑战,如定位时序错误、系统容量和负载问题等。
特点优势:产品符合 ISO-26262、DO178B/C、IEC-61508 等行业标准,兼容多种操作系统和编程语言,广泛支持各类编译环境及各类目标芯片。
图 5-2 RVS 系统级分析效果图
5.3 Gliwa T1
GliwaT1 可以满足开发流程中不同阶段对嵌入式时间的需求,对函数执行时间、控制器负荷、多核稳定性等均具备成熟资质,GliwaT1 工具包含如下几类分析内容:
静态代码分析:分析时间工具读取应用程序源代码或二进制代码,计算指定代码段执行的时间下限 BCET 和时间上限 WCET。
代码仿真:模拟某种MCU 下给定二进制代码的运行,并考虑流水线与缓存,再结合嵌入式测试环境,真实模拟最差工况。
调度分析:基于某个 RTOS 的调度器模型,将内核执行时间最小/最大值和应用模型作为输入,输出为 WCRT。
借助 Gliwa T1 工具实时显示时间要素,对用户应用软件执行过程中复杂的任务调度、中断、事件发生的情况以时间轴进行显示。通过显示和分析,用户可以变更系统设计参数,通过对比,进行调试和优化系统时间性能表现。
5.4 DT10
DT10 是一个用于软件研发的动态测试和跟踪调试工具,一般需要搭配 DT10 高速采集设备和软件共同使用。
性能评估和测试:可监测每个函数的执行时间和周期时间,也能够监测系统中任意两行代码之间的执行时间以及周期时间。对于多任务的汽车软件系统, DT10 还可监测CPU 压力。通过对这些性能指标的监测和分析,测试人员可以了解软件的性能瓶颈和优化方向。
覆盖率统计:可以帮助用户获取程序运行时的覆盖率,包括语句覆盖和分支覆盖。通过 DT10 的覆盖率统计功能,在测试人员执行测试用例之后,可以统计相关测试之后的代码覆盖率情况。
错误定位和回溯:具有强大的缺陷回溯定位能力,能够跟踪和检测软件执行过程中的路径、变量和各种中间状态。当软件出现故障或异常时,DT10 可以帮助测试人员快速定位问题的根源,分析问题的发生过程和原因。
图 5-3 DT10 实施流程图
模糊测试(Fuzz Testing, Fuzzing)是一种重要的信息安全测试技术,广泛应用于计算机系统、网络通信系统等复杂系统的安全测试,也是渗透测试的必备方法之一,下面介绍几种模糊测试的工具:
6.1 Cybellum
Cybellum 是一款信息安全测试与管理的工具,能够帮助 OEM 及其供应商在车辆的整个生命周期内大规模评估和降低安全风险。它无需访问源代码,通过 Cyber Digital Twins 技术检测开源软件与第三方应用程序的安全风险,并提供可实施的修复建议。Cybellum 检测漏洞的来源广泛,支持 CVE 、CWE 、CNNVD 等漏洞库;可以从组件、产品、系统三个层面进行风险与漏洞管理;能够进行开源漏洞、零日漏洞评估。
图 6-1 Cybellum 软件看板效果图
6.2 AFL
AFL(American Fuzzy Lop)是一款基于覆盖引导的模糊测试工具,它通过记录程序执行的路径信息,对输入样本进行变异操作,如位翻转、字节替换等多种方式,不断生成新的测试用例来探索程序可能存在的漏洞。AFL 速度相对较快,能有效发现软件中的多种漏洞,如缓冲区溢出等;近年 AFL 的 Windows 版本也同样问世,使用者可以使用它对 Windows 下载的软件进行测试并尝试发现漏洞。
6.3 Honggfuzz
Honggfuzz 是一种基于进化的模糊测试工具,它可以从初始的输入种子集合 开始,通过多种变异策略(如随机修改字节、插入块等)来生成新的测试用例, 然后根据程序的反馈来引导新测试用例的生成。工具可以支持多进程的模糊测试, 利用多核处理器的优势来提高测试效率,并且该工具支持多种平台,包括 Linux、MacOS 、Windows 等。
6.4 SFuzz
SFuzz 是一款基于模型的通用模糊测试工具。其采用框架式结构设计,支持丰富的模糊测试模型,包括文件格式、网络协议、工业控制协议、硬件设备及物联网设备等,基于这些模型 SFuzz 可以快速的对各种软硬件系统的组件进行自动化安全测试,识别其潜在漏洞。SFuzz 具有效率高、可并发、可扩展、可回溯等优点,能够自动产生大量边界用例、畸形用例、随机用例等,通过这些测试用例发现被测对象是否存在潜在安全漏洞。
图 6-2 SFuzz 软件看板效果图
6.5 SCA
SCA(Software Composition Analysis)是软安科技用于软件供应链安全和合规检测的工具,能够在软件整个生命周期内、针对软件源码项目和二进制文件检测,为 OEM 提供可视化、透明化软件物料 SBOM ,评估软件安全、合规风险,协助处置最紧要的威胁、持续监测安全情报,使 OEM 实时保障产品安全。
图 6-3 软安 SCA 检测全景图
测试管理工具可用于测试的各个阶段,包括用例管理、测试执行、缺陷管理、版本管理等。通过在测试中应用这些工具,可以提升测试效率并确保测试的规范性。
7.1 禅道
禅道是一款功能全面的国产项目管理工具,具备项目管理、需求管理、测试 用例管理、缺陷管理、自动化测试和效能管理等多项功能,能够满足各个阶段和不同测试类型的需求。同时, 作为一款开源工具,用户可以根据自身的需求进行二次开发,满足不同场景的个性化需求。
图 7-1 禅道工具的看板界面
7.2 JIRA
JIRA 是一款基于Java 架构的管理系统,具备项目管理、问题跟踪与管理、 敏捷流程管理、团队协作、报告与分析等功能。该系统具有高度的可定制和可扩展性,能够根据不同项目的需求进行定制化配置和工作流开发。此外,JIRA 还支持对不同的用户和角色进行精细的权限管理,以确保项目数据的安全和保密性。
图 7-2 Jira 任务列表示意图
7.3 INTEWORK TAE&TPA
TAE(INTEWORK TAE)和 TPA(INTEWORK TPA)是经纬恒润自主研发工具链中用于项目管理与测试管理的一套工具链。
TPA 工具主要应用于项目管理、流程监控与管理、用例管理、执行管理、 缺陷管理等方面。TPA 具备良好的数据共享与协同性,方便团队成员之间的数据共享和协同工作,同时,它具有灵活的权限管理功能,可以根据不同的角色权限设置不同的查看和操作权限。
图 7-3 TPA 测试用例集管理界面示意图
TAE 工具主要是应用于自动化测试用例搭建、测试执行与监控、测试报告定制生成等方面。TAE 具备故障注入、标定、测量、诊断、模型在回路测试(MIL) 等一系列与 ECU 测试相关的功能,能够满足汽车电子领域对 ECU 测试的多种需求。并支持用户将可重用的测试步骤封装成用户库,提高测试序列开发的效率。
图 7-4 TAE 车手互联测试场景
进交流群