当前位置: 首页 > news >正文

基于规模化HIL测试集群的CICD方案

前言 

汽车行业的开发模式正经历前所未有的变革,软件功能的复杂度激增、OTA更新频率提升、用户体验需求多样化……传统的“开发-测试-交付”流程正在变得捉襟见肘。面对这些挑战,CICD(持续集成/持续部署)作为敏捷开发的核心支撑,越来越多地被引入汽车研发流程,尤其是在造车新势力中已成标配。

然而,汽车不是一部手机,软件功能是否“真能跑得起来”,必须通过真实硬件环境验证。这就引出了一个关键命题:汽车行业如何将CICD扩展到硬件层面,真正形成从代码到实车验证的闭环?

本文将围绕“基于规模化HIL台架的CICD测试方案”展开,探讨其在汽车研发体系中的价值、落地思路、关键挑战与进阶方向。希望为致力于构建高效测试体系的团队,提供一份可操作的技术参考。

CICD:从互联网迁移到智能汽车

CICD的概念最早在互联网行业中落地,用以解决高频次迭代与质量保障之间的矛盾。持续集成(CI)确保每次代码提交都能被自动构建与验证,持续部署(CD)则确保通过验证的软件可以自动部署到运行环境中。

这种机制已经被特斯拉等头部车企验证。详见我之前写过的一篇文章,写在懂车帝辅助驾驶测试之后——50%汽车人都在拒绝敏捷开发,我们在拒绝什么? 特斯拉在10天之内,对其Model 3进行了OTA,从而缩短了其刹车距离,让“消费者报告”将其从“不推荐”改为“推荐”。这并不是因为特斯拉有更多的人力,而是因为他们拥有更快的反馈闭环:以CICD为核心驱动的快速迭代体系。

为什么HIL是汽车CICD的关键

在传统的软件行业,验证代码是否生效,只需跑完单元测试、集成测试、UI测试即可。但在汽车行业,这还远远不够。

智能座舱、自动驾驶、动力控制……这些系统都和硬件深度耦合。即使代码层面没有bug,也可能因为CAN帧响应慢、传感器读数异常等原因导致实际功能失效。因此,只有在真实或模拟硬件环境中验证,才能判定软件是否可交付。

这便是HIL(Hardware-in-the-Loop)技术的意义——它通过模拟车辆硬件与外部环境,使控制器在“拟真”环境下运行,实现对ECU功能的系统性验证。

然而问题在于:

  • HIL台架资源昂贵,一套动辄数十万

  • 多人并发开发时,提交代码的频率显著提高,测试请求激增,排队现象严重

  • 测试台架部署分散,忙的台架-在特定功能开发期间,24小时连轴转仍无法满足需求。闲的台架-由于当前阶段不涉及相关功能,完全闲置

  • 测试结果与V模型左侧文档缺乏可追溯性,无法真正形成闭环

于是,我们需要一个更先进的解决方案。

中央调度+HIL测试集群+自动追溯的CICD体系

为了破解这些挑战,我们构建了一个三层架构的测试体系:中央调度系统 + HIL测试集群 + 追溯增强的ALM系统。

它的架构图如下:

图片

它具备如下几个关键能力:

1. 中央调度系统:实现资源的最优分配

中央调度系统负责管理所有测试资源,包括:

  • 每个HIL台架的配置、状态、软件版本

  • 当前队列中待测试的任务

  • 各类测试工具(如Polartest、CANoe、ECU-TEST、Python脚本)的分布

当开发者触发CI流程(如提交代码或Merge Request)或手动触发时,系统自动:

  • 分析测试任务所需资源

  • 调用合适的台架

  • 安装待测软件包

  • 启动测试工具运行用例

调度系统还能动态分配任务负载,实现自动负载均衡,确保台架不空转也不拥堵。

2. 测试集群:从单点部署到弹性测试

测试集群由多个HIL台架组成,每个台架包含:

  • 测试PC(搭载测试软件,如Polartest)

  • 测试板

  • I/O接口

通过统一调度,这些台架从“局部服务”变成“共享资源池”,极大提升资源利用率。

3. ALM:构建测试结果与需求的闭环

传统测试报告常常只回答一个问题:通过还是失败?

但在整车V模型的背景下,我们更关心:

  • 这个失败用例对应哪个需求?

  • 哪些架构块受影响?

  • 这次测试计划,是否完整覆盖所有关键需求?

为此,中央调度系统进一步将测试报告送到MappingSpace ALM,实现:

  • 自动解析测试结果

  • 自动关联需求、架构、设计信息

  • 生成可视化测试覆盖度报告

  • 点击测试结果,直接跳转至需求详情

这使得测试报告不再是一个孤立的、静态的PDF或者html文件,而是一个动态的、可交互的、可追溯、闭环的数字资产。

4 实战启示:如何从0到1构建这样的体系?

  1. 从“小而精”的台架做起

    不需要一开始就上百个台架。先选取关键子系统(如泊车、HMI交互),搭建1-2个自动化台架跑通流程,再逐步扩展。

  2. 调度系统优先构建
    优先建设中央调度系统,确保流程打通,再逐步接入不同厂商/工具链的测试节点。

  3. ALM追溯能力要“插针”式接入
    不改变原有文档和工具,采用API实现文档的解析与跳转。

  4. 数据驱动优化
    建立用例执行日志、失败原因统计、资源使用情况分析,从而动态优化测试策略与台架配置。

 作者介绍:

罗宇超,云体科技创始人,前蔚来汽车软件质量工程师,工具链工程师。

图片

http://www.dtcms.com/a/351394.html

相关文章:

  • 以教学标准为纲:健康管理实训室设备清单的价值挖掘与实践路径
  • Barba.js 完全使用指南
  • Mac安装docker,启动elasticsearch
  • 04 网络信息内容安全--入侵检测技术
  • UNIX网络编程笔记:高级套接字编程20-25
  • Excel怎么换行?3种单元格内换行方法?【图文详解】Excel自动换行?Alt+Enter?
  • 实战 Kaggle 比赛:图像分类 (CIFAR-10) TOP1 0.97900
  • 04. 鸿蒙_获取app缓存大小和清除缓存
  • 使用字节旗下的TREA IDE快速开发Web应用程序
  • Vue中的scoped属性
  • 用合成数据赋能大语言模型,实现端到端语音翻译的突破
  • 【序列晋升】17 Spring Cloud Config 分布式系统却含有集中化配置
  • Markdown学习笔记(3)
  • Android 播放MP4格式,大视频 几个小时的视频点击快进键视频进度会倒退一秒
  • 【NER学习笔记】:基于AdaSeq的NER模型训练笔记
  • Leetcode 416. 分割等和子集 (动态规划-01背包问题)
  • 通过接口的形式访问ragflow的agent服务
  • C# 如何用工厂方法模式设计游泳比赛排位系统?
  • 机器学习(二)特征工程
  • 机器学习-支持向量机
  • 【Java SE】深入理解异常处理机制
  • Spring AI 入门指南:三步将AI集成到Spring Boot应用
  • 开发避坑指南(38):DOM4J解析XML文件报错“前言中不允许有内容”的解决方案
  • WPF TabControl页面绑定ItemsSource
  • F006 vue+flask python 垃圾分类可视化系统+爬虫
  • 力扣(逆波兰表达式求值)
  • 英伟达 Spectrum-XGS:重构 AI 基础设施,开启跨域超级工厂时代
  • Day3--HOT100--42. 接雨水,3. 无重复字符的最长子串,438. 找到字符串中所有字母异位词
  • JHipster 生成器快速入门
  • 爬虫 API:从技术架构到实战落地的全维度解析