乐于分享
好东西不私藏

09-1 软件测试基础与测试方法(上)

09-1 软件测试基础与测试方法(上)

📌 本篇你将学到

  • 软件测试的基本概念和原则
  • 测试级别(单元/集成/系统/验收)
  • 黑盒/白盒/灰盒测试方法
  • 功能测试 vs 非功能测试

📖 下集预告:测试用例设计方法、缺陷管理


一、软件测试基础

1.1 什么是软件测试?

软件测试:为了发现错误而执行程序的过程

目的:以最少的时间和人力,找出软件中潜在的各种错误和缺陷

简单理解:

软件测试 = 给软件"找茬"

测试不是证明软件没错,而是找出错误!

1.2 为什么要测试?

结论:越早测试,成本越低!

1.3 测试的基本原则


二、测试级别(V 模型)

2.1 汽车软件开发的 V 模型

说明:左侧是"开发",右侧是"测试",每个开发阶段都有对应的测试阶段!

各测试级别详解

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

2.2 汽车电子测试层级

说明:从下到上,真实度递增,成本递增,灵活性递减。越早的测试层级,成本越低!

各测试层级详解

层级名称测试对象测试环境优点缺点
层级 1MIL 模型在环Simulink 模型PC 上的模型仿真• 最早发现设计问题
• 成本最低
• 灵活性最高
• 不反映代码实现
层级 2SIL 软件在环生成的代码PC 上运行代码• 验证代码逻辑
• 无需硬件
• 快速迭代
• 不反映目标硬件特性
层级 3PIL 处理器在环目标代码目标 MCU 运行• 验证编译器
• 验证处理器特性
• 需要硬件
层级 4HIL 硬件在环真实 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→实车,越早成本越低
黑盒/白盒黑盒看功能,白盒看代码,灰盒结合
功能/非功能功能测试"做什么",非功能测试"做得怎么样"

🎯 行动建议

  1. 理解 V 模型:每个测试级别对应什么开发阶段
  2. 掌握测试方法:黑盒/白盒/灰盒的区别和应用场景
  3. 理解测试层级:MIL/SIL/HIL 的区别和用途
  4. 学会分类测试:功能测试和非功能测试的侧重点

📖 下集预告

09-2 软件测试基础与测试方法(下)

  • 等价类划分:如何用最少用例覆盖最多场景?
  • 边界值分析:为什么边界最容易出错?
  • 状态转换测试:如何测试状态机?
  • 缺陷管理:如何写一份优秀的 Bug 报告?

💡 思考题(带着问题学习下集):

  1. 如果有 100 个输入值,你需要测试多少次?等价类划分能减少到几次?
  2. 为什么边界值最容易出错?你能想到哪些边界错误的例子?
  3. 发现 Bug 后应该如何记录和跟踪?

📅 更新时间:2026 年 3 月 20 日
📁 本系列文章持续更新中,关注下集…