第四篇:集成测试(流程与实战)
本篇共 16 个小节,覆盖 集成测试基础概念、汽车开发周期中的集成测试、集成测试五大核心流程、组织架构与协作、专项测试技术、实战与缺陷排查。
4.1 集成测试基础概念
4.1.1 什么是集成测试
定义:集成测试(Integration Testing)是在单元测试完成后,将多个已验证的模块/组件按照设计要求组合在一起,验证模块间接口正确性、数据交互完整性以及协同工作能力的测试阶段。
车载测试中的定位:
单元测试 → 集成测试 → 系统测试 → 验收测试
(白盒) (灰盒) (黑盒) (黑盒)
模块内 模块间 整车级 客户视角集成测试是承上启下的关键环节——单元测试只保证单个模块"自己能跑",集成测试保证多个模块"凑在一起能正确协作"。在车载领域,一个功能往往涉及多个 ECU(Electronic Control Unit,电子控制单元)协同,例如"一键启动"涉及 BCM(车身控制模块)、PEPS(无钥匙进入启动)、仪表、发动机 ECU 等多个模块,集成测试就是验证这些模块间的信号交互是否正确。
4.1.2 集成测试 vs 其他测试阶段
| 对比维度 | 单元测试 | 集成测试 | 系统测试 | 验收测试 |
|---|---|---|---|---|
| 测试对象 | 单个函数/模块 | 模块组合/子系统 | 整车完整系统 | 交付产品 |
| 测试依据 | 详细设计/代码 | 接口规范/架构设计 | PRD/SRS 需求 | 客户验收标准 |
| 测试方法 | 白盒为主 | 灰盒(接口+功能) | 黑盒为主 | 黑盒(场景化) |
| 介入时机 | 编码阶段 | 模块开发完成后 | 集成稳定版交付后 | 系统测试通过后 |
| 关注重点 | 代码逻辑覆盖率 | 接口正确性、数据流转 | 功能完整性、性能稳定性 | 用户体验、交付标准 |
| 执行人 | 开发工程师 | 集成测试工程师 | 系统测试工程师 | 客户/QA 代表 |
关键区别:集成测试不关心模块内部实现(那是单元测试的事),也不关心整车用户体验(那是系统/验收测试的事),它聚焦的是"模块之间的接口和交互"。
4.1.3 车载集成测试的特殊性
与纯软件(如 Web/App)集成测试相比,车载集成测试有以下本质差异:
1. 多域协同,跨域交互复杂
- 座舱域(Infotainment)、智驾域(ADAS)、车身域(Body)、动力域(Powertrain)、底盘域(Chassis)
- 一个用户操作可能触发跨 3-5 个域的信号流转,例如"驾驶员开门上车"涉及车身域(门状态)、座舱域(座椅记忆/欢迎界面)、动力域(上电准备)
2. 多总线混合通信
- CAN(Controller Area Network,控制器局域网):车身控制、动力传动
- LIN(Local Interconnect Network,局域互联网络):车窗、座椅、后视镜等低速设备
- Automotive Ethernet:智驾大数据传输、诊断(DoIP)、OTA
- 集成测试需验证跨总线信号网关转发的正确性和实时性
3. 软硬件深度耦合
- HMI(Human-Machine Interface,人机界面)上层应用 ↔ 中间件(Android Auto/AUTOSAR)↔ 底层驱动 ↔ 硬件外设
- 一个"蓝牙连接失败"可能是 App 问题、协议栈问题、驱动问题或天线硬件问题,集成测试需逐层定位
4. 实时性与安全性要求极高
- 动力/底盘相关信号延迟要求毫秒级,超时可能导致功能安全事故
- 需遵循 ISO 26262 功能安全标准,ASIL(Automotive Safety Integrity Level,汽车安全完整性等级)等级越高,测试越严格
4.2 汽车开发周期中的集成测试
4.2.1 汽车开发全流程回顾
汽车产品开发遵循严格的阶段门(Stage-Gate)流程,主流车企(大众、通用、比亚迪等)普遍采用以下 10 个阶段:
| 阶段缩写 | 阶段名称 | 核心活动 | 集成测试关联 |
|---|---|---|---|
| pc | 项目立项(Project Concept) | 市场调研、发现商机、可行性分析 | 无(概念阶段) |
| PC | 项目启动(Project Start) | 组建团队、制定项目计划、预算审批 | 测试策略制定 |
| CA | 方案批准(Concept Approval) | 技术方案评审、架构设计确认 | 测试架构设计 |
| PA | 项目批准(Project Approval) | 详细设计冻结、BOM 确认 | 测试计划/用例编写 |
| ER | 设计发布(Engineering Release) | 设计冻结、发布会、模具启动 | 测试环境搭建 |
| PPV | 工艺验证(Process & Product Verification) | 工艺验证和工艺签发、首轮样件 | 集成测试启动(冒烟) |
| PP | 预试生产(Pre-Production) | 小批量试生产、工艺优化 | 集成测试全面展开 |
| P | 试生产(Production) | 量产线试跑、人员培训 | 集成回归测试 |
| SOP | 量产(Start Of Production) | 正式量产、交付 | 集成验收锁定 |
| OTA | 长期升级(Over-The-Air) | 售后 OTA 迭代、功能持续优化 | 持续集成回归 |
4.2.2 集成测试介入节点与重点
PPV 阶段(工艺验证)—— 集成测试启动
- 准入条件:首个可运行的集成版本(Alpha 版)、基础测试环境就绪
- 测试重点:核心功能冒烟测试,验证模块间基本通信是否打通
- 典型活动:CAN 总线信号连通性测试、上电启动流程验证、基础 HMI 功能冒烟
- 退出标准:核心功能无阻塞性问题,可进入全量集成测试
PP 阶段(预试生产)—— 集成测试全面展开
- 测试重点:全量集成用例执行、跨域功能验证、异常场景测试
- 典型活动:每日版本冒烟 + 轮次全量测试、缺陷跟踪闭环、性能基线测试
- 退出标准:严重及以上缺陷清零,一般缺陷率低于阈值,核心功能稳定
P 阶段(试生产)—— 集成回归测试
- 测试重点:针对 PP 阶段缺陷修复的回归验证、量产配置适配测试
- 典型活动:每轮版本回归测试、量产硬件差异验证、老化/稳定性测试
- 退出标准:回归用例 100% 通过,无新增严重缺陷
SOP 前后 —— 集成验收锁定
- 测试重点:最终量产版本集成验收、已知问题清单确认、交付文档归档
- 典型活动:Golden Sample(黄金样车)测试、交付评审、测试报告签署
- 退出标准:验收通过,版本锁定为量产基准版本
4.2.3 版本管理与迭代节奏
版本类型定义:
| 版本类型 | 英文 | 说明 | 质量要求 |
|---|---|---|---|
| 开发版 | Daily Build / Dev | 开发每日自动构建,仅供开发自测 | 不保证可运行 |
| 提测版 | Test Build / RC Candidate | 开发自测通过后提交测试的版本 | 冒烟用例需通过 |
| 稳定版 | Release Candidate (RC) | 集成测试验证通过,可交付系统测试 | 无阻塞/严重缺陷 |
| 正式版 | Release / Golden | 最终量产交付版本 | 全量验收通过 |
车企典型迭代节奏:
- 开发团队:每日构建(Daily Build),开发自测
- 集成测试:每周 1-2 个提测版本,执行冒烟 + 全量
- 稳定版交付:集成团队每周选出一个稳定版(RC)交付系统测试
- 系统测试:每周一版本节奏,基于集成稳定版执行系统级测试
问题场景:某新势力车企座舱项目,开发每天发 3-4 个版本到测试群,测试工程师不知道该测哪个版本,经常测了半天才发现是过时版本,或者两个测试用不同版本测出矛盾结果。
根因分析:缺乏版本管理规范,开发随意发包,测试无版本准入机制。
处理办法:
1. 建立版本平台:使用 GitLab CI/Jenkins 自动构建,版本号统一规则(如
V2.3.1_RC3_20260821),禁止私下传包2. 设定提测窗口:每天固定 10:00、16:00 两个提测时间点,非紧急版本不在窗口外提测
3. 提测准入检查:开发提测必须填写《提测单》,包含变更内容、自测结果、影响范围,测试主管审核通过才进入测试
4. 版本公告机制:每个提测版本在群内公告版本号、变更内容、测试重点,测试工程师必须基于公告版本测试
5. 版本回退机制:如新版本冒烟不通过,立即回退到上一个稳定版本,避免阻塞测试进度
效果:实施后版本混乱问题消除,测试有效率从 60% 提升至 95%,因版本问题导致的重复工作减少 80%。
4.3 集成测试五大核心流程
4.3.1 需求分析与用例设计
核心输入文档:
| 文档缩写 | 全称 | 内容定义 | 测试用途 |
|---|---|---|---|
| PRD | Product Requirements Document(产品需求文档) | 定义功能内容、用户场景、交互逻辑 | 理解"做什么",设计功能测试用例 |
| SRS | Software Requirements Specification(软件需求规格) | 定义参数值、性能指标、接口协议、状态机 | 理解"做到什么程度",设计边界/性能用例 |
| 接口规范 | Interface Control Document(ICD) | 定义模块间信号、报文、DBC 信号定义 | 设计接口集成测试用例 |
用例设计四大方法:
- 等价类划分:将输入域划分为有效等价类和无效等价类,每个等价类选取代表性数据
- 车载示例:蓝牙配对密码(4-8 位数字)→ 有效类(4位、6位、8位)、无效类(3位、9位、含字母)
- 边界值分析:针对等价类边界取值,包括最小值、略大于最小值、正常值、略小于最大值、最大值
- 车载示例:温度显示范围(-40°C ~ 85°C)→ 边界值 -40、-39、0、84、85
- 场景法:基于用户使用场景,通过基本流和备选流组合设计用例
- 车载示例:"导航目的地设置"场景 → 基本流(语音输入→识别→规划→开始导航)、备选流(识别失败→手动输入、网络异常→离线地图)
- 错误推测法:基于经验推测可能出错的情况,针对性设计用例
- 车载示例:蓝牙连接时突然来电、OTA 升级中断电、USB 插拔频繁切换
用例编写规范:每条用例包含用例编号、所属模块、前置条件、测试步骤、预期结果、优先级(P0/P1/P2)、用例类型(功能/接口/异常/性能)。
4.3.2 版本获取与刷写
版本获取流程:
- 从版本管理平台(如 GitLab CI 制品库、内部 FTP、OTA 后台)获取当日待验证版本
- 核对版本号、构建时间、变更说明,确认是目标版本
- 校验文件 MD5/SHA256,确保文件完整未损坏
车载常见刷写方式:
| 刷写方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| UDS 诊断刷写 | 开发/测试阶段 ECU 刷写 | 稳定可靠,支持单 ECU 刷写 | 需要诊断仪(CANoe/VCX),速度较慢 |
| CAN 总线刷写 | 多 ECU 批量刷写 | 可通过网关批量刷写多个 ECU | 需专业工具,配置复杂 |
| OTA 远程升级 | 售后/用户端升级 | 无需物理连接,可远程推送 | 依赖网络,升级时间长,有失败风险 |
| USB 本地升级 | 4S 店/售后升级 | 速度快,不依赖网络 | 需物理接触,需 U 盘介质 |
| ADB 调试刷写 | Android 座舱系统调试 | 快速推送单个 APK,调试方便 | 仅适用于 Android 系统,需打开调试模式 |
刷写注意事项:
- 车辆电量充足(建议接稳压电源或电瓶充电器),防止刷写中途断电
- 刷写前确认版本与硬件配置匹配(不同车型/配置可能有不同版本)
- 刷写过程中不要操作车辆、不要断电、不要拔插诊断设备
- 刷写完成后需验证版本号、执行功能自检,确认刷写成功
- 保留上一个稳定版本,必要时可回退
问题场景:某传统车企座舱项目,测试工程师在刷写仪表 ECU 时,中途诊断仪 USB 线松动导致刷写中断,仪表黑屏无法启动,车辆无法上电。
根因分析:刷写过程中 Bootloader 已擦除原固件但新固件未写入完成,导致 ECU 无有效程序。
处理办法:
1. 立即停止操作:不要反复尝试上电或刷写,避免进一步损坏
2. 进入 Recovery 模式:查阅该 ECU 文档,通过特定引脚短接或诊断指令强制进入 Bootloader 恢复模式(多数 ECU 支持 UDS 0x10 服务进入编程会话)
3. 使用原厂工具重刷:使用 Vector CANoe 或原厂诊断仪,通过 CAN 线直接连接 ECU(绕过网关),执行强制刷写
4. 如硬件支持:部分 ECU 有 JTAG/SWD 调试接口,可通过调试器直接写入 Flash
5. 最坏情况:如 Bootloader 也损坏,需更换 ECU 硬件(成本较高,仪表 ECU 约 2000-5000 元)
预防措施:
+ 刷写前必须接车辆稳压电源(设定 13.8V),禁止用电瓶直接刷写
+ 使用高质量诊断线,USB 口用螺丝固定或用胶带加固
+ 刷写前关闭电脑休眠/屏保,关闭其他占用 CAN 通道的软件
+ 重要 ECU 刷写前先备份原始固件(如支持读取)
经验教训:车载 ECU 刷写是高风险操作,测试团队应制定《刷写操作规范》并严格执行,新人需在老员工陪同下完成首次刷写。
4.3.3 测试执行
座舱测试 vs 智驾测试差异:
| 对比维度 | 座舱测试 | 智驾测试 |
|---|---|---|
| 测试依据 | 有完整测试用例(多数企业) | 很多企业无成熟用例,基于需求验证 |
| 测试方式 | 按用例逐条执行,覆盖功能点 | 开发给到新需求,验证功能实现 |
| 关注重点 | HMI 交互、多媒体、连接、舒适性 | 感知、决策、控制、安全性 |
| 环境要求 | 台架/实车均可 | 需封闭场地/实车道路测试 |
| 用例来源 | 需求 → 用例(结构化) | 需求 → 功能验证(探索式) |
三层执行策略:
┌─────────────────────────────────────┐
│ 第一层:冒烟测试(Smoke Test) │
│ 目的:快速验证版本是否可测 │
│ 范围:核心功能 20-30 条用例 │
│ 时长:30 分钟 ~ 1 小时 │
│ 通过标准:P0 用例 100% 通过 │
│ 不通过 → 打回开发,版本作废 │
├─────────────────────────────────────┤
│ 第二层:全量测试(Full Test) │
│ 目的:覆盖全部集成测试用例 │
│ 范围:该模块/域全部用例 │
│ 时长:1-3 天(视用例规模) │
│ 通过标准:按轮次缺陷收敛曲线评估 │
├─────────────────────────────────────┤
│ 第三层:回归测试(Regression Test) │
│ 目的:验证缺陷修复,确保无引入新问题 │
│ 范围:缺陷关联用例 + 受影响功能用例 │
│ 时长:每轮版本 0.5-1 天 │
│ 通过标准:回归用例 100% 通过 │
└─────────────────────────────────────┘测试执行注意事项:
- 执行前确认测试环境(硬件版本、软件版本、配置参数)与用例要求一致
- 严格按照用例步骤执行,不要随意跳过或修改步骤
- 实际结果与预期不符时,先复现确认,再提缺陷
- 执行过程中做好记录(用例执行状态、缺陷编号、备注)
- 每日同步测试进度,遇到阻塞问题及时反馈
问题场景:某合资车企车机项目,测试工程师在测试车上报了一个"蓝牙音乐播放卡顿"的严重缺陷,开发在自己的开发车上反复测试无法复现,双方僵持一周,最后发现是测试车的蓝牙天线被前一个测试项目拆走未装回,导致信号弱。
根因分析:测试车辆管理混乱,多项目共用测试车,硬件配置被随意改动且无记录。
处理办法:
1. 建立测试车辆档案:每台测试车建立《硬件配置清单》,包含 ECU 型号、软件版本、天线/传感器配置、特殊改装记录,贴在车内
2. 测试前环境检查:测试执行前对照清单检查硬件配置,确认天线、传感器、线束齐全
3. 车辆借用登记:测试车借用需登记,归还时检查配置是否还原,损坏/缺失需赔偿
4. 缺陷复现三要素:提缺陷时必须记录测试车辆编号、软件版本号、硬件配置,开发复现时使用相同配置
5. 环境差异排查清单:遇到无法复现的缺陷,按清单逐项排查:软件版本→硬件配置→总线信号→外部设备→操作时序
效果:实施后因环境差异导致的"假缺陷"减少 70%,开发测试沟通效率大幅提升。
4.3.4 缺陷管理与提票流程
标准提票四步流程:
发现 BUG
↓
① 回归验证(确认可复现,记录复现概率)
↓
② 拉日志(应用日志 + 系统日志 + 总线日志,时间对齐)
↓
③ 拍摄视频/截图(记录复现操作过程和异常现象)
↓
④ 提交缺陷票(含完整信息,指派给对应开发)缺陷分级标准:
| 等级 | 英文 | 定义 | 车载示例 | 处理时效 |
|---|---|---|---|---|
| 致命 | Blocker / P0 | 系统无法运行、数据丢失、安全隐患 | 车辆无法启动、行驶中动力中断、刹车失灵 | 24 小时内修复 |
| 严重 | Critical / P1 | 主要功能严重异常、影响测试进度 | 中控黑屏、蓝牙完全无法连接、导航频繁崩溃 | 3 天内修复 |
| 一般 | Major / P2 | 次要功能异常、有替代方案 | 歌词显示不同步、主题切换偶发卡顿、USB 歌曲识别慢 | 本轮次内修复 |
| 轻微 | Minor / P3 | UI 显示问题、不影响功能 | 错别字、图标偏移、颜色色差、对齐问题 | 下个版本修复 |
缺陷生命周期:
新建(New) → 指派(Assigned) → 修复中(Fixed) → 待验证(Resolved)
↑ ↓ ↓
│ 驳回(Rejected) 验证通过 → 关闭(Closed)
│ (非问题/重复) 验证不通过 → 重新打开(Reopened)
└──────────────────────────────────────────────────────┘一个高质量缺陷单应包含:
- 缺陷标题:简洁描述问题(如"[蓝牙] 连接 iPhone 15 后播放音乐无声音")
- 所属模块/域:如座舱-蓝牙
- 缺陷等级:P0/P1/P2/P3
- 前置条件:测试环境、版本号、硬件配置
- 复现步骤:1/2/3... 清晰可执行
- 预期结果:按需求应该是什么
- 实际结果:实际发生了什么
- 复现概率:必现/偶发(X 次出现 Y 次)
- 附件:日志文件、视频、截图
- 指派给:对应开发人员
常用缺陷管理工具:Jira(外企/新势力主流)、禅道(国内车企常用)、Redmine、TestRail。
问题场景:某车企智驾项目,测试反馈"ACC(自适应巡航)在高速上偶发自动退出",但在测试场地和封闭道路上跑了 500 多公里都无法复现,开发认为是测试操作问题,缺陷挂起一个月。
根因分析:偶发缺陷通常与特定时序、环境条件、边界状态相关,简单重复操作难以触发。
处理办法:
1. 详细记录触发条件:要求测试在首次发现时尽可能记录:车速、路况、天气、周边车辆、ACC 设置参数、发生时间点
2. 抓取全量日志:在测试车辆上部署持续日志录制(CAN 总线数据 + 摄像头视频 + 应用日志),循环覆盖录制,一旦发生问题立即保存最近 30 分钟数据
3. 数据分析定位:使用 Python 脚本分析 CAN 总线日志,查找 ACC 退出前的异常信号(如雷达目标丢失、摄像头故障码、转向角突变)
4. 构造触发场景:根据数据分析结果,在 HIL 台架或封闭场地构造相似场景(如前方车辆突然切出、弯道曲率突变),提高复现概率
5. 错误注入测试:通过 CANoe 模拟发送异常信号(如雷达目标抖动、摄像头帧率下降),验证系统是否会触发相同退出行为
6. 代码审查辅助:如仍无法复现,请开发审查 ACC 退出逻辑的代码,查找可能的竞态条件(Race Condition)或边界判断漏洞
最终结果:通过数据分析发现 ACC 退出前总有"雷达目标置信度突降",在 HIL 上模拟该场景成功复现,确认为雷达目标跟踪算法在特定弯道场景下的边界处理缺陷。
经验:偶发缺陷不是"不能复现",而是"还没找到触发条件"。数据驱动的分析比盲目路试高效 10 倍。
4.3.5 测试日报与沟通机制
测试日报标准模板:
==================== 集成测试日报 ====================
日期:2026-08-21
测试版本:V2.3.1_RC3
测试人员:张三、李四
======================================================
一、今日测试进度
- 冒烟测试:25/25 通过 ✅
- 全量测试:蓝牙模块 80/120,导航模块 60/90
- 回归测试:上轮缺陷 15 个,验证通过 12 个,3 个未修复
二、缺陷统计
- 今日新增:8 个(P0:0, P1:2, P2:4, P3:2)
- 累计未关闭:23 个(P0:0, P1:5, P2:12, P3:6)
- 今日关闭:5 个
三、风险与阻塞
- ⚠️ 蓝牙 P1 缺陷"连接 iPhone 15 无声"已 3 天未修复,影响蓝牙模块测试
- ⚠️ 导航模块今日提测版本冒烟不通过,已打回,影响导航测试进度
四、明日计划
- 继续蓝牙模块剩余 40 条用例
- 导航模块等待新版本提测
- 验证今日修复的 5 个缺陷
======================================================沟通渠道:
- 邮件:正式日报发送给项目组全体(项目经理、开发、测试、产品),留痕可追溯
- 微信群/飞书群:图片版日报快速同步,@相关责任人提醒紧急问题
- 每日站会:15 分钟站会,同步进度、风险、需要协调的事项
- 缺陷评审会:每周 1-2 次,评审争议缺陷、确认缺陷优先级、跟踪严重缺陷进度
扩展报告类型:
- 测试周报:本周测试总结、缺陷趋势分析、风险评估、下周计划
- 测试月报:月度质量分析、缺陷收敛曲线、版本质量评估、测试效率指标
- 版本测试报告:每个版本测试完成后的总结报告,包含测试范围、用例执行率、缺陷统计、质量评估、是否可发布的结论
- 测试总结报告:项目结束后的整体测试总结,经验教训沉淀
问题场景:某车企项目,测试主管在周报中说"本周缺陷收敛良好,严重缺陷从 8 个降到 3 个",项目经理在会上质疑:"我看 Jira 上严重缺陷还有 10 个,你这数据怎么来的?" 场面尴尬。
根因分析:测试统计口径与 Jira 实际数据不一致,可能是缺陷等级被开发调低、部分缺陷未计入、统计时间点不同。
处理办法:
1. 统一数据来源:所有日报/周报数据必须从缺陷管理工具(Jira/禅道)自动导出,禁止人工统计填写
2. 固定统计口径:明确统计规则(如"严重缺陷"= 状态为 Open/Reopened 且 Priority=Critical 的缺陷,不含已 Resolved 待验证的),全员共识
3. 数据可追溯:日报中附上 Jira 筛选链接,任何人可点击查看原始数据
4. 缺陷等级锁定:缺陷等级由测试设定,开发如认为等级不合理需走"缺陷评审会"流程调整,禁止私自修改
5. 定时快照:每天固定时间点(如下午 6 点)导出数据快照,作为日报数据基准,避免数据实时变化导致口径不一致
效果:数据争议消除,日报可信度提升,项目经理不再质疑数据,团队沟通更顺畅。
4.4 组织架构与协作
4.4.1 项目团队角色与职责
| 角色 | 职责 | 与集成测试的交互 |
|---|---|---|
| 项目经理 | 负责整个项目进度、资源协调、风险管理 | 接收测试报告、协调资源、决策发布 |
| 产品经理 | 给出需求,维护 PRD,定义用户场景 | 需求答疑、需求变更确认、验收标准制定 |
| 软件经理 | 负责系统开发整体规划、技术架构、开发团队管理 | 提测计划协调、技术方案评审、严重缺陷决策 |
| 软件开发工程师 | 对应功能模块开发,修复缺陷 | 接收缺陷、修复代码、提供变更说明、配合复现 |
| 集成开发工程师 | 集成整包,解决代码合并冲突,管理分支 | 提供集成版本、解决集成构建问题、版本分支管理 |
| 集成主管 | 负责集成测试团队的管理安排、任务分配、进度跟踪 | 团队管理、测试计划制定、跨团队协调 |
| 集成测试工程师 | 执行集成测试,提交缺陷,验证修复,选出稳定版 | 核心执行者,每日测试、缺陷跟踪、版本质量评估 |
| 系统测试主管 | 负责系统测试部门管理、系统测试计划 | 接收集成稳定版、系统测试反馈、验收标准对齐 |
| 系统测试工程师 | 基于集成稳定版执行整车级系统测试 | 反馈系统级问题、跨域功能验证 |
| 验收测试工程师 | 最终交付前客户视角验收 | 验收测试、交付确认 |
4.4.2 集成测试与开发的协作机制
需求评审阶段:
- 测试提前介入需求评审,从可测试性角度提出意见
- 关注需求是否明确、是否有量化指标、是否有异常场景定义
- 如需求模糊,当场提出并要求产品澄清,避免后期理解偏差
用例评审:
- 测试编写完用例后,组织开发参与用例评审
- 开发确认用例是否覆盖了所有功能点、是否有理解偏差
- 测试确认用例的可执行性、前置条件是否合理
提测标准(DoD - Definition of Done):
开发提测必须满足:
- 代码已合入集成分支,构建通过
- 开发自测通过,提供自测报告
- 提供《变更说明》:本次变更内容、影响范围、测试建议
- 冒烟用例(开发自测的核心用例)100% 通过
- 数据库/配置变更已提供升级脚本
缺陷沟通规范:
- 测试提缺陷必须包含:复现步骤、日志、视频三要素
- 开发收到缺陷后 24 小时内响应(确认/驳回/询问)
- 如开发认为"不是问题",需在缺陷评论中说明理由并引用需求依据,由产品/测试主管评审
- 严重缺陷每日同步进度,直至关闭
问题场景:测试发现"车辆在行驶中(车速 > 5km/h)可以播放视频",认为这是安全隐患,提了严重缺陷。开发回复"需求就是这样设计的,停车拉手刹后才限制,行驶中可以播放给副驾看",双方争执不下。
根因分析:需求中未明确行驶中视频播放的限制条件,测试和开发理解不一致。
处理办法:
1. 不要当场争论:先在缺陷单中记录双方观点,不要在群里争吵
2. 查找需求依据:测试和开发各自查找 PRD/SRS 中相关条款,看是否有明确规定
3. 提交产品裁决:如需求无明确规定,将缺陷标记为"需求待确认",@产品经理,由产品给出明确结论
4. 参考行业标准:如产品也不确定,参考行业通行做法(如行驶中视频限制是国标 GB/T 要求,多数车企限速 > 5km/h 时禁止视频播放)
5. 走变更流程:如确认为需求遗漏,由产品发起需求变更,补充到 PRD 中,开发修复,测试验证
6. 记录到经验库:将此类需求歧义点记录到《需求歧义库》,避免后续项目重复踩坑
关键原则:测试和开发都不是需求的最终决策者,产品才是。遇到理解不一致,找产品裁决,不要互相指责。
结果:产品确认行驶中视频播放不符合安全规范,补充需求,开发修复,缺陷关闭。
4.4.3 集成测试与系统测试的衔接
稳定版交付标准:
集成测试交付系统测试的版本必须满足:
- 阻塞性(P0)缺陷清零
- 严重(P1)缺陷率低于 5%(或按项目约定阈值)
- 核心功能冒烟用例 100% 通过
- 集成测试用例执行率 ≥ 95%
- 性能指标达到基线要求(如启动时间、响应延迟)
交付物清单:
- 《版本测试报告》:测试范围、用例执行情况、缺陷统计、质量评估
- 《已知问题清单》:未修复缺陷列表、影响范围、规避方案
- 《用例执行记录》:用例通过率、未执行用例及原因
- 《变更说明》:本版本相对于上一版本的变更内容
交接会议:
- 集成测试主管向系统测试团队介绍版本情况
- 说明版本亮点、已知风险、测试建议重点
- 系统测试团队提问,确认测试范围和优先级
- 会议纪要存档,作为交付确认依据
4.5 专项测试技术
4.5.1 总线通信测试
CAN 总线测试要点:
- 报文周期:验证报文发送周期是否符合规范(如 10ms、100ms、1s),周期抖动是否在允许范围内
- 信号值:验证信号物理值是否正确(如车速、转速、温度),初始值、范围、精度是否符合 DBC 定义
- DBC 文件:DBC(Database CAN)是 CAN 信号定义文件,测试需基于 DBC 解析报文,确认信号定义与实际一致
- 总线负载:验证总线负载率是否在合理范围(一般 < 30%,高峰 < 60%),过高会导致报文延迟或丢失
- 错误帧:监控总线是否有错误帧(Error Frame),频繁错误帧说明总线物理层或节点有问题
LIN 总线测试要点:
- 主从节点通信:验证主节点(Master)调度表(Schedule Table)是否正确轮询从节点(Slave)
- 唤醒机制:验证从节点可通过总线唤醒信号唤醒主节点(如车门 LIN 从节点唤醒 BCM)
- 调度表切换:验证不同场景下调度表切换是否正确(如正常模式/诊断模式/休眠模式)
Automotive Ethernet 测试要点:
- SOME/IP:Scalable service-Oriented MiddlewarE over IP,验证服务发现(Service Discovery)、服务订阅、远程调用是否正常
- DoIP:Diagnostic over Internet Protocol,验证基于以太网的诊断通信是否正常(UDS over DoIP)
- TSN:Time-Sensitive Networking,时间敏感网络,验证时间同步、流量调度是否符合要求
常用工具:
- CANoe(Vector):总线仿真、分析、测试一体化工具,车载测试行业标准
- Wireshark:以太网报文抓包分析
- PCAN / ValueCAN:USB 转 CAN 适配器
- Python + python-can / can-isotp:自动化总线测试脚本
4.5.2 诊断协议测试(UDS)
UDS 基础:
UDS(Unified Diagnostic Services,统一诊断服务)是基于 ISO 14229 标准的诊断协议,是车载 ECU 诊断的通用标准。UDS 基于请求-响应模式,测试端(Client)发送请求,ECU(Server)响应。
核心服务速查表:
| 服务 ID | 服务名称 | 功能说明 | 测试关注点 |
|---|---|---|---|
| 0x10 | Diagnostic Session Control(诊断会话控制) | 切换诊断会话(默认/编程/扩展) | 会话切换是否成功、会话超时时间、不同会话权限 |
| 0x11 | ECU Reset(ECU 复位) | 复位 ECU(硬复位/软复位/钥匙复位) | 复位后 ECU 是否正常启动、复位时间 |
| 0x22 | Read Data By Identifier(按标识符读数据) | 读取 DID 对应的数据(如 VIN、软件版本、故障码) | 数据值是否正确、读取是否超时 |
| 0x2E | Write Data By Identifier(按标识符写数据) | 写入 DID 对应的数据 | 写入是否成功、写入后读取验证、权限控制 |
| 0x27 | Security Access(安全访问) | 安全验证(种子-密钥算法) | 密钥算法是否正确、错误次数锁定、超时解锁 |
| 0x31 | Routine Control(例程控制) | 启动/停止/查询例程(如擦除内存、校验) | 例程执行是否成功、执行结果、超时处理 |
| 0x34 | Request Download(请求下载) | 请求向 ECU 下载数据(刷写起始) | 数据长度、地址是否合法 |
| 0x36 | Transfer Data(数据传输) | 传输数据块(刷写数据) | 数据块序号、数据完整性 |
| 0x37 | Request Transfer Exit(请求传输退出) | 结束数据传输 | 传输完成校验、退出是否成功 |
UDS 测试用例设计思路:
- 正向测试:每个服务在正确会话、正确安全等级下,发送合法请求,验证响应正确
- 异常测试:
- 会话不匹配:在默认会话下发送需要扩展会话的服务(如 0x2E 写数据),验证拒绝响应(NRC 0x7F 服务不支持/0x7E 会话不支持)
- 安全等级不足:未通过 0x27 安全访问就发送需要安全的服务,验证拒绝响应(NRC 0x33 安全访问被拒绝)
- 参数非法:发送非法的 DID、数据长度、子功能,验证拒绝响应(NRC 0x31 请求超出范围)
- 时序异常:0x27 安全访问种子超时后再发送密钥,验证拒绝响应
常用工具:CANoe(UDS 面板)、Vector DiVa(自动化 UDS 测试)、PCAN-UDS、Python(python-uds / can-isotp)。
问题场景:某 Tier1 供应商交付的 BCM 模块,测试团队使用标准 UDS 刷写工具无法进入编程会话,0x27 安全访问始终返回"密钥无效"(NRC 0x35),但供应商在自己的工具上可以刷写。
根因分析:供应商使用了自定义的密钥算法,未按项目约定的标准算法实现,或算法参数(如加密密钥、数据拼接顺序)与约定不一致。
处理办法:
1. 获取算法文档:要求供应商提供《安全访问算法规范》,包含种子生成规则、密钥计算算法(如 AES-128/CMAC)、密钥值、数据拼接顺序
2. 抓包对比:使用 CANoe 同时抓取供应商工具和测试工具的 0x27 请求报文,对比种子(Seed)和密钥(Key)值
3. 手动验证算法:用 Python 脚本按文档实现算法,输入供应商工具返回的种子,计算密钥,与供应商工具发送的密钥对比
4. 定位差异:如计算结果不一致,逐项排查:种子字节序(大端/小端)、填充方式、加密模式(ECB/CBC)、IV 值、密钥值
5. 如算法正确但仍失败:检查是否有"安全访问延迟"(失败后需等待 N 秒才能重试)、"错误次数锁定"(连续失败 N 次后锁定,需 ECU 复位解锁)
6. 要求供应商修复:如确认是供应商算法错误,提交缺陷,要求按项目规范修复,并提供修复后的算法自测报告
预防措施:
+ 项目早期就应制定《UDS 诊断规范》,明确所有服务的实现细节,包括安全访问算法
+ 供应商交付前必须通过"UDS 一致性测试"(如使用 Vector DiVa 自动化测试)
+ 测试团队应储备 UDS 协议专家,能独立分析诊断报文,不依赖供应商工具
经验:UDS 问题 80% 出在安全访问和会话控制,抓包分析是最直接有效的排查手段。
4.5.3 OTA 测试
OTA 升级流程:
版本检测 → 下载 → 校验 → 安装 → 重启 → 版本验证
↓ ↓ ↓ ↓ ↓ ↓
云端推送 差分包/ MD5/ 写入 A/B分区 读取版本
主动查询 全量包 SHA256 Flash 切换 号确认升级方式:
- 全量升级:下载完整固件包,覆盖写入。优点是简单可靠,缺点是包体大、下载时间长
- 差分升级(A/B 分区):设备有 A/B 两个系统分区,当前运行在 A 分区,升级包写入 B 分区,写入完成后重启切换到 B 分区。优点是升级失败可回退到 A 分区,不影响使用;缺点是需要双倍 Flash 空间
OTA 测试场景矩阵:
| 测试场景 | 测试内容 | 预期结果 |
|---|---|---|
| 正常升级 | 标准流程升级 | 升级成功,版本号正确,功能正常 |
| 下载中断 | 下载过程中断网/断电 | 恢复后可断点续传或重新下载,不损坏系统 |
| 安装中断 | 安装过程中断电 | A/B 分区可回退到原版本,系统可正常启动 |
| 空间不足 | Flash 剩余空间不足 | 提示空间不足,不执行升级,原系统不受影响 |
| 版本回退 | 升级到高版本后再刷低版本 | 按策略允许或禁止回退,禁止时需明确提示 |
| 弱网升级 | 网络信号弱、带宽低 | 可正常完成升级(可能耗时较长),不损坏 |
| 升级中使用 | 升级过程中用户操作车辆功能 | 不影响升级,或按策略暂停升级 |
| 多次升级 | 连续多次 OTA 升级 | 每次均成功,无累积问题 |
OTA 测试工具:OTA 后台管理平台(推送版本、查看升级状态)、CANoe(监控升级过程总线信号)、电源模拟器(模拟断电/低压)、网络损伤仪(模拟弱网/断网)。
4.5.4 HMI 集成测试
多屏交互测试:
- 仪表、中控、副驾屏、HUD(Head-Up Display,抬头显示)之间的状态同步
- 例如:中控设置导航目的地 → 仪表显示导航箭头 → HUD 显示转向提示
- 测试关注点:状态同步实时性(延迟 < 500ms)、多屏显示一致性、异常状态处理(某屏故障时其他屏不崩溃)
语音交互集成测试:
- 语音指令 → 语音识别(ASR)→ 语义理解(NLU)→ 执行指令 → HMI 反馈
- 测试关注点:识别准确率、响应速度、多轮对话、跨域指令(如"导航到最近的充电站并打开空调"涉及导航+空调两个域)
- 常见问题:识别错误、语义理解偏差、执行后无反馈、语音与 HMI 不同步
手机互联测试:
- CarPlay(苹果)、HiCar(华为)、CarLife(百度)、Android Auto(谷歌)
- 测试关注点:连接稳定性(有线/无线)、数据同步(通讯录、音乐、导航)、通话质量、多手机切换、连接异常恢复
4.5.5 电源与休眠唤醒测试
静态电流测试:
- 车辆休眠后,各模块电流消耗总和(即暗电流)需在标准范围内(一般 < 50mA,高端车型 < 30mA)
- 测试方法:车辆锁车休眠后,用电流探头或万用表串联电瓶,测量休眠 30 分钟后的稳定电流
- 超标的危害:车辆停放 1-2 周后电瓶亏电,无法启动
休眠唤醒流程:
KL15 下电(熄火)
↓
各模块收到下电信号,执行休眠准备(保存数据、关闭外设)
↓
模块进入休眠模式(低功耗,仅保留唤醒检测)
↓
唤醒源触发(车门打开、遥控钥匙、远程 App、定时唤醒)
↓
对应模块唤醒 → 通过总线唤醒其他模块 → 系统上电就绪异常场景测试:
- 低压启动:模拟电瓶电压低(如 9V),验证模块是否能正常启动或进入欠压保护
- 掉电恢复:运行中突然断电,恢复供电后模块是否能正常启动、数据是否丢失
- 休眠中总线唤醒:休眠状态下发送总线唤醒信号,验证模块是否正确唤醒
- 唤醒风暴:多个唤醒源短时间内频繁触发,验证模块是否能正确处理不崩溃
4.5.5.2 冷启动 vs 热启动
核心判断标准:锁车后是否超过“10 分钟阈值”(不同车型略有差异:银河 A7 为 10 分钟,赛力斯 SF5 海外版为 5 分钟,吉利油车为 3 分钟):
- 热启动(相当于“待机唤醒”):锁车后 10 分钟内回到车上启动。此时车辆没完全下电,还处于“待机状态”,屏幕直接点亮,几乎不用等
- 冷启动(相当于“重新开机”):锁车后超过 10 分钟再启动。此时车辆已自动完全下电,中控、仪表都要重新启动,还会出现启动动画
冷启动 vs 热启动对比:
| 对比维度 | 冷启动(Cold Boot) | 热启动(Warm / Fast Boot) |
|---|---|---|
| 定义 | 系统完全断电,所有硬件(SoC、MCU 等)重新上电、初始化 | 系统并未完全断电,而是处于深度休眠,保留部分内存数据 |
| 触发场景 | 长时间停车(如过夜)后首次启动,或电瓶断电后 | 短时间停车(如加油、等人)后再次启动 |
| 启动速度 | 慢,通常需要几十秒,因为要加载操作系统和所有应用 | 快,可实现“秒开”或 2~3 秒内唤醒 |
| 电量消耗 | 正常 | 休眠时会持续消耗微量电量(如 24 小时约 0.2 安时),通常可忽略不计 |
| 技术原理 | 从 Flash 存储中加载完整的系统镜像到内存 | 系统从挂起到内存(Suspend to RAM)的状态恢复 |
| 用户体验 | 需等待开机动画、系统加载,功能响应可能延迟 | 几乎无等待,上车即可使用大部分功能 |
座舱如何判断是冷启动还是热启动:
- 看开机画面:最直接的方法。启动时看到完整品牌 Logo 动画 → 基本是冷启动;屏幕瞬间点亮直接进入主界面或桌面 → 热启动
- 感受启动速度:冷启动需等待(10 秒以上);热启动非常迅速(2~3 秒内)
- 留意功能响应:冷启动后,倒车影像、语音助手等功能的初次响应可能有延迟;热启动后这些功能通常即刻可用
- 观察停车时长:经验法则。熄火超过一定时间(通常 24 小时,具体因车而异),下次启动大概率是冷启动
- 参考车辆状态:部分高端车型会根据电瓶电量自动决定启动方式。电瓶电量不足时,系统可能自动关闭“休眠”模式,强制冷启动以保证下次能正常点火
快启中所谓的“断电”:
- 断掉(冷启动):核心计算单元的供电,包括 SoC(系统级芯片)的 CPU 核心、GPU(图形处理器)以及最重要的 DDR 内存(运行内存)。内存一旦断电,临时数据全部丢失,下次开机必须重新从闪存(eMMC/UFS)加载完整操作系统,这就是冷启动慢的根本原因
- 不断(热启动/快启):常电待机单元的供电。车辆熄火后,车机保留 PMIC 自身、唤醒控制器(CAN 收发器)和 DDR 内存的自刷新电压。此时内存数据被保留,屏幕和 CPU 核心处于“休眠断电”状态。一旦开门或按启动键,CPU 核心瞬间恢复供电,直接从保留的内存数据中恢复系统 —— 这就是“秒开”的原理
座舱冷 / 热启动判断经验(思维导图:电源管理):
- 有快启功能的车型:24 小时内启动车辆无开机动画,实际上车辆已经是冷启动状态
- 快启下如何判断是冷启动:看语音、360、多媒体等模块首次打开是否有延迟,有延迟即为冷启动
- 热启动判断:上电无开机动画、应用打开响应较快
4.5.5.3 电源模式迁移(油车 / 电车 / 混动)
(1)油车电源模式迁移图:
| 序号 | 模式 | 描述 |
|---|---|---|
| 1 | Battery Off | 蓄电池断开,整个产品处于掉电状态,只能保存一些用户的基础设置 |
| 2 | Battery ON | 蓄电池与 MMI 控制器连接,产品处于连接蓄电池的状态 |
| 3 | Normal Mode | 非远程模式,ACC 处于 ON 状态时工作模式,在此模式下可以操作 Power 键执行进入 Screen Saver、Power Off、Power ON 模式 |
(2)电源工作模式说明:
| 序号 | 模式 | 说明 |
|---|---|---|
| 4 | OFF Work Mode | 整车电源 Battery On,ACC 处于 OFF 状态工作 15 分钟 |
| 5 | Power Save Mode / Standby Mode | SOC 未启动,MCU 启动,CAN 网络被其他模块 WakeUp,在 CAN 网络没有需求时自动 Sleep |
| 6 | Sleep Mode | SOC 未启动,MCU 未启动,CAN 网络 Sleep |
| 7 | Power On | Battery On 且满足工作电压 9~16V,Power On 时多媒体主机点亮进行工作 |
| 8 | Screen Saver | Battery On 且满足工作电压 9~16V,Power On 时短按 Power 按键,多媒体主机显示屏保画面,所有动作正常,仅显示时钟画面 |
| 9 | Power Off | Normal Mode 模式下,MMI 所有功能关闭,显示屏关闭 |
| 10 | Silent Mode | 多媒体主机黑屏不可动作,仅保持与 T-BOX 的 USB 通讯,保持 3 分钟 |
(3)电源状态机切换(中控 MMI):

(4)电车电源模式迁移图(EV without SSB,【考点】usage mode):
车辆模式分为 Abandoned → Inactive → Convenience → Active → Driving 五个状态:

五种模式说明(模式定义卡片):
| 模式 | 界定 | 描述 / 典型功能 |
|---|---|---|
| Abandoned | 休眠,Inactive 一段时间后进入,关闭(待机等待输入/激活、周期性检查、输入数据等)功能 | 典型功能:电喇叭、Theft Notification / alarm、远程控制、telematics(用以能够监测用户的请求) |
| Inactive | 休息,功能有限。climate / info / connectivity 处于 inactive,但需顾客激活才可能有效/后运行(有时上限) | 该模式不需要合法钥匙即可进入。典型功能:后运行、radio、座椅调节、门灯、后背门开闭等 |
| Convenience | 舒适性功能能用 | 发动机未启动,需要合法钥匙下可使用的舒适性功能。典型功能:电动车窗、雨刮、备用电源 |
| Active | 非正常用户使用模式(拖车、售后),进入需满足一系列条件 | 发动机未启动情况下可使用功能最大化,保证安全。消耗电流很大,需要合法钥匙 |
| Driving | 动力系统激活,准备输出扭矩 | 全功能有效 |
模式切换补充说明:
- Inactive → Abandoned:下电后中控仪表熄屏,但座椅和车窗部分功能可以用,此时车辆总线通讯没有断;进入 Abandoned 后总线通讯全部断开,座椅车窗无法调节
- Convenience:解锁车辆后打开主驾车门,中控仪表点亮的状态。该模式娱乐功能可以使用,座椅车窗等可以调节,动力底盘无法使用
- Active:从 Convenience 进入该模式后,娱乐功能和底盘功能使用最大化,除了动力其它功能全开
- 目的:将用户的使用意图,转化成整车可识别的模式语言,指导功能何时可用
(5)新能源混动车辆电源状态:
休眠 Sleep → OFF 下电 → ACC 附件上电 → ON(IG-ON) 低压全上电 → READY 高压就绪(可行驶)1. Sleep 整车休眠(人在车内坐着看现象:完全下电后中控锁灯和双闪背光灯熄灭):
- 整车深度低功耗,绝大多数 ECU 休眠,只有唤醒模块工作
- 12V 休眠电流满足规格,CAN/LIN 总线静默
- 仪表黑屏,车机关闭
- 唤醒源:开门、遥控钥匙、启动按键、CAN 信号、充电枪插入等
- 电源模式:OFF/休眠。KL30 有电 ✅(为防盗系统、无钥匙进入模块等随时待命的关键部件供电),KL15 断电 ❌
2. OFF 下电状态(车辆下电锁车后,中控锁灯和双闪背光灯亮着):
- 遥控/手机解锁:OFF → ACC
- 按下解锁键后,由 KL30 供电的接收模块收到信号,唤醒车辆部分网络进入 ACC 模式。中控屏点亮、音响等附件可以使用,但核心驱动系统并未上电
- KL30 有电 ✅,KL15 断电 ❌
3. ACC 附件上电(中控仪表熄屏状态下,人在车内短按一次启动键,或拉开车门再关闭车门,此时中控仪表会点亮):
- 触发:不踩刹车,按 1 次启动键
- 仅部分低压附件供电:车机、音响、USB
- 高压电池不上电,不能行驶;BMS、MCU 无高压输出,空调压缩机不工作
- ⚠️ 风险:长时间 ACC 会耗亏 12V 蓄电池
- 打开主驾驶车门:ACC →(可能)ON。大部分车型开门只是物理操作,不改变电源模式;部分具备“智能上电”功能的车型(如比亚迪)会识别用车意图直接进入 ON(高压)模式,KL15 继电器吸合,整车上低压电,甚至高压继电器吸合接通高压电池
4. ON(IG-ON)低压全上电:
- 触发:不踩刹车,按第 2 次启动键(前提是中控仪表完全黑屏下电的状态)
- 整车所有 ECU 低压唤醒、自检,仪表全点亮
- CAN 总线全部激活,诊断仪可连接所有控制器
- ⚠️ 高压仍然断开,车辆不能行驶
- 场景:车间诊断、刷写程序(不需要启动车辆)
- 踩下刹车踏板:ACC → ON / READY
5. READY 就绪状态(可行驶):
- 预充完成,高压回路完全闭合,BMS 输出高压,MCU 待命
- 仪表显示 READY 标识,踩电门车辆可以行驶
- 空调压缩机、PTC、电机全部可以工作
- 挂入 D/R 挡:READY。KL30 有电 ✅,KL15 上电 ✅
油车 vs 电车电源模式对照:
| 模式 | 油车 | 电车 |
|---|---|---|
| OFF | 锁车后的状态;或启动发动机后短按点火开关熄火的状态;或解锁后拉开车门的状态(油车 KL30 供电) | 锁车后的状态 |
| ACC | 不踩刹车短按点火开关后的状态;或发动机启动后短按点火开关熄火后 3 分钟或 5 分钟内的状态 | 解锁开门后的状态 |
| ON | 不踩刹车,在 ACC 基础上再短按启动键的状态 | 踩刹车挂挡后的状态 |
| start | 踩刹车短按启动键那一瞬间进入的模式,进入后立马又回到 ON 电 | — |
4.5.5.4 车辆模式介绍:CMM(Car Mode)
CMM 将车辆生命周期划分为不同阶段,目的是:统一模式语言(建立整车功能有效性的统一要求);保持电池状态良好(尤其 Factory 和 Transport);特殊工况的特殊需求模式统一(Dyno)。
| 模式 | 界定 | 描述 |
|---|---|---|
| Factory | 总装,以离开工厂为结束 | 生产制造要求避免刮伤和弄脏,保护电池防止损耗。例:禁止产生新的 DTC、infotainment 或 climate 禁用 |
| Transport | 运输和存储,交付顾客前 | 避免刮伤和弄脏,保护电池。例:radio、climate 禁用 |
| normal | 客户使用的正常模式 | 在顾客手中一直为 normal(除 crash),功能有效性主要根据 UM |
| Crash | 监测到碰撞 | 采取安全措施,禁止或启动相应功能改善车辆安全,跛行状态 |
| Dyno | 测试特定驾驶工况或诊断使用工况 | 测试工况,保证试验的安全,关闭部分自动功能,模式复用 |
4.5.5.5 台架环境要求与电气基本要求
常态工作环境(5.1):
- 温度:18℃ ~ 28℃
- 相对湿度:25% ~ 75%
- 气压:86 kPa ~ 106 kPa
温度范围(5.2):
- 工作温度:-30℃ ~ 75℃
- 存储温度:-40℃ ~ 85℃
- 低温存储:-40℃ 存储 120h
- 高温存储:85℃ 存储 120h
电气基本要求(5.3)【考点】:
- 标称电压:12V;工作电压范围:9V ~ 16V(在此电压下中控仪表正常点亮,超过或低于会进入高低压保护状态 —— 熄屏)
- 过(高/低)电压保护:
- 电压高于 18.5V,MMI 进入 Power Save Mode 状态;电压恢复到 18V 以下后,MMI 重新进入 Power On 状态
- 电压低于 8V,MMI 进入 Power Save Mode 状态;电压恢复到 8.5V 以上后,MMI 重新进入 Power On 状态
- 休眠电流要求:整车 < 50mA(极力整车在 30mA 左右)【使用电流卡钳量电流 —— 小电瓶正极线】,ECU 静态功耗 < 10mA,防止亏电
- 💡 备注:赛力斯某一项目静态电流要求小于等于 0.005A
4.6 实战与缺陷排查
4.6.1 测试用例设计实战
场景法实战:整车启动场景
基本流:
1. 驾驶员携带钥匙靠近车辆
2. 无钥匙进入(PEPS)检测到合法钥匙,解锁车门
3. 驾驶员开门上车,关闭车门
4. 按启动按钮,PEPS 验证钥匙在车内
5. 系统上电(ACC → ON → START)
6. 发动机启动,仪表显示就绪
7. 中控屏启动,显示欢迎界面,加载用户配置
备选流:
- 钥匙电量低:提示"钥匙电量不足",但仍可启动(使用应急启动区域)
- 钥匙不在车内:按启动按钮提示"未检测到钥匙",无法启动
- 车门未关:启动时提示"车门未关闭",但可启动(或按策略禁止启动)
- 电瓶低压:启动时提示"电量不足",启动后发电机充电
- 启动按钮故障:长按启动按钮强制启动(应急模式)接口用例实战:模块间信号交互
以"空调温度设置"为例,涉及空调控制面板 → 空调 ECU → 仪表显示:
- 前置条件:车辆上电,空调系统正常
- 测试步骤:
- 在空调控制面板设置温度为 22°C
- 用 CANoe 监控空调 ECU 发出的温度信号(如
AmbTemp_Setpoint) - 观察仪表/中控显示的温度值
- 预期结果:
- 空调 ECU 发出的信号值 = 22°C(精度 ±0.5°C)
- 信号发送周期符合规范(如 100ms)
- 仪表/中控显示值 = 22°C,延迟 < 500ms
- 异常用例:
- 设置温度为最大值(如 32°C),验证信号不溢出
- 设置温度为最小值(如 16°C),验证信号不下溢
- 快速连续调节温度(1 秒内调 10 次),验证信号不丢失、显示不卡顿
异常用例实战:错误注入
- 发送非法 CAN 报文(如校验位错误、信号值超出范围),验证接收模块是否能正确忽略或报错
- 模拟总线负载 100%(报文洪水攻击),验证关键功能是否仍能正常工作
- 模拟某 ECU 不响应(掉线),验证其他模块是否能降级处理,不导致整车功能瘫痪
4.6.2 常见缺陷类型与排查思路
| 缺陷类型 | 典型现象 | 排查路径 |
|---|---|---|
| 通信类 | 功能偶发无响应、状态不同步、仪表显示卡顿 | 1. CANoe 抓总线报文,检查是否丢帧/延迟 2. 检查 DBC 信号定义是否与实际一致 3. 检查网关转发配置是否正确 4. 检查总线负载是否过高 |
| 状态同步类 | 多屏显示不一致、实际状态与显示不符 | 1. 确认状态源模块(谁是权威源) 2. 抓包查看状态信号发送是否正确 3. 检查接收模块是否正确解析和更新 4. 检查是否有缓存未刷新、初始化值错误 |
| 资源竞争类 | 偶发崩溃、数据错乱、功能时好时坏 | 1. 查看崩溃日志,定位崩溃代码行 2. 分析是否有多线程/多任务同时访问共享资源 3. 检查是否缺少互斥锁/信号量保护 4. 检查中断与主循环是否有资源竞争 |
| 内存类 | 运行一段时间后崩溃、越来越卡、功能异常 | 1. 查看内存使用趋势(是否持续增长不释放) 2. 使用内存检测工具(如 Valgrind、AddressSanitizer)定位泄漏点 3. 检查数组越界、空指针、野指针 4. 检查栈溢出(递归过深、局部数组过大) |
| 时序类 | 冷启动偶发失败、特定操作顺序下异常 | 1. 记录复现的精确操作时序 2. 分析模块启动顺序和依赖关系 3. 检查是否有"先使用后初始化"的问题 4. 检查超时设置是否合理(是否过短导致超时失败) |
问题场景:某车企量产车型,用户反馈车辆停放 3 天后电瓶亏电无法启动,4S 店检测发现静态电流 120mA(标准要求 < 50mA),但测试团队在实验室测量只有 40mA,无法复现。
根因分析:静态电流超标通常是某个模块未正确进入休眠,或被异常唤醒后无法重新休眠。实验室环境与用户实际使用场景有差异(如用户连接了行车记录仪、USB 设备,或停在地下车库有遥控信号干扰)。
处理办法:
1. 分模块测量:使用电流探头逐个测量各 ECU 的休眠电流,或逐个拔保险丝(B+ 常电),定位是哪个模块电流异常
2. 对比正常/异常车辆:在亏电车辆和正常车辆上同时测量各模块电流,对比找出差异模块
3. 检查唤醒源:使用 CANoe 监控休眠后的总线活动,查看是否有异常唤醒信号(如车门状态误报、遥控信号干扰、T-BOX 远程唤醒)
4. 模拟用户场景:在测试车辆上连接用户常用的外设(行车记录仪、USB 充电器、手机),复现用户使用场景后再测量静态电流
5. 检查休眠流程:审查异常模块的休眠代码,确认是否正确执行了休眠准备(关闭外设、降低时钟、进入低功耗模式),是否有任务阻止休眠
6. 长期监控:在测试车辆上安装电流数据记录仪,连续记录 7 天电流变化,捕捉偶发的电流异常升高
最终结果:通过分模块测量发现 T-BOX(远程通信模块)休眠电流异常,进一步排查发现 T-BOX 在收到运营商网络心跳后会唤醒,但唤醒后未正确重新进入休眠,导致持续高功耗。修复 T-BOX 休眠逻辑后,静态电流降至 35mA。
经验:静态电流问题是车载常见难题,定位关键是"分模块隔离 + 长期监控",不要只在实验室理想环境下测量。
4.6.3 日志分析方法
日志类型:
| 日志类型 | 来源 | 内容 | 获取方式 |
|---|---|---|---|
| 应用日志 | 座舱 App / 中间件 | App 运行日志、异常堆栈、调试信息 | ADB logcat / 串口 / 文件导出 |
| 系统日志 | Linux/QNX 操作系统 | 内核日志、驱动日志、系统服务日志 | dmesg / journalctl / /var/log |
| 总线日志 | CAN/LIN/Ethernet | 总线报文、信号、错误帧 | CANoe 录制 / 总线记录仪 |
| 诊断日志 | UDS 诊断 | 诊断请求响应、故障码(DTC) | 诊断仪读取 / UDS 0x19 服务 |
| 摄像头视频 | 行车记录仪/车内摄像头 | 操作过程、外部场景 | 视频文件导出 |
日志分析标准化步骤:
1. 稳定复现
└─ 确保问题可复现,记录复现步骤和概率
2. 同步抓取多源日志
├─ 应用日志(ADB logcat,时间戳精确到 ms)
├─ 系统日志(dmesg,内核事件)
├─ 总线日志(CANoe,全程录制)
└─ 视频(车内摄像头,记录操作过程)
└─ 关键:所有日志时间必须对齐(使用同一时间源,NTP 同步)
3. 定位异常时间点
├─ 从视频中找到异常发生的精确时间点
├─ 在应用日志中搜索该时间点前后的 ERROR/Exception
├─ 在系统日志中查找该时间点前后的 kernel panic/oops
└─ 在总线日志中查看该时间点前后的异常报文
4. 沿调用链追溯根因
├─ 从异常现象反向追溯:现象 → 直接原因 → 触发条件 → 根因
├─ 跨模块追踪:A 模块发出信号 → B 模块接收处理 → C 模块执行
└─ 对比正常/异常日志:找差异点,差异点就是问题所在
5. 验证结论
├─ 根据分析结论,构造条件验证(如修改信号值、模拟触发条件)
└─ 确认修复方案后,回归验证常用分析工具:
- CANoe:总线日志分析,可按信号/报文筛选、绘图、统计
- Wireshark:以太网报文分析,支持 SOME/IP、DoIP 解析
- ADB + logcat:Android 日志查看,支持 grep 过滤
- Python + pandas:大规模日志数据分析、统计、可视化
- 010 Editor / HxD:二进制日志文件分析
4.6.4 测试环境与工具链
硬件环境:
| 环境类型 | 说明 | 适用阶段 | 优点 | 缺点 |
|---|---|---|---|---|
| 实车测试 | 在真实车辆上测试 | 全阶段,尤其系统/验收 | 最真实,覆盖所有场景 | 成本高、环境不可控、危险场景难测 |
| 台架测试(Bench) | 将 ECU 拆出,在实验台架上连接电源和总线 | 集成测试主力 | 成本低、环境可控、可 24 小时测试 | 缺少实车物理环境(如振动、温度) |
| HIL(硬件在环) | Hardware-in-the-Loop,用实时仿真器模拟车辆环境,连接真实 ECU | 集成/系统测试 | 可模拟危险/边界场景、自动化测试、可重复性高 | 设备昂贵(百万级)、模型搭建周期长 |
测试工具:
- 总线工具:CANoe(Vector,行业标准,支持仿真+分析+测试)、PCAN(PEAK,性价比高)、ValueCAN(Intrepid)
- 诊断工具:Vector CANoe DiVa(UDS 自动化测试)、VCX SE(原厂诊断仪)、ELM327(OBD 通用诊断)
- 自动化工具:Python(python-can、can-isotp、pytest)、TESTBASE(车载测试自动化平台)、Vector vTESTstudio
- 性能测试:CANstress(总线压力测试)、电源模拟器(电压波动/掉电模拟)、网络损伤仪(弱网/延迟模拟)
管理工具:
- 缺陷管理:Jira、禅道、Redmine
- 用例管理:TestLink、禅道、TestRail、Polarion
- 版本管理:Git(GitLab/GitHub)、SVN
- 持续集成:Jenkins、GitLab CI
- 项目管理:Jira、禅道、飞书项目、Teambition
测试设备与硬件实操(思维导图:设备名称):
| 设备 / 工具 | 说明 |
|---|---|
| 高压互锁开关 | 控制整车电源,下高压后整车断电。注意:先断低压再断高压,先上高压再上低压。使用场景:①刷写动力 / 底盘域控制器时断高压,防止高压烧件;②测试遇到无法恢复的 BUG 时,下高压相当于重启整车来恢复 |
| 搭电宝 | 小电瓶亏电后给小电瓶充电 |
| 小电瓶 | 未上高压前的供电设备 |
| 双公头线(双 USB-A) | ①主要使用 adb 命令;②adb 拉取日志;③传输文件(图片、视频、开发小包等) |
| OBD-DB9 线 | ①找公司 ETC 定义图(OBD 16 针脚定义);②根据 ETC 定义图查看不同域 / 总线的划分与组合;③按需录制的域 / 总线类型接对应 DB9 口(如 12-13 这一组) |
CAN 盒子 / 总线工具硬件选型:
- CANoe(Vector):VN1630A、VN1640A、VN7640
- ZCANPRO(周立功):USBCANFD-200U、USBCANFD-100U / 400U
- TSMaster(同星)、PCAN(PEAK)
[图片占位符:PixPin_2026-09-03_15-31-07.png,后期手动插入]
ETC 定义文档包含 ETC(OBD1)、ETC(OBD2)、ETC(OBD3) 三组接口,每组 16 针;1 / 9 为一组 CAN 信号(CAN_L / CAN_H),8 为 +12V(15-feed 点火电),16 为 +12V(30-feed 常电),并含 Power Ground / Signal Ground:
⚠️ 重要配置说明:因配置不同,Safety CAN FD2 与 FD13、FD1 与 FD15、FD3 与 FD17、FD5 与 FD14 互斥,线束工程师需按项目车辆配置做线。
| 组别 | 1 / 9 针典型信号(举例) |
|---|---|
| ETC(OBD1) | ZCUD_CAN1、Body Exposed CAN、Chassis CAN/CANFD2、Propulsion CAN、Chassis CAN1、AD Redundancy CAN |
| ETC(OBD2) | ZCU CANFD1 / CANFD2、Connectivity CANFD、Safety CAN FD1/FD2/FD3/FD13/FD15/FD17 |
| ETC(OBD3) | ZCUD_CANFD3、SRS CANFD1、XCU_CANFD1、Safety CAN FD5/FD6/FD14/FD16 |
4.7 面试高频考点
4.7.1 基础概念题
Q1:集成测试与系统测试的区别?
+ 测试对象不同:集成测试测模块间接口和交互,系统测试测整车完整系统
+ 测试依据不同:集成测试依据接口规范/架构设计,系统测试依据 PRD/SRS 需求
+ 介入时机不同:集成测试在模块开发完成后,系统测试在集成稳定版交付后
+ 关注重点不同:集成测试关注接口正确性、数据流转,系统测试关注功能完整性、性能稳定性、用户体验
+ 测试方法不同:集成测试偏灰盒(需了解接口),系统测试偏黑盒(用户视角)
Q2:冒烟测试的目的和范围?为什么集成测试要先做冒烟?
+ 目的:快速验证版本是否"可测",核心功能是否正常,避免在一个有严重问题的版本上浪费时间执行全量测试
+ 范围:最核心的 20-30 条用例,覆盖上电启动、主要功能入口、基础通信
+ 为什么要先做:
1. 版本构建可能有问题(如编译错误、配置缺失、依赖不匹配),冒烟可快速发现
2. 如冒烟不通过,立即打回开发,节省测试团队时间
3. 冒烟通过是版本进入全量测试的准入标准(DoD)
+ 通过标准:P0 用例 100% 通过,无阻塞性问题
Q3:什么是回归测试?回归测试的范围如何确定?
+ 定义:回归测试是在代码变更(缺陷修复、功能新增)后,重新执行测试,验证变更是否正确、是否引入新问题
+ 范围确定方法:
1. 缺陷关联用例:必须执行该缺陷对应的测试用例,验证修复
2. 受影响功能用例:分析变更影响范围,执行相关功能的用例(如修改了蓝牙模块,需回归蓝牙+音频+电话)
3. 核心功能冒烟:每轮回归都执行核心冒烟用例,确保基础功能不受影响
4. 风险评估:对高风险模块(如动力、制动)扩大回归范围,对低风险模块可适当缩减
5. 自动化回归:如有自动化测试用例,全量执行自动化用例,效率高且覆盖全
4.7.2 流程与方法题
Q1:简述集成测试的完整流程。
1. 需求分析与测试计划:阅读 PRD/SRS/接口规范,制定集成测试计划,明确范围、资源、时间
2. 用例设计与评审:基于需求和接口规范设计测试用例,组织开发评审用例
3. 测试环境搭建:准备台架/实车/HIL,配置总线工具、诊断工具,确认硬件版本
4. 版本获取与冒烟:获取提测版本,刷写,执行冒烟测试,确认版本可测
5. 全量测试执行:按用例执行全量测试,记录结果,发现缺陷按流程提票
6. 缺陷跟踪与回归:跟踪缺陷修复进度,每轮版本执行回归测试,验证修复
7. 测试报告与交付:测试完成后输出测试报告,评估版本质量,满足交付标准后交付系统测试
8. 持续迭代:每个版本重复 4-7 步,直至版本稳定、缺陷收敛
Q2:如何设计一个高质量的集成测试用例?
+ 覆盖全面:功能用例 + 接口用例 + 异常用例 + 性能用例,不遗漏
+ 可执行性强:前置条件明确、步骤清晰可操作、预期结果具体可验证
+ 优先级合理:P0(核心必测)、P1(重要)、P2(一般)、P3(次要),测试时按优先级执行
+ 场景化设计:基于真实用户场景设计用例(场景法),而非孤立的功能点
+ 接口聚焦:集成测试重点在模块间接口,用例要验证信号交互、数据流转、状态同步
+ 异常思维:每个功能都要考虑异常场景(边界值、错误输入、中断、并发)
+ 可维护性:用例编号规范、模块分类清晰、变更时易更新
Q3:缺陷提票的标准流程是什么?一个好的缺陷单应包含哪些信息?
+ 标准流程:发现 BUG → 回归验证(确认可复现)→ 拉日志(应用+系统+总线)→ 拍摄视频/截图 → 提交缺陷票 → 指派给对应开发 → 跟踪修复 → 回归验证 → 关闭
+ 好的缺陷单包含:
1. 清晰标题:[模块] 简要描述问题(如"[蓝牙] 连接 iPhone 15 后播放音乐无声音")
2. 缺陷等级:P0/P1/P2/P3,按影响程度评定
3. 前置条件:测试环境、版本号、硬件配置
4. 复现步骤:1/2/3... 编号清晰,开发可按步骤复现
5. 预期结果 vs 实际结果:对比说明问题
6. 复现概率:必现/偶发(X 次出现 Y 次)
7. 附件:日志文件、复现视频、截图(三要素齐全)
8. 指派与抄送:指派给对应开发,抄送相关人员
4.7.3 技术深度题
Q1:CAN 报文丢帧如何排查?
1. 物理层检查:
- 检查 CAN 总线终端电阻(两端各 120Ω,总电阻 60Ω)是否正常
- 检查 CAN_H/CAN_L 电压(显性时 CAN_H≈3.5V, CAN_L≈1.5V;隐性时均≈2.5V)
- 检查线束是否有短路、断路、接触不良
2. 数据链路层检查:
- 用 CANoe 监控总线错误帧(Error Frame)、错误计数(TEC/REC)
- 如某节点错误计数持续增长,该节点可能有硬件或驱动问题
- 检查总线负载率,如 > 70% 可能因拥塞丢帧
3. 网络层/传输层检查:
- 如使用 ISO-TP(多帧传输),检查流控帧(Flow Control)是否正确,是否有超时
- 检查网关路由配置,报文是否被正确转发
4. 应用层检查:
- 检查发送节点是否真的发出了报文(用 CANoe 直接在发送节点附近测量)
- 检查接收节点的接收缓冲区是否溢出(来不及处理导致丢弃)
- 检查软件过滤规则,是否被应用层过滤掉
5. 时序检查:
- 检查报文周期是否稳定,是否有抖动过大
- 检查是否有优先级反转(高优先级报文被低优先级阻塞)
Q2:UDS 刷写失败的常见原因有哪些?
1. 安全访问失败:密钥算法错误、安全等级不足、错误次数锁定、超时未解锁
2. 会话切换失败:未正确进入编程会话(0x10 0x02)、会话超时被自动退回默认会话
3. 参数错误:下载请求(0x34)的地址/长度不合法、数据块(0x36)序号错误、数据校验失败
4. 硬件条件不满足:车辆电压过低(刷写要求 11-14V)、点火开关状态不对、未接稳压电源
5. 通信中断:CAN 总线断开、诊断线松动、刷写过程中其他设备占用总线
6. Flash 操作失败:Flash 擦除失败(硬件损坏/保护未解除)、写入失败(空间不足/校验错误)
7. ECU 状态异常:ECU 已变砖(Bootloader 损坏)、处于保护状态、需要特定引脚短接进入恢复模式
8. 版本不匹配:刷写的固件与 ECU 硬件型号/配置不匹配,被 ECU 拒绝
Q3:OTA 升级到一半断电了,车辆会怎样?如何测试这种场景?
+ 车辆表现(取决于升级方式):
1. A/B 分区升级:当前运行在 A 分区,升级写入 B 分区,断电后 B 分区不完整,重启时 Bootloader 检测 B 分区校验失败,自动回退到 A 分区,车辆可正常启动(升级失败但不影响使用)
2. 单分区全量升级:断电时原系统已被擦除但新系统未写完,ECU 无有效程序,可能变砖,无法启动(高风险,现代车载系统基本不采用这种方式)
3. 差分升级:差分包应用中断,可能导致系统文件损坏,需看是否有回滚机制
+ 测试方法:
1. 使用电源模拟器(如 Chroma 电源),在 OTA 升级的不同阶段(下载中、校验中、安装中、重启前)模拟断电
2. 每个阶段断电后,恢复供电,验证车辆是否能正常启动
3. 如能启动,验证系统版本(应回退到原版本)、功能是否正常
4. 如不能启动,验证是否有恢复机制(如 Bootloader 恢复模式、USB 救砖)
5. 覆盖升级流程的每个关键节点,确保每个点断电都能安全回退
Q4:多 ECU 状态不一致如何定位是哪个模块的问题?
1. 确定权威源:首先明确这个状态的"权威来源"是哪个 ECU(如车速的权威源是 ABS/ESC 模块,其他模块都是接收并转发/显示)
2. 测量权威源输出:用 CANoe 在权威源 ECU 附近测量,确认其发出的信号值是否正确
3. 逐跳追踪:如权威源正确,沿信号流向逐跳检查:
- 权威源 → 网关 → 目标 ECU,每一跳都测量信号值
- 在哪一跳信号值出错,就是哪一跳的问题(网关转发错误/目标 ECU 解析错误)
4. 检查时间同步:如信号值正确但显示滞后,检查信号周期、接收模块的刷新频率、是否有缓存延迟
5. 检查初始化:如仅冷启动时不一致,热启动正常,检查各 ECU 的初始化顺序和初始值设置
6. 对比正常车辆:在正常车辆上测量相同信号,对比找出异常模块
4.7.4 场景应变题
Q1:版本提测后冒烟不通过,你作为集成测试如何处理?
1. 立即停止测试:冒烟不通过说明版本有严重问题,不要继续执行全量测试,浪费时间
2. 记录问题:详细记录冒烟失败的用例、现象、日志、视频
3. 快速反馈:立即在项目群内通知开发和项目经理,说明版本冒烟不通过,附问题描述和日志
4. 打回版本:在缺陷管理工具中创建"版本阻塞"缺陷,标记为 P0,指派给集成开发/对应开发
5. 评估影响:评估该问题对测试进度的影响,如预计修复时间较长,需调整测试计划
6. 回退版本:如有上一个稳定版本,回退到上一版本继续测试未受影响的模块
7. 跟踪修复:跟踪开发修复进度,修复后优先验证该问题,通过后再重新提测
8. 复盘预防:如频繁出现冒烟不通过,推动建立提测准入机制(开发自测通过才能提测)
Q2:开发认为你提的缺陷"不是问题",如何沟通推进?
1. 先听开发理由:不要急于反驳,先听开发说为什么认为不是问题(是需求如此?是设计如此?还是无法复现?)
2. 查找需求依据:双方一起查 PRD/SRS,看需求是否有明确规定。如需求明确写了,按需求来;如需求没写,找产品裁决
3. 提供充分证据:确保缺陷单有完整的复现步骤、日志、视频,让开发无法以"无法复现"为由驳回
4. 从用户角度论证:如技术上"没问题",但用户体验有问题(如操作复杂、响应慢),从用户体验角度说明为什么应该优化
5. 升级处理:如双方无法达成一致,提交缺陷评审会,由测试主管、开发主管、产品经理共同评审决策
6. 记录结论:无论最终结论是修复还是不修复,都在缺陷单中记录决策理由和决策人,便于后续追溯
7. 保持专业:对事不对人,不要因为一个缺陷和开发产生个人矛盾,良好的协作关系更重要
Q3:项目周期压缩,测试时间不足,如何取舍和风险控制?
1. 评估风险:首先评估时间不足会带来什么风险(哪些功能测不到、哪些缺陷可能遗漏),量化风险影响
2. 按优先级测试:严格按用例优先级执行,P0(核心功能)必须 100% 覆盖,P1 尽量覆盖,P2/P3 可缩减或延后
3. 聚焦变更范围:如不是全量测试,聚焦本次版本变更的功能和受影响模块,未变更的模块可只做冒烟
4. 增加自动化:如有自动化用例,优先执行自动化,释放人力做探索式测试和复杂场景
5. 风险前置:提前识别高风险模块(新功能、复杂模块、历史问题多的模块),优先投入测试资源
6. 明确告知风险:向项目经理和相关方明确说明时间不足的风险,哪些功能未充分测试,可能有什么问题,由项目组决策是否接受风险发布
7. 输出风险清单:测试报告中明确列出"未测试/未充分测试的功能清单"和"已知风险",留痕免责
8. 后续补充:如版本发布后还有时间,继续执行未完成的测试,发现问题通过 OTA 修复
Q4:回归测试时发现一个不在本次变更范围内的老问题,如何处理?
1. 确认是否为老问题:先确认这个问题在之前的版本是否存在(可以查历史测试记录、在旧版本上复现),区分是"新引入的问题"还是"一直存在的老问题"
2. 评估影响:评估这个老问题的严重程度和影响范围,是 P0/P1 还是 P2/P3
3. 正常提缺陷:无论是不是本次变更引入的,只要是缺陷,都应正常提交缺陷单,标注清楚"历史遗留问题",并说明在哪个版本开始存在
4. 区分处理:
- 如为 P0/P1 严重问题:即使是老问题,也应推动本次修复,不能放过
- 如为 P2/P3 一般问题:可与项目组协商,如本次版本时间紧,可排到下个版本修复,但需记录在已知问题清单
5. 排查是否被本次变更触发:虽然不在变更范围内,但本次变更可能改变了时序/状态,导致原本隐藏的问题暴露。需分析是否与本次变更有关,如有关则必须本次修复
6. 记录到技术债清单:历史遗留问题应记录到技术债清单,跟踪后续版本逐步修复,避免永远"以后再说"
4.8 集成测试定义与测试环境搭建
集成测试定义:是开发写的代码集成开发合成整包,第一个测试阶段,简称冒烟测试,主功能验证。
4.8.1 集成测试周期表

4.8.2 测试环境搭建
测试环境:硬件环境、软件环境。
硬件环境:测试必需的台架设备(电源、IVI屏幕、仪表、FM天线、GPS天线、喇叭、外置功放、DVR)。
软件环境:下载软件版本(每日版本:\10.33.14.24\share_folder\Release\)。
软件的刷写参考(SOC刷机手顺)
4.8.2.1 硬件架构图

一个软件升级包 2-3G。
4.8.2.2 各功能模块介绍
| 模块 | 全称 | 说明 |
|---|---|---|
| APA | Automated Parking Assist | 自动泊车 |
| DVR | Digital Video Recorder | 行车记录仪 |
| CMS/DMS | Camera Monitoring System / Driver Monitoring System | 数字反光镜 / 驾驶员监测 |
| AVM | Around View Monitor | 全景影像(360环视) |
| GNSS | Global Navigation Satellite System | 定位导航系统(GPS、北斗等) |
| DAB | Digital Audio Broadcasting | 数字音频广播(收音机) |
| FM/AM | Frequency Modulation / Amplitude Modulation | 调频/调幅收音机 |
| IVI | In-Vehicle Infotainment | 车载信息娱乐系统(大屏) |
| IC | Instrument Cluster | 仪表 |
| HUD | Head-Up Display | 抬头显示 |
| USB-用户 | — | 用户USB接口(本地升级) |
| 以太网(千兆) | — | 高速数据传输通道 |
CMS(Camera Monitoring System):沙雕设计之一:无敌反光镜(就是没有反光镜,用的摄像头)。
沙雕设计师之二,赛车方向盘(半幅方向盘)。
FM(Frequency Modulation):调频广播,通过改变载波频率来传输音频信号,具有音质好、噪声低的特点,主要用于传输高质量音乐和广播节目。本地电台。
AM(Amplitude Modulation):调幅广播,通过改变载波幅度传输音频信号,传播距离较远,但音质相对较差,常用于新闻、谈话类广播节目。全国中央电台。
IVI(In-Vehicle Infotainment)大屏:车载信息娱乐系统,整合车辆的多媒体播放(音乐、视频等)、导航、蓝牙电话、车辆状态显示等功能,通过中控显示屏操作,是车内人与车、外界信息交互的重要界面。
IC仪表:车辆仪表盘,显示车辆重要信息,如车速、发动机转速、油量、水温、里程、剩余里程,充电显示,电量显示,灯光,仪表多媒体交互,地图导航交互,上下功能切换,各信号指示灯,故障灯,智驾显示等,部分还具备故障提示、驾驶辅助系统状态显示等功能,帮助驾驶员实时了解车辆运行状况。
HUD(Head-Up Display)抬头显示:抬头显示器,将车辆关键信息(如车速、导航提示、专项灯时候要有左视图,驾驶辅助系统警告等)投影到驾驶员前方挡风玻璃上,使驾驶员无需低头看仪表盘或中控屏就能获取重要信息,保持视线始终向前,提升驾驶安全性和便利性。
USB-用户:用于用户连接外部USB设备,如U盘、移动硬盘等,可读取其中的多媒体文件(音乐、视频、图片)进行播放,也能用于软件升级、数据传输,还可给支持USB充电的设备充电。本地升级。
以太网(千兆):提供高速数据传输通道,用于车载网络中设备间通信,如连接车载电脑、摄像头、传感器等。支持高带宽应用,满足高清视频流传输(如AVM图像传输)、大量数据交互(如智能驾驶系统数据传输)需求,保障车载系统高效稳定运行。
4.9 冒烟测试与版本验证
4.9.1 冒烟测试流程

4.9.2 Changelist测试流程

Changelist(合入单):集成测试时候遇到难点,就是这个。
- 里面有开发优化的很多底层代码会加入其中,开发也不写出测试流程,我们测试要验证给结果,就得沟通,浪费大量时间。
- 后面系统以及验收测试,提交的BUG,开发修复后我们要验证,他们提BUG时候很多设计报文信号的前置条件没有写明,我们在复现时候需要查看相关需求,或者找对应提BUG的后端测试人员咨询测试条件,也会浪费大量时间。
4.9.3 版本发布及测试版本要求
集成测试每天发布一个版本进行验证,每周选择一个版本发布到系统测试,怎么发布?邮件。
- 版本的正常发布
- 版本无严重问题,可正常发布
- 版本有严重问题,阻塞功能很少
- 版本不能发布
- 有严重问题,导致功能阻塞大于70%
- 有严重问题,阻塞功能很少,但交付方不同意该问题的流出,导致版本不能发布
- 无严重问题,开发要求的changelist未合入完,需要第二天重新出版本,导致当天版本不能发布
测试版本要求
| 类型 | 说明 |
|---|---|
| 从集成处获取的包进行测试 | 由集成打包所有模块后,发出版本后集成测试进行全功能的冒烟及合入单的测试 |
| 硬件测试版本发布 | 从开发处获取包,按要求进行集成测试 |
| 开发验证功能 | 开发需要集成测试验证某个功能是否正确,需要重新刷机验证,不接受测试任务 |
版本发布判定速查(思维导图:设备名称):
- 正常发布:①版本无严重问题;②版本有问题,但阻塞功能很少
- 不能发布:①版本有严重问题,阻塞功能达到 70%(如 100 条用例有 70 条无法测试;实际发布标准以公司要求为准);②版本无严重问题,但 BUG 下游测试不接受
合入单 / 变更单里有什么(思维导图:设备名称):
- 开发修复的 BUG → 需要我们在里面看了之后进行回归测试
- 需求的修改内容 → 需要看了之后进行测试
4.10 测试维度与用例规范
4.10.1 冒烟测试测试维度
| 维度 | 说明 |
|---|---|
| 功能测试 | 验证车载系统的各项功能是否正常工作(音/视频娱乐系统、导航系统、蓝牙连接、车内控制按钮、诊断功能) |
| 本地/空中升级测试 | 升级中是否报错,升级后是否自动重启、Crash |
| 模块间交互检查 | 重点模块及分支功能交互测试(媒体音频交互、语音交互) |
| 回归测试检查 | 检查修改部分代码是否影响现有功能,验证以前发现和修复的bug是否在新版本上再现 |
| 实车测试 | 节点版本在实车上做冒烟测试 |
| 性能响应时间 | 应用启动慢、应用加载时间过长、操作十分不流畅 |
| 兼容性测试 | 测试车载系统与其他设备的兼容性,如与手机、外部存储设备(U盘) |
| Free测试 | 通过经验自由测试,发现严重问题 |
| 异常测试 | 不按照正常逻辑测试,非常规操作;如:U盘升级中,拔掉U盘 |
| 压力测试 | 使用monkey及脚本自动化测试,长时间压力测试,发现严重问题 |
💡 边角案例:极少出现的。写用例时候如何能覆盖更全面。写用例还需要思考正向反向用例。等价类边界值流程法都是手法,用例覆盖更全面需要从测试维度出发方能覆盖全面。
4.10.2 测试用例常用设计方法
| 测试方法 | 核心思想 | 适用场景 | 简单例子 | 优缺点 |
|---|---|---|---|---|
| 等价类划分 | 把输入划分为有效等价类、无效等价类,每类选 1 个代表数据 | 输入框、参数校验,大量重复输入场景 | 手机号输入:有效 11 位手机号;无效:10 位、12 位、字母 | ✅用例少,覆盖同类输入❌不考虑边界临界点 |
| 边界值分析 | 取边界点、刚好大于、刚好小于边界的值,重点测边界 | 数值范围、长度限制、数组下标、时间范围 | 密码 6‑16 位:5 位、6 位、7 位、15 位、16 位、17 位 | ✅最容易出 bug 的地方,优先级高❌只适合有边界的输入 |
| 错误推测法 | 凭经验、过往 bug,猜测容易出错场景 | 异常操作、兼容、历史缺陷 | 网络中断时提交表单;连续快速点击按钮 | ✅快速发现隐性 bug❌依赖测试人员经验,无统一标准 |
| 因果图法 | 分析输入条件(因)和输出结果(果)之间逻辑关系(与 / 或 / 非) | 多输入条件互相组合,条件之间有约束 | 登录:账号、密码两个输入,不同组合对应不同提示 | ✅覆盖条件组合,逻辑清晰❌条件多的时候画图繁琐 |
| 判定表法 | 把所有输入条件组合做成表格,每一行一条用例 | 条件多、不同组合输出完全不一样 | 会员折扣:是否 VIP、是否满减、是否节假日,组合出不同折扣 | ✅所有组合全覆盖,适合复杂业务规则❌条件多,用例数量爆炸 |
| 场景法(业务流程法) | 模拟用户真实业务流程:基本流(正常流程)+ 备选流(异常分支) | 业务流程类功能,订单、登录、支付 | 下单:正常下单;库存不足下单;余额不足下单;取消订单 | ✅贴近真实用户使用,业务测试首选❌只覆盖流程,单字段校验不足,要搭配等价类边界值 |
| 正交试验法 | 从大量输入组合里挑选代表性组合,减少用例数量 | 多参数、参数取值多,全部组合量巨大 | APP 登录:浏览器、系统、版本、语言多个维度 |
4.10.3 测试用例规范
4.10.3.1 用例模板

4.10.3.2 测试用例的更新与维护策略
- 需求变更触发维护:依据需求变更、changelist 变更清单,识别功能改动,同步新增、修改、删除对应测试用例,保证用例与实现一致。
- 缺陷驱动补全用例:分析版本缺陷,若属于用例设计遗漏,将缺陷场景转化为测试用例,纳入回归套件,避免重复漏测。
- 持续迭代优化:承认测试用例无法做到绝对完备,随着对业务理解加深,持续完善用例,清理重复、失效用例。
- 分层管理用例库:不同项目独立维护用例,项目内部按模块拆分;下线功能及时归档废弃用例。
- 团队版本对齐:用例修改后进行评审,保留修改记录,团队共用同一套用例基线。
4.10.3.3 什么时候需要维护测试用例
- 需求发生变更;
- 开发代码变更(changelist);
- 发现 bug,发现原来用例有遗漏;
- 老功能下线,清理无效用例;
- 对业务理解加深,优化原有用例。
4.11 BUG 管理与规范
4.11.1 BUG级别(严重程度)
A级(必现的只能在集成测试这边出现,系统测试那边不能出现)
- 测试过程中出现的非操作引起的死机、自动重启过大
- 通话无声、回音、接通后对方听不到声音
- 操作无法进行计算超过24C/4操作硬件才恢复正常的缺陷
- 手机蓝牙连接后,使用播放音乐无声
- 一级菜单key操作失效/失效,导致在大软件主题下所有的功能无法进入和缺陷的缺陷如:功能主菜单无法进入
- 操作系统70%不能测试
B级(A级B级BUG这种BUG不多,个别版本中有部分)
A级B级BUG出现后,找来开发看后,第一时间提票到平台,并且在工作群中@对应开发主管以及集成人员,让他们第一时间知道本版本严重BUG有哪些。
- 机械寿命说明书中已功能没有实现
- 多媒体过程中出现记忆错误、黑屏/花屏画面闪烁,且闪烁量时间超过正常操作1倍或以上,用户体验非常差
- 页面转换异常且无声/无声,声音出现断续杂音/杂音
- 系统错误,频繁提示应用程序错误
- 系统性能严重低于预期指标(<50%),如:操作十分不流畅,切换频率响应时间过长,应用启动加载时间过长,应用切换加载时间过长等
- 花机,无操作死机,8-9秒可恢复
- 蓝牙通话效果特别差(蓝牙通话听不清,无法测试,声漂乱等)
- 蓝牙连接成功后,无法正常使用(蓝牙媒体,无声漂乱等)
- 蓝牙通话效果特别差(蓝牙通话听不清,无法测试,声漂乱等)
下图中是点击APP出现的crash,定义B级BUG:在工程模式中可以设置捕捉CRASH,当点击APP出现崩溃闪退时出现下图场景CRASH。输入法发生ANR、崩溃crash、异常日志输出。

C级(BUG提票最多的是C级)
- 功能已经实现,但功能呈现的显示模式/设计风格/显示内容等与预期/规范不符
- 功能需求说明书中已做功能,在特定操作下导致不可用,但可复位问题
- 迁移过程出现黑屏/花屏等问题可复位:常输出时,会出现短暂的杂音/噪音,且出现在特定位置与页面
- 出现让用户厌烦的重复的问候和:关键页面如导航等导航系统弹错遮挡,提示信息要不断电一直显示导致其他功能无法使用等
- 切、换曲、偶合的同步性缺陷(如:曲声、页面框架的打票,不能保持同步)
- 数据加载显示问题:字段显示错误
下图中是C级文字折叠

下图中是英文模式,中间有中文,定义C级

不图中是输入法左边栏日未对齐:定义C级

D级
- 影响微小类问题
- 再现率低,可复位偶发性问题
- 性能略差低于预期目标(<10%)
- 显示内容的文字(位置/大小/图片/色差等参考值,与预期/规范有轻微偏差,不会造成功能性影响的缺陷
- 建议类问题:式样本身不合理,提出建议,同类产品更优的体验建议
下图中文字框,左右到顶,没有空气感,太拥挤,定义D级BUG。

4.11.2 Bug严重等级定义(表格版)
| 序号 | 级别 | 定义 | 详细描述 | 举例 |
|---|---|---|---|---|
| 1 | A | 必现性及大概率(1/100及以上致命问题,不便于用户查看及销售) | 1.可导致驾驶人生命财产安全隐患的问题 2.违反国家法律法规、行业认证、客户规范要求及设计目标且使用功能无法实现的缺陷 3.日常使用功能缺失(包含必须支持的第三方软件) 4.异常操作导致的功能缺失 5.主要参数异常导致的质量问题 | 车辆启动、低压、低压时黑屏、牵引引发电池起火; 熄火状态下,爆音、破音; carplay、carlife无法使用; 屏幕显示出现大面积花点、横条 |
| 2 | B | 严重影响用户体验、导致用户在日常使用中存在痛点(<1/100基本流失用户) | 1.主页APP异常导致出现较大缺陷 2.软件实现bug引发的功能实现错误 3.系统性能不满足要求 4.偶发和系统记录及录音遗留问题 5.基本功能存在比较明显缺陷 | 屏幕布局不美观,缺少或多余框架,输出乱码死机; 倒车影像不亮; 多媒体播放有杂音; 车辆启动时间大于3-5s; 偶发黑屏、闪屏、白屏,复位可正常; 车辆设置无响应 |
| 3 | C | 用户体验轻微较差,存在较大的可被容忍的缺陷(<1/1000以下基本流失用户) | 1.主页APP等子页面功能(包含必须支持的第三方软件)实现存在轻微缺陷 2. UI、UE设计与软件出版本存在差异 3.软件实现bug引发的功能实现错误 4.低概率基本功能缺陷及结果保存问题 | 中英文切换错乱时,某多媒体语音失效; 导航过程中偶发无语音播报; 偶发连接蓝牙无声音; 通过过程中偶发断连,重启后恢复; 用户图标和文案有细微差别; |
| 4 | D | 用户体验影响小、基本不影响正常使用,客户不容易或者很难发现的问题 | 1.基本功能出现轻微问题 2. UI、UE设计与软件出版本存在轻微差异 3.建议优化的问题,PRD要求,测试人员自己输入的检查文档定义不清晰问题 | 中英文切换时不支持全键盘(1900大输入法文件丢失要求); 文件管理器中文件不显示全部; 在音频播放的时候,按键音开关键无效(按键被合并并失焦) |
4.11.3 Bug提交规则
提BUG模板(核心):
标题:【集成】【模块】链接wifi失败
版本信息:主线NS阀:刷机时候刷那个版本,提票时候版本信息就写那个版本
SOC版本:CDC_7901301-RA19_SW2.12.B_220930_2435_03
MCU版本:MCU_7901301-RA19_SW2.12.B_220930_2435_00
硬件版本:
c样件
环境信息:
台架
预置条件:
1.KL15 ON
2.空调界面已展开
3.空调处于打开状态AC_ctrlFeedback: ac_systemOnOffSts =0x1: ON
4.自动模式处于关闭状态AC_ctrlFeedback: ac_autoStatus=0x0:OFF
操作步骤:
点击自动按钮
实际结果:
未下发信号
预期结果:
IVI发送3帧信号"ivi_hvacAutoModeReq =0x1: KEY_PRESS",然后周期发送ivi_hvacAutoModeReq =0x0: INVALID
出现概率:
失败率30%左右
问题时间:
2025/5/28 09:34:28
备注:无
log/及附件【图片,视频】:BUG关闭条件:公司规定谁提票谁关闭,以下是关闭条件。
验证bug的规则:
【验证版本】
SOC版本:CDC_7901301-RA19_SW2.10.3.B_240321_2435_01
MCU版本:MCU_7901301-RA19_SW2.10.3.B_240321_2435_00
【验证环境】
台架/实车
【验证结果】
Pass/Failed(未复现(具体版本可能根据bug情况改变))
【处理结果】
关闭/重新打开的情况
【验证次数】
10次
【备注】
复现日志或者附件条件关闭规则:
- A级bug:必须同等验证1个版本关闭,偶因bug验证3个版本才能关闭
- B级bug:必须及偶现问题验证1个版本后关闭,特别低概率出现的bug验证2个版本后关闭
- C/D级bug:必须及偶现问题验证1个版本后关闭
节点bug的关闭规则:
- 要在节点版本上验证的上一次出现的Bug后再关闭(合入在节点changelist中)(当bug提过来时,在bug下备注"下个nc节点版本验证")
- 节点版本已经验证通过的,如bug描述为偶现问题,就在节点后的主版上关闭(当bug提过来时,在bug下备注"下个nc节点版本验证")
- 节点版本含有督导导致有品质问题未合入节点,就在节点后的主版上关闭(当bug提过来时,在bug下备注"下个nc节点版本验证")
标签的标注:
- 问题只有节点才有的适配只在"重现步骤"标注【节点】,如【OTS2】
- 主线和节点都有这个问题就在"重现步骤"标注【节点/主线】,如【OTS2/主线】
- 只有主线有的,就不标标签
关闭bug的责任人:
- 创建者在项目中,创建者验证后关闭自己提交的bug
- 创建者不在项目中,项目测试人员验证后将测试结果备注在bug后面,通知创建者关闭bug,若创建者需长期,项目测试人员验证通过后将测试结果备注在bug后面并关闭
- 创建者在项目中,但创建者的问题又复现,上传复现日志并备注后将bug重新激活
- 创建者不在项目中,项目测试人员又复现问题,上传复现日志并备注后,通知创建者重新激活,创建者需长期,验证人员可直接重新激活
- 备注:原则上自己的bug自己跟踪,但是遇到创建者转到其他项目的情况下由bug所在项目的测试人员跟踪,规则如上
禅道 / 缺陷平台管理要点(思维导图:通讯矩阵、禅道):
- BUG 处理 2437 原则:严重问题 24 小时内给出 BUG 原因及解决措施、3 天内给出验证版本并关闭问题;非严重问题 7 天内给出版本验证后关闭
- BUG 状态流转:激活(刚新建的 BUG 状态)→ 已确认(开发看见后点击确认该问题)→ 待解决(开发正在解决的状态)→ 已解决(开发已解决,测试需要回归验证)→ 关闭(验证没问题即关闭)
- 关闭 BUG 的责任人:谁提的谁关闭;处理别人的 BUG 时需有领导的授权
- 标题命名方式:【项目代号 / 部门简称】【BUG 模块】描述
- BUG 描述内容:版本信息、测试环境(台架 / 实车;生产环境为用户使用环境,测试(演示)环境为测试使用环境)、样件信息(如供应商 1 用 A 样件、供应商 2 用 B 样件)、前置条件、操作步骤、预期结果、实际结果、BUG 概率、BUG 时间、备注
- 关闭 / 激活 / 跟踪时 BUG 的描述内容:版本信息、测试环境、验证结果(pass 必现 BUG / fail / 暂未复现 偶现 BUG)、处理结果(关闭 / 激活 / 继续跟踪 N 个版本)、验证次数(注意次数一定要 ≥ 10 次)、备注
4.11.4 BUG优先级划分(P0-P3)
| 优先级 | 等级名称 | 定义 | 车载典型示例 |
|---|---|---|---|
| P0 | 致命(Blocker) | 导致系统核心功能完全不可用、无法继续测试或用户无法使用 | 整车上电后中控黑屏无法启动、行驶中仪表黑屏、制动信号报文丢失、OTA升级变砖 |
| P1 | 严重(Critical) | 严重影响核心功能,存在替代方案但体验极差,或影响大量用户 | 蓝牙连接后通话无声、导航频繁崩溃闪退、空调无法控制、语音唤醒完全失效 |
| P2 | 一般(Major) | 影响非核心功能,或仅影响少量用户,不阻断主流程 | 歌词显示不同步、主题切换偶发卡顿、USB歌曲识别慢、仪表媒体信息延迟 |
| P3 | 轻微(Minor) | UI显示问题、文案错误、轻微体验瑕疵,不影响功能使用 | 错别字、图标偏移、颜色色差、对齐问题、轻微动画卡顿(不超过3秒) |
4.11.5 偶现BUG版本跟踪规则
偶现缺陷因复现概率低,需跨版本持续跟踪验证,防止"假修复"。各优先级偶现BUG的版本跟踪要求如下:
| 优先级 | 必现BUG关闭条件 | 偶现BUG关闭条件 |
|---|---|---|
| P0 / A级 | 验证1个版本无复现,方可关闭 | 跟踪3个版本无复现,方可关闭 |
| P1 / B级 | 验证1个版本无复现,方可关闭 | 跟踪2个版本无复现,方可关闭 |
| P2 / C级 | 验证1个版本无复现,方可关闭 | 验证1个版本无复现,方可关闭 |
| P3 / D级 | 验证1个版本无复现,方可关闭 | 验证1个版本无复现,方可关闭 |
4.11.6 其他企业BUG分级参考(S-A-B-C)
部分车企采用S-A-B-C四级分级体系,与上述P0-P3 / A-B-C-D体系对应关系如下,供跨企业协作时参考:
| 企业分级 | 对应优先级 | 核心定义 |
|---|---|---|
| S级 | P0 / 致命 | 安全相关、整车无法使用、数据丢失 |
| A级 | P1 / 严重 | 核心功能严重异常、影响测试进度 |
| B级 | P2 / 一般 | 次要功能异常、有替代方案 |
| C级 | P3 / 轻微 | UI显示、文案、轻微体验问题 |
4.11.7 BUG流转状态详解
标准缺陷生命周期包含以下五个状态,各状态间的转换条件与责任人需明确:
激活(New) → 已确认(Confirmed) → 待解决(In Progress) → 已解决(Resolved) → 关闭(Closed)
↑ ↓ ↓ |
│ 驳回(Rejected) 延期(Deferred) │
│ (非问题/重复/需求变更) │
└──────────────────── 重新打开(Reopened) ←────────────────┘- 激活(New):测试工程师提交缺陷,初始状态。需包含完整的标题、模块、优先级、前置条件、复现步骤、预期结果、实际结果、复现概率、日志/视频附件。
- 已确认(Confirmed):开发或测试负责人确认缺陷有效,分配给对应开发工程师。若为非问题、重复缺陷或需求变更,则驳回并注明原因。
- 待解决(In Progress):开发工程师已接受缺陷,正在分析修复。
- 已解决(Resolved):开发完成修复,代码合入版本,通知测试回归验证。
- 关闭(Closed):测试回归验证通过,按版本跟踪规则确认无复现后关闭。
- 重新打开(Reopened):回归验证不通过,或已关闭缺陷在后续版本复现,重新激活并附复现证据。
4.11.8 座舱BUG发现后处理流程
座舱域缺陷以界面交互、多媒体、连接类问题为主,发现后按以下流程处理:
- 拍摄视频:立即录制复现操作全过程,视频中需语音解说出现的问题及时间点。
- 复现确认:重复操作2次以上,确认是偶现还是必现(必现1次即可,偶现需记录5-10次中的出现次数)。
- 拉取日志:通过U盘导出或adb logcat抓取应用日志、系统日志,记录BUG发生的精确时间点(精确到秒)。
- 打点标注:在视频或日志中标记BUG发生时间点,便于开发定位。
- 提交缺陷票:按标准模板提票至缺陷管理平台,指派对应模块开发负责人。
- 回归验证:开发修复后,在新版本按复现步骤验证,通过则关闭,不通过则重新打开。
4.11.9 智驾BUG发现后处理流程
智驾域(ADAS / 自动驾驶)缺陷涉及行车安全,处理流程比座舱更严格,需双备份验证:
- 打点标注:发现问题后立即在测试车辆打点器上按标记键,记录问题发生的精确时间点与位置。
- 拉取全量日志:打包智驾域控制器全量日志(CAN/CAN FD总线数据 + 摄像头视频 + 激光雷达点云 + 应用日志),循环覆盖录制需保存问题发生前后30分钟数据。
- 上传至缺陷管理平台:将日志包上传至公司缺陷管理平台(如阿里云OSS),并在缺陷单中附下载链接。
- 提交缺陷票:按智驾缺陷模板提票,需包含路况、天气、周边车辆、ACC/APA设置参数等详细场景信息。
- 双备份验证:智驾BUG修复后需在HIL台架和实车场地双重验证,确认修复有效且未引入回归问题。
4.11.10 开发解决方案分类
开发处理缺陷时,解决方案通常为以下六类之一,测试工程师需根据解决方案类型决定后续验证策略:
| 解决方案 | 说明 | 测试后续动作 |
|---|---|---|
| 已解决(Fixed) | 确认BUG真实存在,已修复代码并合入版本 | 按复现步骤回归验证,通过则关闭 |
| 设计如此(By Design) | 行为符合需求设计,非BUG | 核对需求文档,如确认为设计则关闭;如与需求不符则重新激活并附需求依据 |
| 无法复现(Cannot Reproduce) | 开发在当前环境无法复现问题 | 补充更详细的复现条件、日志、视频;跨版本持续跟踪,如3个版本均未复现可关闭 |
| 重复BUG(Duplicate) | 与已有缺陷单重复 | 关联至原始缺陷单,关闭当前重复单 |
| 延期处理(Deferred) | 确认是BUG,但当前版本不修复,排期后续版本 | 在缺陷单中注明计划修复版本,版本发布后验证 |
| 外部原因(External) | 问题由第三方依赖(如手机系统、蓝牙芯片、地图SDK)导致 | 跟踪第三方修复进度,更新后验证;无法修复则记录为已知问题 |
4.11.11 重点场景化:智驾与座舱特殊要求
不同域的缺陷验证有特殊要求,测试工程师需根据所属域调整验证策略:
智驾域特殊要求:
- 修复验证需双备份(HIL台架 + 实车场地),确保修复有效且无回归。
- 偶现缺陷需增加路试里程(建议500公里以上),覆盖高速、城区、泊车等多场景。
- 涉及功能安全(ISO 26262)的缺陷,需同步安全工程师评估,确认修复不引入新的安全风险。
座舱域特殊要求:
- 多媒体类缺陷需验证音频通道(车机扬声器 / 蓝牙通话 / 语音播报)互不干扰。
- 多屏交互缺陷需验证中控、仪表、HUD、副驾屏的信息同步一致性。
- 连接类缺陷(蓝牙 / WiFi / CarPlay)需覆盖多品牌手机、多系统版本的兼容性测试。
4.12 测试报告、发布与周报
- 09 daily版本-封面内容

- 09 daily版本-变更履历

- 09 daily版本-结果汇总

- 09 daily版本-changelist

- 09 daily版本-测试结果

- 09 Release版本-封面内容

- 09 Release版本-变更履历
Release版本的变更履历、结果汇总与daily版本的统计方式一致。

- 节点版本:统计当前节点的所有合入单
- 周版本:统计包括当前测试的周版本及到周一的测试了的所有合入单

- 09 Release版本-Smoking Test
Release版本冒烟用例与daily用例的区别:Release:用例统计在一个sheet页,daily:一个模块一个sheet页。
填写内容:实际结果、执行人、测试版本、执行日期。

4.12.1 测试结果的发布
4.12.1.1 邮件发布
报告汇总信息:Daily Build Version集成测试结果报告、Release Version报告。
Daily Build Version集成测试结果报告发布:
- 收件人:业务负责人、项目经理、项目经理主管、质量管控负责人、集成测试负责人
- 抄送人:业务负责人、软件开发负责人、座舱软件测试副负责人、系统测试部门人员
- 主题格式:TS-集成测试报告(中科创达)【集成测试】Daily Build Version集成测试结果(注意:如需要爆雷改为首项,项目爆雷测试的项目首项为:如【SAI OS】)
- 添加附件:测试日报表(测试用例)
- 正文格式:
Hi all,
【SAI OS 智能座舱软件平台项目】【集成测试】结果如下,附件为本次版本2023/05/11集成测试结果,请查收
1. 版本信息:(如下例)
版本编号(车载域控制器中读取)
SOC版本:CDC_7901301-XH01_SW1.00.A_230511_10001_00
MCU版本:MCU_7901301-XH01_SW1.00.A_230511_10001_00
2. 测试结果:通过红方(集成测试用例汇总)
3. 测试结果
数据(Severe集成测试结果-集成测试用例汇总)Release Version报告发送信息-内部邮件:
- 收件人:业务负责人、项目经理、项目经理主管、质量管控负责人、集成测试负责人
- 抄送人:业务负责人、软件开发负责人、座舱软件测试副负责人、系统测试部门人员
- 主题格式:Seres-SAI_OS_ReleaseVersionReport(暴力版)、TS-SAI-OS_ReleaseVersionReport(中科创达)(无论此为信息聚焦热修)
- 正文格式:
Hi all,
总评审,该版本下周下载(W18)释放成测试使用,请注意查收!(注意:下载时间记得更新)
备注:节点版本如最新,上面图位本版,xx版本用于xxmm车查看,请注意查收!
1. 版本信息(如下载)
SOC版本:CDC_7901301-XH01_SW1.00.A_230526_10001_01
MCU版本:MCU_7901301-XH01_SW1.00.A_230526_10001_00
2. 版本下载地址:xxxxxxxxxxxxxxxxxxxx
3. 严重问题总结
数据(无严重问题时删除)
4. 测试结果-红方(无关注为集成测试用例汇总)
数据(Severe-集成测试报告-集成测试用例汇总)
5. 测试结果-黄方
数据(Severe-集成测试报告-集成测试用例汇总)Release Version Report报告发送信息-外部邮件:
- 转发给合作方部件
严重问题导致版本不可用的话术:
- 严重问题导致版本不能发布,邮件和每日测试结果也需要发布,邮件正文将统一添加在正文第一句话中,格式如下:
该版本由于xxx严重问题,导致该版本不可用,测试结果如下:
4.12.1.2 微信发布
微信发布测试结果的格式。
无严重问题:
1. 今日xx版本测试结果
截图(集成测试用例汇总表)有严重问题:
@开发负责人 @集成负责人,当前版本发现的(问题),导致且(满屏状百分之几的功能)不能测试,仍为激活状态,需要尽快解决
截图(新增问题汇总表)
1. 历史严重问题如下(Release版本才统计并发送)
截图(历史严重问题汇总表)
2. 今日xx版本测试结果如下
截图(集成测试用例汇总表)4.12.2 周报的统计
周报统计最少要1.5-2小时不停。
我们要把一周的报表数据全部打开,周报内容包裹每天验证的版本号,回归验证的数量,当天pass和fail数量,把日报表中的核心内容,整理到周报表中,作为一周数据的输出。
我们把整理好的周报表周一发给组长统计。
我们3个人测试一款车型,每天测试两个版本,本周一个人测试一个版本,另外两个人测试一个版本,每周轮换测试,其他车型是每天两个版本4个人测试,都是两个人测试一个版本,所以说版本日报信息不是只在我们手里有,要问问同车型同事去拿,周版本是3个人轮流做。
日报 / 周报内容参考(思维导图:设备名称,不同车企口径):
| 车企 | 日报内容 | 周报内容 |
|---|---|---|
| 赛力斯 | 即用例内容,用例数据填写好、BUG 数据填上即可 | 本周测试的版本信息、每个版本的数据(结果数据、BUG 数据等)、变更测试的数据 |
| 吉利 | 当天测了多少条用例、发现多少 BUG、路试里程或线路、有无阻塞项(风险)、明日安排 | 本周用例数据数量、发现的 BUG 数量、回归的 BUG 数量、处理了什么问题及结果、剩余工作内容及时间估计、下周工作安排 |
| 小鹏 | 每天测试的用例数量、BUG 数量、测试里程数据、电量里程消耗、充电数据、充电费用 | — |








4.13 难点、面试与用例维护
4.13.1 1. 开发新增加的功能
由于保证验证百分百覆盖测试,必须要每条合入都要验证到,开发新增加功能,简短一句话带过,集成测试人员看不明白怎么测试给结果,这个时候要第一时间跟对应开发去沟通,测试方案,怎么验证。经常要等回复,这是难点之一。

4.13.2 2. 后方系统测试已修复BUG合入单
在合入单中有ID号的就是测试人员提的BUG:系统测试提交的BUG描述比较模糊,未按标准流程提票,因为集成测试是在系统测试上层,所有后方的BUG都要先经过集成测试验证,有很多信号类测试用例,要添加很多报文信号,而后方系统测试简单几句话描述过去,我们在测试这种合入BUG时候,需要去需求中寻找测试流程,要添加哪些报文信号,有时候要找十几分钟或者半小时一条合入,有时候要跟提票的后方系统沟通问一下测试流程,要添加哪些报文信号,不管是那种都比较麻烦。这是难点之一。

4.13.3 面试题与实操要点
4.13.3.1 面试题:你们怎么拉包线刷,新版本发布?
首先我版本发布了,我要先去把这个包下载下来,我把对应的软件包下载下来,下载完之后我要去刷机,就是刷环境。把环境都升级到我们对应的版本,因为像我们这边的话是可能是两个人用一个台架。
1. U盘升级:简单快捷,方便,直接插到公司服务器,电脑上进入下载网页地址就可以一键下载,插入车机USB口,会弹出是否升级,点击是。直接升级。
- 测试点:升级是否正常完成,升级过程中是否会中断升级,升级过后系统是否正常开机运行,升级前是否插上U盘弹出是或升级字样。
2. 线刷E2升级:最复杂的升级方式,需要从公司内网,下载SOC,和MCU升级包到电脑上,MCU版本线刷升级需要把MCU软件包拉到上位机里面,通过E2烧录器,烧录到主机里面,之后soc直接把软件拉到soc上位机里可以直接烧录,刷写完完成后重启。
- 测试点:烧录是否正常,版本中间是否中断,烧录成功后是否正常开机。
SOC:跑系统,管上层软件界面
MCU:管底层硬件电路,电源、CAN、外设
4.13.3.2 面试题:你们集成如何测试,有哪些流程?
面试题:你们集成如何测试,有哪些流程?
集成测试一天基本是一个版本包出来验证,有时候会出两个包验证,验证类型,信号类验证,和非信号类验证,只针对功能验证,人员安排,一个版本正常两个人验证,一个验证信号类,一个验证非信号类,人员缺少的情况下一个人验证一个版本,熟练情况下两个人验证一个版本,一人一个多小时就验证完成,验证完成后还需要验证回归问题,解决版本是哪天的版本包,我们要去验证新版本中缺陷是否已经解决,如果解决了,则关闭BUG,如果没解决,继续转给开发解决。
4.13.3.3 回归 BUG 难点
集成冒烟测试工作中遇到很多问题:回归BUG。
回归BUG为何难测?比如遇到开发修复后的BUG,这个BUG是开发修复后流传过来的,提票的人是专项测试部提的,开发根据提的票修复的,开发修复后的所有BUG都必须先流转到对应车型集成测试,因为集成人员没有测试这专项内容,会遇到很多不会测试的点,需要去找开发或者提票人员去沟通。或者去需求里面搜索(寻找对应的需求)(系统测试是否也这样测回归呢?不需要)。
4.13.3.4 你只做过台架测试吗?
如果你写的专项语音测试,主要在实车8层台架2层。空调座椅测试实车5台架5。
如果你写座舱集成测试:实车验证1层台架9层。
实车验证前:必须台架本地升级一下。
新主板必须线刷升级,新的主板线刷升级是因为要验证PDID,和VIN是否正常刷写成功。
实车验证之前:
- 第一步:必需台架升级
- 第二步:台架升级后必须在台架验证本地升级,正常升级后才能去实车验证(因为有的版本系统升级有问题,直接升级车机后会造成汽车无法再次升级),第二次升级是在屏幕设置里面直接点击升级,第一次升级可以是U盘升级或线刷升级。
4.13.3.5 你们在企业如何拉包?
企业U盘拉包网址:U盘插到服务器电脑主机上面,在我们自己办公电脑上面打开下面对应网址,内网下,会出现下图中界面,从BUILD WITH PARAMETERS里面下载对应安装包,安装包大小1.6个G,下载时间大概4-5分钟一个,一个人有时候下载两个版本,要接近10分钟,早上上班第一时间把U盘放在上面去排队,之后再打免费咖啡,如果先去打印咖啡,后果很严重,打完咖啡回来后你会发现排队7-8个U盘来,正常7-8个U盘要等30-40分钟的,下载到U盘后,拔插到自己CDC主机上买,进入中控工程模式下,进行升级。
4.13.3.6 为何线刷:与 U 盘升级对比
座舱集成冒烟测试每天一个版本,系统测试每周一个版本,集成冒烟线刷升级正常规定每周线刷一次,为的在新版本上验证PDID正常刷写,或者VIN码正常刷写,其他几天是用U盘升级(U盘插入公司服务器下载一个全量包含SOC和MCU)直接插到CDC主机USB上面,进入工程模式里面进行,点击升级就自动识别到了,识别后自动升级,升级结束后自动重启。
集成测试每周发一个版本给系统测试,在发版本前要去实车验证。
系统测试不需要用线刷,直接U盘刷写,他们不进行线刷。
有时候要等版本,为什么等版本。或者有时间一天两个版本,为什么,因为开发处原因,版本在开发时候出现重大问题,开发会延时发送新版本,也是等版本时期,这个时期我们看看日报,喝喝咖啡,摸摸鱼,这是正常的,有时候早上出来版本后,下午还会出一个版本,这个时候就是比较紧急时候,如果你自己感觉测试部过来,要找领导招人,加班到人就是自己多多加班。
集成测试一天一个版本,系统测试一周一个版本,每天200条左右测试任务,200条十包括信号和非信号,只是非信号测试300-400左右,每天工作量。
快速测试方案:只针对有经验者,想要快速测试,就十凭经验测试,之后打开用例核对结果看是否有漏测。
新手测试,要一条一条用例测试,因为不熟悉。
4.13.4 用例维护与编写
4.13.4.1 车型高中低配差异
可以在工程模式配置字里面配置对应的高中低配置。
4.13.4.2 用例维护
什么时候需要维护,需求变更后,用例如果不在适用,就需要维护用例,及时更改测试用例,这一点很重要,用例有错误时,也需要及时更改用例,公司制度管理很重要。
4.13.4.3 什么时候写用例
当出现新需求时,比如应用中心增加了日历表,组长通知我们要写一份日历表测试用例,我们要借鉴其他模块去效仿写对应测试用例。
项目初期,还没有用例,需要根据经验去验证,同时要写出对应用例,如果公司有其他车型用例,也可以申请一份作为写用例借鉴。
4.13.4.4 写用例方式1
首先我们会根据我们的产品提出的需求,然后根据需求去编写我们的测试用例,而且测试用例要覆盖我们的需求,比如我们平时会根据边界值分析,有效等价无效等价,流程法,以及我们用户平时用到的一些场景法来写。
我就说一条语音唤醒的用例吧,在编写用例时,我会写上用例ID,比如ID为语料01。
之后有所属模块,我会写上语音交互模块,还有用例等级,唤醒我们定为1级。
之后有用例标题:标题设置为语音助手的唤醒。
之后是执行步骤:唤醒语料为:你好酷酷。asr(字体识别)同步显示。
预期结果:出现语音弹框,并有语音提示(语音反馈:就是TTS)。成功唤醒语音助手。
下一步是适用环境:比如我们要写上台架环境,还是实车环境,什么环境下测试的,比如我们是台架测试,环境我就会写台架。
还有实际的结果:测试通过为pass,不通过为fail,还有一种是block阻塞,阻塞我们分为两种,一种是环境阻塞,一种是BUG阻塞。
什么时候需要写 / 维护用例(思维导图整合):
- 全新项目没有测试用例 → 无平台化用例,自己部门全写
- 全新项目有平台化用例 → 根据平台化用例差异项修改维护一套该项目用例
- 根据自身测试经验,将容易发现问题的模块及对应操作转换成测试用例
- 将 BUG 转换成测试用例(常规操作出现较多的 BUG)
- 需求变更后需要更改用例;测试过程中发现需求更改或用例不符(写得不对)时,需要修改测试用例
- 无此功能(NA)的用例可更改或删除
测试用例结果判定(思维导图:设备名称):
- PASS:用例通过
- FAIL:用例失败
- BLOCK:环境阻塞 —— 需求不确定、DBC 不满足、测试条件比较苛刻无法满足等,或 BUG 阻塞
- NA:无此功能 —— 用例可更改或删除
我们还会写上执行人:测试的版本,以及日期这些。大概这就是我写用例的详细情况吧。
4.14 每日工作流程与测试前提
4.14.1 企业测试过程中的需求
- 实车验证:比如动态测试,静态测试
- 台架验证:仿真验证,以及系统验证
- 空中升级是OTA升级,本地升级是U盘升级,线刷烧录
4.14.2 集成测试每周发布一个版本给系统测试验证
重点,发布版本前要去实车验证一下集成所有功能。因为系统测试有一半时间在实车验证,我们集成测试在台架验证结果通过,实车不一定全部通过,因为测试环境不同,所以每周发布版本前,必须要去实车验证,版本无异常,发布周版本。这个时间大概2-3小时。
实车测试流程:核心逻辑,集成每周发布版本前,要去实车验证,台架测试功能OK后为何要去实车验证,因为台架测试和实车测试环境不同,台架测试通过未必在实车验证中同样通过,所以每周版本发布前必须去实车验证(点检)一下全功能。
自由测试:就是我们测试人员测试完自己用例后,1个BUG没找到,就开始超越测试,测试其他人的模块,随意测试,无规则测试,根据经验测试,目的也是尽量找到产品缺陷,或者给我们自己找到一些KPI。
测试环境 vs 生产环境(思维导图:设备名称):
- 测试环境(测试 / 演示环境):项目前中期的车辆处于测试环境中,用于测试
- 生产环境:用户的实际使用环境
4.14.3 工作中要求严谨
严重的BUG我们要在群里通报,并且@对应主管,以及负责人。
如果主功能进不了,我们要尽早找开发确认,提票,群里@对应主管,并且找到对应开发,让负责这个模块的开发同事过来现场观察问题,影响版本问题当天就要修复后,再出新版本重新验证,出新版本后测试要完成版本验证,给出版本验证结果。
4.14.4 测试人员每天流程
每天验证版本去公司当天测试表格中看,表格中有对应日期以及版本升级路径,根据路径下载当天测试版本号,用U盘插入服务器主机上排队下载,一个包2.5G左右,下载一个要4分钟前后,9点上班,快的时候会在半小时下载介绍,慢的时候会在一小时内下载介绍,早上上班免费咖啡先来一杯雀巢,版本下来后,给中控主机CDC进行版本升级,升级需要20分钟左右,喝咖啡。
4.14.5 集成冒烟测试模块
多媒体,蓝牙电话,用户中心,消息中心,车设车控,语音交互,地图导航,空调,座椅,仪表,天气,全局搜索,输入法,日程日历,图库管理,安全优化,主交互,音频策略,情景模式,工程模式,本地升级,多屏互动,无线充电,DVR(行车记录仪),DMS疲劳检测,AVM(全景影像),CarPlay(苹果手机互联车机),电子手册,系统设置,电源管理,我的壁纸。
4.14.6 信号类与非信号类
信号类:车设车控,空调,座椅,仪表,情景模式,无线充电,DVR,DMS,AVM。
非信号类:多媒体,蓝牙电话,用户中心,消息中心,语音交互,地图导航,天气,全局搜索,输入法,日程日历,图库管理,安全优化,主交互,音频策略,工程模式,本地升级,多屏互动,CarPlay(苹果手机互联车机),电子手册,系统设置,电源管理,我的壁纸。
4.14.7 工作流程(早上9点钟上班)
我们会在8.50左右到公司钉钉打卡,到公司后先是打开车机以及电脑,我们是一天一个版本,早上我们会排队用U盘下载版本,我们有一个主机,把U盘插入到主机里,从公司内Jkenis网址中存放版本位置,把版本下载到U盘中,大概3分钟左右把,(或下载到电脑本地后U盘连接到车机后电脑通过connect+ip连接车机后通过adb push命令推送到U盘里面-非正规操作容易泄露机密需要权限仅限了解)之后把u盘插入我们台架车机上,中控会识别到新版本提示是否升级,我们直接升级,这个过程大概半个小时左右吧,升级完成后,我们就根据我们的测试用例进行测试,上午一般测试信号类,下午一般测试非信号类,测试过程中我们会有测试用例进行全面测试覆盖,在测试过程中我们会在缺陷管理平台jira上提票,如果用例测试没有测出bug版本相对稳定,之后有时间我们会进行adb monkey稳定性测试,或者信号类报文信号性能压测用canoe或者tsmaster循环进行信号类压测。在测试过程中遇到bug我们会及时打手机记录下来发生的现场情况,记录下来时间作为提票依据,我们先把主机和电脑通,之后我们会用公司一键抓取车机日志提票到jira平台的时候作为附件,下午有时间我们会去查看下开发进展到哪里了,追踪一下bug状态。接近下班时候我们会根据当天测试内容把结果发群里,并且把当天测试内容一邮件格式发给对应的负责人。
4.14.8 领导负责人
集成人员(12个测试人员,3个测试SF5海外版本,4个测试HM5海外版本,4个测试HM7海外版),小组长(协助我们的),主管(他有自己的事,平时不沟通),软件开发主管(负责开发工作的,遇到软件A级bug要在群里@他,他要第一时间知道并且跟踪),项目经理(负责整个项目的进度)。
集成部门:12个测试人员,1个管理人员(负责项目人员安排其它杂货),3个项目的集成工程师共3人(职责就是负责软件版本集成,通知测试测试,和项目经理与软件经理沟通版本情况),1个科室主任(职责负责这个部门的统筹管理)。
4.14.9 测试前提条件
电脑,台架装备或者实车,测试用例,DBC文件,通信矩阵表,can盒子以及软件,台架针脚定义图,网络拓扑图,公司人员架构表。
根据公司配置的任务正常是组长发放:比如测试问界m5项目,智能座舱验证集成项目,一天一个集成版本验证。
组长会下发对应,台架装备或者实车,测试用例,DBC文件,通信矩阵表,can盒子。
我们拿到相关集成资料后,开始搭建台架,调通。
开始自我安排测试任务:每天验证一个版本。
之后,我们就开始从公司下载升级包到U盘,给主机升级到最新版本。
之后开始根据用例跑用例。
4.14.9.1 用例分为两种
一种是信号类复杂测试,需要加载很多前置条件,比如,空调,座椅,仪表,设置车身车况(车辆控制),辅助驾驶,能量管理,车辆模式,场景辅助。
二种是非信号类测试,就是点点点,验证能否实现,比如多媒体,蓝牙,地图,APP软件,T-BOX。
4.15 升级方式与版本管理
我们升级方式分为3种:
升级包分为SOC和MCU。
整包包括上面两种:用于U盘升级。
线刷升级要分开线刷升级,分包也可以U盘升级。
4.15.1 线刷升级
最前端测试:集成开发合成包后,第一个测试流程团队,就是最前端,取名叫做:集成测试(冒烟测试),要测试线刷升级,我们每周发布一个周版本给系统测试,这个版本必须要经过我们线刷验证,目的也是测试线刷是否能成功,每周验证一次。(上周外发的周版本→升级到本周需要外发的周版本)--原因是U盘升级没有问题,线刷后版本出现无法使用的情况。
比较复杂的点是:线刷要单刷SOC包,和MCU包,线刷包要从公司平台拉到自己电脑上,见下图。
线刷之前:要拉包,从哪拉?公司平台,见下图1,每天日报中也会有下载包的地址,见下图2。


线刷升级:要把CDC和MCU版本单独从公司内网平台下载网址处下载到电脑上:然后用E1和E2烧录
器单独烧录MCU(见下图1),SOC线刷直接用双头USB通过上位机直接刷机(见下图2)
以下是MCU上位机(下图4)
在刷MCU在上位机之前,要先进行连接,怎么个连接法?要用E1或者E2硬件连接到电脑和对应的主
机上面
刷MCU流程:
- 第一条,主机要根据下面图5接上跳帽线,形成主版短路
- 第二条,图3要接到主版上后面,形成和E1对接刷写接口
- 第三条,用E1和图3接出来的接口进行连接
- 第四条,用电脑上打开图4上位机,把电脑上下载的MCU包拉进去,进行刷写

以下是CDC上位机
刷CDC流程:
- 用双头USB线连接到车机CDC智能座舱主机和电脑(上图2)
- 打开下图中上位机软件(上位机只是一个统称而已,车企自研上位机主要是方便企业,快速刷机,或者智驾过程中看到想要的一些数据)把电脑上已经下载到的CDC数据包拉到上位机里面,进行烧录刷写。

刷写时候,经常会遇到刷写失败。失败原因,更多是流程步骤没搞对,也有软件版本有问题,底层开发写的代码接口不对
4.15.2 U盘升级
整包升级(包裹CDC和MCU),最常用刷机方式,早上把U盘放在服务器旁边排队,下载当天要测试的版本包,升级时候流程:插入带有版本包的U盘到CDC主机,进入车机IVI工程模式,会出现弹窗,弹窗信息:检测到最新版本,是否要升级,点击升级后进入升级模式。
U盘升级前提条件:先进入工程模式,才有U盘升级,也就是本地升级。
进入工程模式条件:每家不同,M5设置左边功能栏目最下面,系统点击10次进入工程模式。

U盘升级流程:插入带有最新版本包的U盘,在工程模式中,系统会自动检测U盘中新版本,会弹出新版本立即安装的弹框,见上图。
4.15.3 OTA升级
实车时,系统已经非常完善,才有这个功能,台架没有OTA升级,只有实车。
要进入OTA升级阶段的车:才能OTA升级。
U盘升级是整包升级,整包包含了MCU和CDC,u盘直接插入车机USB,工程模式中会弹出提示:是否升级,跟手机一样。
台架上面放置的ECU就是:华为智能座舱主机叫做CDC。
CDC主机内部有两个板子,一个主板是骁龙8155芯片的CDC系统升级到这个芯片内。
这个芯片内的升级版本就是取名CDC。
还有一个就是MCU板子:负责一些车灯雨刮之类小模块的。
CDC包名和MCU企业包名:
- CDC版本:CDC_7901301-RA19_SW2.12.B_240930_2435_03
- MCU版本:MCU_7901301-RA19_SW2.12.B_240930_2435_00
下面图片是拉包地址:

4.15.4 Jenkins拉包
下图中是企业服务器拉包的网址:U盘插入服务器电脑上,下3
图中:是进入公司拉包网址,找到当天主线版本,点击开始构建,3-4分钟下载到U盘中,大小2.5G左右。
U盘下载的包是整包:包裹CDC和MCU。

jenkins链接操作步骤:
- 点击 build with parameters
- 输入要查询的版本号,支持模糊匹配
- 点击空白处,展示搜索结果
4.15.5 工程模式与配置
4.15.5.1 工程模式
问界M5点击设置中左边栏目最后:系统10下进入工程模式。
工程模式所有的后台都在这里操作:
工程模式中有:
- 本地升级
- 系统信息
- DMS离线激活
- 功能测试
- ADB模式
- DEVELOPER
下图中有配置字可以配置车型的高中低配置。
一切后台都可以在工程模式进行。
本地升级:U盘升级前提条件在工程模式中。
点击本地升级,会检测到升级包,点击就自动会升级。
工程模式其他功能:
- PDID,VIN手动输入
- 时间窗口设置
- Crash设置开关:在工程模式中有这个开关,打开后遇到APP或者其他系统崩溃错误会直接报错误见下图一。
以下是软件崩溃错误,会跳出来的提示。
- 修改配置字:车辆高中低配置,在线刷之后,全部调成高配置。
- 配置安全证书:配置后才能登录账户。
4.15.6 PDID/VIN写入
4.15.6.1 PDID 未录入的处理
PDID = Product Device ID,产品设备唯一标识号。
车机/T-BOX 有序列号,每一台整车/车机硬件有独立 PDID,用于车联网 TSP 平台鉴权、设备认证、激活联网服务。
报错含义:
PDID未录入,请录入后重试:车机本地存储里没有写入合法 PDID 序列号,TSP 后台识别不到本机设备,网络服务、账号登录、车联网功能直接拦截,弹出该提示。
发生场景:
- 新整机产线出厂:产线诊断工具没有把 PDID 烧写到车机存储,工厂漏烧录;
- 维修更换车机主机:更换全新 HU 主机,维修工位未重新刷入原车 PDID;
- 刷机、恢复出厂、烧写镜像:全量刷写固件把 PDID 分区清空;
- 存储分区异常,PDID 数据丢失;
- T-BOX 与 HU 车机 PDID 不匹配。
4.15.6.2 线刷升级后的校验
要在工程模式中配置对应的PDID,以及VIN码。
一、账号的测试
1. vin\pdid的写入:
- VIN码(车架号:在车窗前挡风左下角、外面观看(主驾前面)):LM8C7C594RAS00068
- PDID码:SKEV0005000102202402200220000551(手动输入):0x53 0x4b 0x45 0x56 0x30 0x30 0x30 0x35 0x30 0x30 0x30 0x31 0x30 0x32 0x32 0x30 0x32 0x30 0x32 0x34 0x30 0x32 0x32 0x30 0x32 0x30 0x32 0x30 0x30 0x35 0x35 0x31
线刷升级后:系统重置了,必须要进行写入,VIN码和PDID,不然登录不了账户,登录不了账户很多东西测试不了,DMS和账户都无法验证。
线刷升级后,必须要重新配置:配置字,见上图。
VIN码PDID如何写入:
- 使用canoe诊断写入,或者从工程模式手动输入,我都是手动输入(不用借设备)
- 进入工程模式-->Developer-->点击修改VIN/PDID-->修改后点击确认
- 写入后:断电重启主机
下面黄色了解就好:
输入完后,还需要以下步骤配置安全信息配置:
进入工程模式-->Developer-->安全证书配置-->点击导入海外PROD CA-->点击生成P10-->点击申请证书(成功)-->点击测试TSP连接(连接成功)
注意:第一次申请证书一般会失败,这个时候只需要点击注销证书,再重新生成P10。申请证书就能申请成功:申请成功后就能登录账户了,以及测试账号类东西。
- 点击头像,同意授权,找SF5的测试负责人拿红米手机,使用SERES软件登录写入VIN和PDID的账号,用手机号扫码登录。
手机登录账号:13882259103,验证码:666666。
在台架测试阶段,用户账户都是公司后台平台人员加入得 身份信息,需要拿到对应工作手机进行扫码登录。
4.16 日志管理与 BUG 提票
三种日志导出方法。
4.16.1 U盘导出日志
在工程模式中,关闭ADB开关。
插入U盘可以直接点击导出日志,导出的日志和一键抓取的日志一样。
日志可以几种形式导出:1. U盘在工程模式下导出,IVI或者CDC系统日志,TBOX日志。


4.16.2 脚本一键抓取日志
连接好ADB后,脚本一键抓取日志:(组长同事哪里获取),遇到BUG后,我们一键抓取日志后,我们要一键清空下日志,内部日志一直在录制,2小时大概能达到500M-1G。

4.16.3 adb logcat
adb logcat > 桌面路径。
抓日志的 4 种方式(思维导图:设备名称):
- U 盘导日志
- adb 脚本导日志
- adb logcat 导日志
- 使用工具(CANoe、周立功等)抓报文
总线日志录制方式对比(思维导图:总线日志的录制):
| 工具 | 录制方式 | 录制范围说明 |
|---|---|---|
| 同星(TSMaster) | 总线记录中点击"开始录制" | 从点击开始到点击结束这一时间段的总线上所有日志信息 |
| 同星(TSMaster) | 在线回放 | 类似压测——可录制实车 / 台架上的操作,通过在线回放方式模拟回放之前的操作 |
| CANoe | logging 窗口录制 | 从点击开始到结束这一时间段的日志 |
| CANoe | 从 trace 里直接用 export 导出 | 工具打开到点击导出这段时间的所有总线日志(前提是中途没有删掉日志) |
| 周立功(ZCANPRO) | 保存 | 工具打开到点击保存这一段时间的所有日志 |
| 周立功(ZCANPRO) | 实时保存 | 从点击实时保存到结束这一时间段的日志 |
4.16.4 BUG提票模板
4.16.4.1 BUG 提票时机与流程
找到BUG就提票到缺陷管理平台。
有的公司用,禅道,jira,和一些不知名的软件,以及自研。
详细内容见禅道缺陷管理平台。
规格如下:提票需要有公司人员模块表(找对应开发)。
一:提BUG模板(核心)
标题:【集成】【wifi】链接wifi失败
版本信息:主线NS阀:刷机时候刷那个版本,提票时候版本信息就写那个版本
SOC版本:CDC_7901301-RA19_SW2.12.B_220930_2435_03
MCU版本:MCU_7901301-RA19_SW2.12.B_220930_2435_00
硬件版本:
c样件
环境信息:
台架
预置条件:
1.KL15 ON
2.空调界面已展开
3.空调处于打开状态AC_ctrlFeedback: ac_systemOnOffSts =0x1: ON
4.自动模式处于关闭状态AC_ctrlFeedback: ac_autoStatus=0x0:OFF
操作步骤:
点击自动按钮
实际结果:
未下发信号
预期结果:
IVI发送3帧信号"ivi_hvacAutoModeReq =0x1: KEY_PRESS",然后周期发送ivi_hvacAutoModeReq =0x0: INVALID
出现概率:
失败率30%左右
问题时间:
2025/5/28 09:34:28
备注:无
log/及附件【图片,视频】:关BUG模板:
BUG关闭标准
【验证版本】
SOC版本:CDC_7901301-RA19_SW2.12.B_240909_2435_00
MCU版本:MCU_7901301-RA19_SW2.12.B_240909_2435_00
【验证环境】
台架
【验证结果】
Pass
【处理结果】
关闭
【验证次数】
10次
【备注】
无激活bug模板:
【验证版本】
SOC版本:CDC_7901301-RA19_SW2.12.B_240909_2435_00
MCU版本:MCU_7901301-RA19_SW2.12.B_240909_2435_00
【验证环境】
台架
【验证结果】
Fail
【处理结果】
激活(打开)
【验证次数】
根据bug偶现还是必现写,必现就1次,偶现5-10次
【备注】
log/及附件【图片,视频】:
无提票时候:那个模块的BUG就提给那个负责人。

测试结束后,要有测试数据。
4.16.4.2 JIRA 提 BUG 流程(ECARX-JIRA)
图片素材/jira提BUG流程.png该长截图包含 JIRA 登录页、创建问题表单、缺陷详情页、问题跟踪及关闭界面、BUG 管理流程图等,建议在下方标注【图】的位置手动插入对应截图片段。
参考视频:【软件测试】jira 的使用教程(B 站)。
一、账号登录
- 需要公司申请 JIRA 账号(ECARX-JIRA)
- 登录 ECARX-JIRA 后选择对应项目进入
二、建票(创建问题)


创建问题表单关键字段:
| 字段 | 说明 |
|---|---|
| bug 描述 / 复现步骤 | 问题具体描述与复现路径 |
| bug 等级 / 分类 | 缺陷严重等级、缺陷分类 |
| bug 出现频率 | 偶现 / 必现及概率 |
| 测试方 / 测试阶段 | 测试归属 |
| 测试车辆环境 | 台架 / 实车 |
| 上传日志、视频 | 必须附 log 与视频 |
| 系统版本 | SOC / MCU 版本 |
| Responsible Project * | 责任项目 |
| Affected Projects | 受影响项目 |
| Platform * | 平台 |
| ECU * | 涉及 ECU |
| Function * | 功能 |
| Risk Factor * | 风险等级:R1=Legal、R2=Major、R3=Minor、R4=Insignificant、Risk not known yet(需按 SWIM 指南填写,反映实际风险,不是升级途径) |
| Test Environment * | Vehicle |
| Test Object ID * | 测试对象 |
| Test Level * | SYSTEM |
| Found in Serie | 根据 SW plan 找到问题所属系列(NPDS 定义),需填 Found in series 或 Found in Baseline |
| Suppliers | 该 SWI 需要共享的供应商,指定后可查看和编辑该 SWI |
| Customer Impact | 对终端客户的潜在影响 |
| SW Part no * | 软件零件号 |
| Test Case ID | System Weaver 中的用例引用 |
| Test Site | 测试地点(Supplier 负责测试时选 External) |
| Diagnostic Trouble Code | 出错时存在的 DTC 列表,如 25001C |
| Fail Class / System Instability | 失效类别 / 系统不稳定 |
| 附件 / Additional Access Groups | 附件上传、附加访问组 |
描述内容规范:
bug 标题:【项目名称】【模块】问题具体的简要描述
例如:【H11】【设置】HUD按钮回弹
bug 具体描述:【前提条件】+【测试步骤】+【实际结果】+【预期结果】+【出现概率】+【问题发生时间】+【测试版本】+【复归操作】bug 具体描述示例(蓝牙通讯录同步问题):
【前提条件】
1. UsageMode=Driving, CarMode=Normal
2. 手机已与车机配对连接,手机端已授权通讯录权限
(需要加入一个实际存在的网络,不能实际都没有这个网络,那弹出的就是无法找到网络)
【测试步骤】
1. 反复打开/关闭手机或车机蓝牙开关
【实际结果】
无法正常同步
【预期结果】
1. 能正常自动同步联系人和通话记录
【出现概率】
100%(5/5)
【问题发生时间】
11:40(问题发生时车机端的时间)
【测试版本】(车机系统的版本,从工程模式可查看)
AP: unknown 20821
VP: unknown 01600
Visteon: unknown GER3808
【复归操作】
针对黑屏,卡死等问题缺陷详情页:包含类型、标签、经办人、报告人、安全级别(Suppliers and Responsible projects members 等)、General Information(Responsible Project、Affected Projects、Platform、ECU、Function)、Test Information、创建日期 / 已更新等。附件区需上传 log(如 log_2026-02-12_15,255.28 MB)与视频(如 video(46).mp4)。
提票原则:哪个模块的 BUG 就提给哪个负责人。
三、问题跟踪及关闭

- 查看待处理问题:通过“分配给我尚未完成的”筛选待处理问题
- 确认问题状态:问题状态为 resolved(已解决,暂未切换状态到测试)和 ready for test(已解决,已切换状态到测试)的问题安排验证关闭
- 支持导出 CSV(当前显示的字段)等
四、BUG 管理流程(状态流转)

状态流转总览:
- NEW(新建 bug):测试人员提交 bug,进入 NEW 状态,流转到Analysis(待分析),由开发 / 负责人评估问题。
- Analysis(问题分析)
- 判断不是 bug:流转Rejected(开发拒绝),可进一步取消
Cancelled; - 需要再核实:流转Under observation(待观察);
- 需要供应商处理:流转
Supplier inbox→Supplier in progress供应商开发处理; - 内部修复:进入
Solution identified确定修复方案。 - 修复阶段:方案确定后,bug 修复完成,进入Solved(已解决)。
- 回归测试:Solved 流转到Ready for test(待回归测试),测试做验证:
- ✅验证通过:流转Closed(关闭),bug 闭环;
- ❌回归不通过:流转Reopened(重新打开),退回重新分析修复;
- 缺少测试条件:进入
Testing on hold(测试暂停); - 判定为 bug 但暂不修复:标记维持现状。
- Reopened 重开:回归失败激活 bug,可以退回分析、供应商、待观察、拒绝等各个前置环节,重新走处理流程。
- 终态:
Closed关闭、Cancelled取消、维持现状,三种为 bug 最终结束状态。
状态转换操作明细表(责任人 / 时限 / 条件 / 操作动作):
| 序号 | 转换 | 责任人 | 时限(工作日) | 条件 | 操作动作 |
|---|---|---|---|---|---|
| 1 | New → Analysis | Issue owner | 1 | 确认是软件问题,并确认问题责任人 | 点击 “To Analysis”,将问题分配给 Issue owner |
| 2 | New → Rejected | Issue owner | 1 | 确认不是软件问题(已创建相同问题或缺少必要数据) | 点击 “To Rejected”,取消问题 |
| 3 | Reject → New | Tester | 2 | 已补充必要的测试文件 | 点击 “Back to New” |
| 4 | Analysis → Supplier inbox | Issue owner | 2 | 确认是软件问题 | 点击 “To Supplier inbox”,将问题分配给供应商 |
| 5 | Analysis → Under observation | Issue owner | 2 | 确认是偶发问题,无法复现,缺少 log | 点击 “To Under Observation”,持续观察 |
| 6 | Under observation → Analysis | Issue owner | 2 | 问题复现,有新的数据加入可以分析 | 点击 “To Analysis” |
| 7 | Analysis → Rejected | Issue owner | 2 | 确认不是软件问题(已创建相同问题或缺数据) | 点击 “To Rejected” |
| 8 | Rejected → Analysis | Tester | 2 | Tester 已补充必要的测试文件 | 点击 “Back to Analysis” |
| 9 | Analysis → New | Issue owner | 1 | 确认不是自己的问题 | 点击 “Back to new” |
| 10 | Supplier inbox → Supplier in Progress | Supplier | 1 | 供应商确认是问题并开始分析解决问题 | 点击 “To Supplier in Progress” |
| 11 | Supplier inbox → Analysis | Supplier | 1 | 供应商确认不是问题 | 点击 “Back to analysis” |
| 12 | Supplier in Progress → Solution Identified | Supplier | 2 | 分析问题原因,给出整改方案及计划 | 点击 “To Solution identified” |
| 13 | Solution Identified → Supplier in Progress | Supplier | 1 | 整改方案不合理 | 点击 “Back to Supplier in Progress” |
| 14 | Supplier in Progress → Analysis | Supplier | 3 | 供应商分析不是自己产品的问题 | 点击 “Back to Analysis” |
| 15 | Solution Identified → Solved | Supplier | 1 | 供应商修改软件并验证后上传 bug,可切换到 Solved 状态 | 点击 “To Solved” |
| 16 | Solved → Ready for test | 整改样件提交后 Issue owner | 1 | 认可供应商解决方案并提交复现样件到测试 | 点击 “To Ready for test” |
| 17 | Solved → Reopened | Issue owner | 2 | 不认可供应商的解决方案 | 点击 “To Re-open” |
| 18 | Re-open → Supplier inbox | Issue owner | 2 | 复测仍然有问题 | 点击 “To Supplier inbox”,将问题再次分配给供应商 |
| 19 | Ready for test → Closed | Tester | / | 测试没有问题 | 点击 “To Closed” |
| 20 | Ready for test → Reopened | Tester | / | 测试仍然有问题 | 点击 “To Re-open” |
| 21 | Under Observation → Rejected | Issue owner | / | 问题发现后再测试两个 E 段,且发现不是问题 | 点击 “To Rejected” |
| 22 | Rejected → Cancelled | Tester | 2 | 问题重复或不是软件问题 | 点击 “To Cancelled” |
| 23 | Analysis → Solved | Issue owner | 3 | 分析问题原因,给出整改方案和计划 | 点击 “To Solved” |
| 24 | Ready for test → Testing on hold | Tester | 1 | 不满足测试条件,或偶发问题已有兜底方案但需持续观察(测试样件或测试环境不满足) | 点击 “To Testing on hold” |
| 25 | Testing on hold → Ready for test | Tester | / | 满足测试条件,或持续观察结束 | 点击 “To ready for test” |
| 26 | Ready for test → Solved | Tester | 1 | 实际软件未提交变更却切换了 RFT 的情况下,通过此状态打回 Solved | 点击 “To solved” |
| 27 | Ready for test → 维持现状 | Tester | 3 | 实际该问题已经在项目内部经过决策不整改、偏离接受,且已有会议纪要 | 点击 “to 维持现状” |
| 28 | Rejected → 维持现状 | Tester | 3 | 实际该问题已经在项目内部经过决策不整改、偏离接受,且已有会议纪要 | 点击 “to 维持现状” |
| 29 | 维持现状 → Reopened | Tester | / | 已偏离问题通过市场售后反馈,决策需要再整改 | 点击 “to reopened” |
原则:
- 测试人员每天需关注自己名下处于 3/4 阶段的问题,如果无法验证 / 无法流转,需要备注清楚
- Testing On Hold:主要针对不满足测试条件,或偶发问题已有兜底方案但需持续观察(测试样件或测试环境不满足)
- 维持现状:实际该问题已经在项目内部经过决策不整改、偏离接受,且已有会议纪要
五、BUG 处理原则
1. 偶发问题关闭压力测试次数要求:按照问题发现时的发现概率,执行双倍次数测试。
2. 偶发问题解决供应商压力测试次数要求:根据供应商内部分析概率,执行双倍次数测试。
3. Rejected 问题关闭(cancel)流程约束:
对于 rejected 的问题,只有以下两类可以走 cancel 流程关闭:
- ① 确定是重复且非第一个提出的问题
- 注:如果与该问题重复的是一个已经关闭的问题,且问题仍然存在,则需判断原关闭问题是否已经过项目和质量偏离:如已偏离则 cancel 此问题;如未偏离则保留此问题
- ② 确定是非有效问题的问题
针对其他如 log 不全问题、偶发问题、需求偏离接收的问题、让步接收的问题,均按照 close 流程关闭。从 rejected 状态切换到 cancel 状态时,需要按照实际情况选择 cancel reason。后续 cancel 率统计将以非有效问题的 cancel 问题进行统计,所以需要准确填写。
4. CID 类问题:如果测试与开发不能达成一致意见,可以通过参考标杆项目的表现来确定是否可以关闭(close 或 cancel)。如果标杆项目(重点项目,且累计销量已超 10W)的表现与问题中的描述一致,且没有此类问题的投诉,那么可以关闭此问题。
5. 系统不整改关闭类(R1/R2)问题管理要求:

4.16.5 邮件与群发布
4.16.5.1 邮件发布
邮件下面发邮件格式:
【SE OS 智能座舱软件平台项目】【集成测试】【2025/08/25】Daily 集成测试结果
Hi all
【SE OS 智能座舱软件平台项目】【集成测试】结果如下,附件为本次版本2025/08/25 集成测试结果,请查收
1.版本信息:(如下例)
CDC版本:CDC_7901301-RA19_SW2.12.B_250825_2435_03
MCU版本:MCU_7901301-RA19_SW2.12.B_250825_2435_00
测试结果:
邮件发完后,也要把对应的当天测试结果图片发微信群里面。
4.16.5.2 群发布测试结果
集成测试09/29daily版本测试结果
(同上面的测试结果汇总表格截图)