📌 本篇你将学到:
- 软件测试的基本概念和原则
- 测试级别(单元/集成/系统/验收)
- 黑盒/白盒/灰盒测试方法
- 功能测试 vs 非功能测试
📖 下集预告:测试用例设计方法、缺陷管理
一、软件测试基础
1.1 什么是软件测试?
软件测试:为了发现错误而执行程序的过程
目的:以最少的时间和人力,找出软件中潜在的各种错误和缺陷
简单理解:
软件测试 = 给软件"找茬"

测试不是证明软件没错,而是找出错误!
1.2 为什么要测试?

结论:越早测试,成本越低!
1.3 测试的基本原则

二、测试级别(V 模型)
2.1 汽车软件开发的 V 模型

说明:左侧是"开发",右侧是"测试",每个开发阶段都有对应的测试阶段!
各测试级别详解
| 测试级别 | 对应开发阶段 | 测试对象 | 测试内容 | 执行者 | 工具 |
|---|---|---|---|---|---|
| 单元测试 | 软件设计/详细设计 | 最小软件单元(函数、方法、类) | • 函数输入输出是否正确 • 边界条件处理 • 异常处理 | 开发人员(白盒) | 单元测试框架(如 GoogleTest) |
| 集成测试 | 子系统设计 | 多个单元组合后的交互 | • 模块间接口是否正确 • 数据传递是否正确 • 时序配合是否正确 | 测试人员 | CANoe、测试台架 |
| 系统测试 | 系统设计 | 完整的系统(软硬件结合) | • 功能是否满足需求 • 性能是否达标 • 可靠性、安全性 | 测试人员 | HIL 台架、实车 |
| 验收测试 | 需求分析 | 完整的产品(整车) | • 是否满足用户需求 • 是否满足法规要求 • 是否可以交付 | 客户/最终用户 | 路试、冬季测试、高温测试 |
2.2 汽车电子测试层级

说明:从下到上,真实度递增,成本递增,灵活性递减。越早的测试层级,成本越低!
各测试层级详解
| 层级 | 名称 | 测试对象 | 测试环境 | 优点 | 缺点 |
|---|---|---|---|---|---|
| 层级 1 | MIL 模型在环 | Simulink 模型 | PC 上的模型仿真 | • 最早发现设计问题 • 成本最低 • 灵活性最高 | • 不反映代码实现 |
| 层级 2 | SIL 软件在环 | 生成的代码 | PC 上运行代码 | • 验证代码逻辑 • 无需硬件 • 快速迭代 | • 不反映目标硬件特性 |
| 层级 3 | PIL 处理器在环 | 目标代码 | 目标 MCU 运行 | • 验证编译器 • 验证处理器特性 | • 需要硬件 |
| 层级 4 | HIL 硬件在环 | 真实 ECU + 仿真环境 | 实时仿真机模拟车辆 | • 真实硬件测试 • 可模拟危险场景 • 可重复测试 | • 设备昂贵 • 搭建复杂 |
| 层级 5 | 实车测试 | 整车 | 试验场/公路真实环境 | • 最真实的环境 • 发现系统集成问题 | • 成本高 • 风险高 • 难以重复 |
测试金字塔

越早的测试层级,测试用例越多,成本越低!
三、测试方法
3.1 黑盒/白盒/灰盒测试

三种测试方法对比
| 特性 | 黑盒测试 | 白盒测试 | 灰盒测试 |
|---|---|---|---|
| 定义 | 不考虑内部实现,只测试输入输出 | 基于内部代码结构的测试 | 黑盒 + 白盒的结合 |
| 了解代码 | ❌ 不需要 | ✅ 需要 | ⚠️ 部分 |
| 测试重点 | 功能 | 逻辑 | 功能 + 逻辑 |
| 执行者 | 测试人员 | 开发人员 | 测试人员 |
| 测试阶段 | 系统测试 | 单元测试 | 集成测试 |
| 覆盖率 | 低 | 高 | 中 |
| 常用方法 | • 等价类划分 • 边界值分析 • 错误推测法 | • 语句覆盖 • 分支覆盖 • 路径覆盖 | • 基于接口的测试 • 基于数据库的测试 |
| 汽车电子示例 | 测试车窗升降: 按上升键→车窗上升 | 测试 if-else 所有分支 测试循环边界条件 | • 知道 ECU 用 CAN 通信 • 知道有状态机,测试状态转换 |
3.2 功能测试 vs 非功能测试

功能测试示例
| 功能 | 测试内容 | 验证点 |
|---|---|---|
| ACC 自适应巡航 | 设定车速后自动跟车 | • 前车减速时是否自动刹车 • 跟车距离是否合适 • 加速/减速是否平顺 |
| 自动泊车 | 识别车位并泊车入位 | • 是否能识别车位 • 是否能正确泊车入位 • 遇到障碍物是否停止 |
非功能测试示例
| 测试类型 | 测试内容 | 示例指标 |
|---|---|---|
| 性能测试 | 响应时间、吞吐量、资源占用 | 中控屏触摸响应 < 100ms |
| 可靠性测试 | 长时间运行是否稳定 | 连续运行 72 小时无崩溃 |
| 安全性测试 | 是否符合功能安全标准 | ISO 26262 ASIL 等级验证 |
| 兼容性测试 | 不同硬件/软件版本是否兼容 | 不同手机互联是否正常工作 |
| 环境测试 | 高低温、湿度、振动等 | -40°C~85°C 正常工作 |
| EMC 测试 | 电磁兼容性 | 不干扰其他电子设备 |
四、本章小结(上)
📝 核心知识点
| 知识点 | 关键内容 |
|---|---|
| 测试原则 | 7 大原则(穷尽测试不可能、早期测试、缺陷集群性等) |
| V 模型 | 单元→集成→系统→验收,每级对应开发阶段 |
| 测试层级 | MIL→SIL→PIL→HIL→实车,越早成本越低 |
| 黑盒/白盒 | 黑盒看功能,白盒看代码,灰盒结合 |
| 功能/非功能 | 功能测试"做什么",非功能测试"做得怎么样" |
🎯 行动建议
- 理解 V 模型:每个测试级别对应什么开发阶段
- 掌握测试方法:黑盒/白盒/灰盒的区别和应用场景
- 理解测试层级:MIL/SIL/HIL 的区别和用途
- 学会分类测试:功能测试和非功能测试的侧重点
📖 下集预告
09-2 软件测试基础与测试方法(下)
- 等价类划分:如何用最少用例覆盖最多场景?
- 边界值分析:为什么边界最容易出错?
- 状态转换测试:如何测试状态机?
- 缺陷管理:如何写一份优秀的 Bug 报告?
💡 思考题(带着问题学习下集):
- 如果有 100 个输入值,你需要测试多少次?等价类划分能减少到几次?
- 为什么边界值最容易出错?你能想到哪些边界错误的例子?
- 发现 Bug 后应该如何记录和跟踪?
📅 更新时间:2026 年 3 月 20 日
📁 本系列文章持续更新中,关注下集…
夜雨聆风