“90%以上的汽车创新是基于电子和软件的。这就是为什么创造性的自由和横向思维对于追求真正的新解决方案是如此重要。”
这是德国宝马,设在慕尼黑的一个汽车软件工程师岗位,其招聘信息最开始的一段话。这个岗位的英文名称是:Automotive Software Engineer C++ (f/m/x)。
可见,在世界顶尖汽车制造商宝马的眼里,未来的汽车是由“软件定义”的。
那么,你对汽车软件测试了解多少呢?
对汽车软件行业的展望
预计到2030年,汽车软件市场将迅速增长,预测显示它将从310亿美元(2019年)增加到约800亿美元。这意味着整个市场的年复合增长率超过9%,更具体地说,信息娱乐、连接、安全和连接服务的年复合增长率为9.1%。
这意味着,汽车行业,像其他许多行业一样,正在经历前所未有的创新、技术进步,以及反过来的竞争。当汽车及其零部件制造商竞相保持盈利并处于曲线的顶端时,这场战斗正在后台的代码行中获胜。
汽车测试一目了然
当大多数人想到汽车测试时,脑海中浮现的是碰撞测试、速度测试和其他机械干预的画面。然而,在现实中,大多数汽车测试在汽车零部件组合之前就已经发生了。
一辆汽车有大约30,000个零件,这些零件由几十个原始设备制造商(OEM)提供,他们一起合作创造汽车。每个部件,无论是硬件还是软件,在汽车最终组装前都要经过数十万次的测试,甚至在上路前还要进行更多的测试。
汽车软件测试
今天道路上的汽车,无论是你的标准轿车还是顶级的性能车,都是由软件驱动的。对于2022年制造的车辆,可能会安装多达150个电子控制单元。
电子控制单元(ECU,又称“车载电脑”)是一种控制汽车特定功能的小型计算机。在ECU之前,机械系统使用点火时间、燃料、空气和发动机旋转来完成功能。现在,所有需要发生的事情都被编入ECU内部的芯片。
比如:发动机控制模块(ECM)和制动控制模块(BCM)等一些包括关键功能的ECU;或非关键的ECU,如汽车信息导航系统内的ECU;或在一般电子模块(GEM)中,控制诸如锁定和解锁车门、打开窗户或控制空调的功能。
考虑到每个电子控制单元在功能上都是一台小型计算机,必须进行严格的软件测试以确保其功能、可用性和安全性。
现实情况是,传统的汽车测试是昂贵的,耗时的,而且不容易重复 。目前,常用的解决方案是:硬件在环(Hardware-in-the-loop ,HIL) 和软件在环(Software-in-the-Loop ,SIL) 测试。
软件在环(SIL)测试
软件在环测试在模拟中测试和验证软件的代码,从而减少错误,提高代码质量并大大减少构建时间。
随着汽车品牌和原始设备制造商继续创新以获得竞争优势,真正的战斗是在“代码上获胜”。无论产品的类型如何(安全、仪表盘、导航系统或其他),软件在被批准用于汽车之前必须经过广泛的测试。
SIL的一些好处包括:
-
代码可以定期测试,因为程序的每个部分都已经完成,而不是等待最后的构建;
-
测试可以自动化并同时运行;
-
测试结果是可共享的,并且易于分析;
-
软件与硬件开发分开,所以软件制造商可以继续创新,甚至超过硬件行业的速度;
-
不需要专门的测试台(像我们下面要讨论的HIL测试);
-
SIL测试容易扩展,可重复,比人工测试更快。
硬件在环(HIL)测试
HIL测试,顾名思义,是一种与车辆中的硬件有关的测试和验证的方法。这些模拟器或多或少是最终产品的模型,然后再将真正的ECU连接到测试系统之前进行彻底测试。
HIL测试台通过实时执行数学模型,使用来自摄像机和雷达等设备的数据输入,模拟实际的汽车发动机动态。一般来说,HIL测试比SIL测试更昂贵、更耗时,所以它是在SIL测试之后进行。
汽车软件测试很重要,除了纯粹的道路安全外,还有其他原因--例如:网络安全、OEM信任和可靠性,以及汽车品牌的良好形象。
汽车软件测试的一些国际标准
当然,围绕汽车的硬件和软件组件的测试标准是严格的。
ISO 26262:道路车辆--功能安全
ISO 26262《道路车辆功能安全》国际标准是针对总重不超过3.5吨八座乘用车,以安全相关电子电气系统的特点所制定的功能安全标准,基于IEC 61508《安全相关电气/电子/可编程电子系统功能安全》制定,在2011年11月15日正式发布。
该标准适用于大规模生产的乘用车,并为公共汽车、卡车、拖车和半挂车的E/E系统提供指导。
ISO 21434:道路车辆--网络安全
ISO 21434是基于ISO 26262的后续标准,只是它特别关注汽车软件和子系统的设计和开发中的网络安全问题,目的是就重要的网络安全问题达成全行业协议,并确保整个供应链具有支持设计方法安全的过程。
该标准的主要组成部分包括安全管理、依赖于项目的网络安全管理、持续的网络安全活动、相关的风险评估方法,以及道路车辆概念产品开发和开发后阶段内的网络安全。其全称实际上是 ISO/SAE DIS 21434。
AUTOSAR
AUTOSAR(Automotive Open System Architecture),中文是“汽车开放系统架构”,是一家致力于制定汽车电子软件标准的联盟(参与者有全球各家汽车制造商、零部件供应商以及各种研究、服务机构)。成立于2003年。他们制定了一套专门用于汽车的开放性的框架和行业标准,它将用作管理将来的应用程序和标准软件模块中功能的基本基础结构。虽然不要求OEM和制造商参与或遵守AUTOSAR架构,但许多世界领先的公司都参与其中。
MISRA
MISRA (The Motor Industry Software Reliability Association 汽车工业软件可靠性联会) 是位于英国的一个跨国汽车工业协会。其成员包括了大部分欧美汽车生产商。其核心使命是为汽车工业提供服务和协助,帮助厂方开发安全的、高可靠性的嵌入式软件。
他们的编码指南首次发布于1998年,现在涵盖了基于C和C++编码语言的系统。同样,虽然MISRA是一套非强制性的标准,但它被许多行业广泛采用,因为它促进了安全和安全关键系统的安全、可靠和可移植代码的开发。
汽车软件集成与测试
汽车系统软件测试的特殊性在于其对内部和外部不同组件的接触和适应性。一个软件一般在其开发生命周期中,都要经过严格的测试。
在现代的汽车软件产业链中,一个组件由多个不同的供应商开发,用于不同的汽车生产线,这意味着每个模块的供应商必须与共同的板上和板下组件和功能集成,坚持特定的系统架构和不同的区域生态系统--这就是软件测试工程师开始做第一个噩梦的地方。
例如,一个典型的自动驾驶模块或驾驶辅助模块的测试包括从成千上万的测试里程中收集大量的实时数据。这些数据包括不同的道路类型、复杂的多层次高架桥、交通状况、外部互动,包括行人、自行车、偶然的交通或道路状况等信息。仿真测试工程师计算这些数据并在系统上多次循环播放,还要根据需要在不同测试周期的实时数据中加入自己的修改和复杂因素。这也适用于交互式信息娱乐系统的测试场景,为一辆车试驾记录的导航日志可以在多个测试车辆或模拟设置上自适应地播放多个不同的信息娱乐系统变体,以分析确定的变化。
当然,质量是任何产品的最终目标,任何软件或系统随着时间的推移都是可消耗的,并且随着周围因素的变化,必须不断地更新。同样地,当一个系统软件被更新时,最好的做法是也要升级验证测试。
不同类型的软件测试
-
单元测试是一种有效的汽车软件测试技术,包括软件组件和模块的初始测试。这个阶段有助于在软件生命周期开发过程之前确定系统中可能存在的缺陷。
-
集成测试,测试单个单元或组件如何与不同的软件系统集成工作。这个过程是在一个单独的小组或作为一个整体进行的,以验证集成的功能。
-
系统测试是汽车软件的功能测试方法之一,主要重点是进行一个完整的过程,以发现系统内的不一致、错误、缺陷和故障。
-
完整性测试是在软件建成并修复了错误后,检查代码或功能的微小变化的过程,其目的是确定在预期的变化后软件的拟议功能。
-
烟雾测试,这是处理进一步测试的下一个步骤。烟雾测试过程确定了部署的软件是否稳定。一旦确认,那么只允许进一步的测试过程。
-
回归测试,软件的回归测试有助于确定最近的变化是否没有影响到现有功能的软件。观察早期测试案例的全部或部分选择,以确定软件的当前功能。
汽车软件开发测试职位需具备哪些能力
我们以行业岗位招聘所透露出来的信息,管中窥豹,来看看汽车软件开发测试类岗位需要具备什么样的能力。
1.德国宝马慕尼黑的软件开发测试岗位:
-
大学计算机科学、电子工程或类似的学习课程的学位或类似的资格。
-
需要有广泛的实际软件开发经验,最好是C++语言。
-
需要对数据结构、算法和软件设计有深入的了解,具有非常好的分析思维和错误分析能力。
-
有开发和整合嵌入式设备的软件平台的经验优先。
-
具有硬件调试的嵌入式软件开发领域的经验优先。
-
有汽车环境方面的知识(如CAN,LIN,以太网,OSEK,RTOS)为佳。
-
有微控制器(如ARM控制器)和脚本语言(如Python)方面的知识将优先。
2.美国阿肯色州电动汽车初创公司Canoo Technologies的车辆软件测试工程师岗位:
-
拥有电气或软件工程的学士学位或同等学历。
-
有5年以上经验者优先。
-
有车辆记录仪的经验:Vector, intrepid或类似的。
-
具有软件测试工具的经验:Vector CANoe, CANalyzer, vsignalizer, CANape, Dspace, JIRA, GIT.
-
有日志文件分析和车辆软件问题根源识别的经验。
-
测试自动化经验:Python, Tracetronic ECUTEST(最好)。
-
需求管理系统经验:有Jama, Doors或Polarion(最好)。
3.一家位于德国波鸿的三星集团旗下公司的汽车软件测试岗位:
-
相关大学学位(理学学士、理学硕士、工程硕士、信息硕士)或同等学历。
-
5年以上汽车相关测试的实践经验。
-
有汽车网络系统(CAN、CAN-FD、LIN、Flex Ray、汽车以太网、DOIP)的工作经验。
-
必须有生成报告(Excel)的经验。
-
熟悉CAPL脚本。
-
有使用矢量工具(CANoe,CANalyzer)的经验。
-
具有测试和验证及其流程方面的知识。
-
对软件开发生命周期有很好的了解,最好是对敏捷原则有了解。
-
有UI测试的经验,等等。
4.科大讯飞设于上海的智能汽车软件测试工程师岗位:
-
本科及以上学历,至少2年以上测试经验。熟练掌握测试理论、测试方法;能够快速理解需求、编写测试用例。有域控制器相关方向测试经验者优先。
-
精通车机类项目流程及测试流程,能够与产品、设计、研发、质量等相关人员保持良好流程对接,发现可优化流程并改进
-
熟悉Android平台终端命令,能够完成Android平台测试环境搭建;
-
具备java的读写能力;能够独立完成常见测试工具编写工作。
-
掌握辅助工具的使用,包括测试设备及开发工具等,包括可编程继电器、USBCAN、CANoe(Diva)、示波器、万用表、Eclipse、AudioStudio等;
-
具有一定的问题定位分析能力,协助研发一起定位分析问题,共同推动问题的修复。
最后,对于想入行或转行的同学,不妨参考一下。
最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!