一、嵌入式测试概述
大家好,我是老张。在嵌入式这行摸爬滚打了十几年,今天咱们来聊聊嵌入式测试的那些事儿。
很多人觉得嵌入式测试就是「点点板子,看看灯亮不亮」。说实话,我刚入行时也这么想。直到有一次,一个简单的温控项目,因为测试没做到位,产品在客户现场连续烧了三次板子……嗯,从那以后我再也不敢小看测试了。
1.1 嵌入式系统的特点
嵌入式系统跟普通软件系统不一样。你想想看,它有几个很明显的特征:
- 资源受限:CPU主频低、内存小、存储空间有限。我做过一个项目,Flash只有64KB,连个printf都不敢多用。
- 实时性要求高:很多嵌入式系统必须在规定时间内响应。比如汽车安全气囊,延迟1毫秒可能就是人命关天。
- 硬件耦合紧密:软件跑在特定硬件上,换个芯片可能整个系统都要重测。
- 并发与中断复杂:多个任务抢占CPU,中断嵌套处理不好就容易出bug。
- 功耗敏感:电池供电的设备,代码写得不好,待机电流能差好几倍。
核心观点:嵌入式测试不能只测软件,必须软硬件一起测。这是它跟纯软件测试最大的区别。
1.2 测试与验证的区别
这个问题我经常被问到。说白了,两者目标不同:
- 验证(Verification):问的是「我们做对了吗?」——检查产品是否符合规格文档。
- 确认(Validation):问的是「我们做的是对的吗?」——检查产品是否满足用户真实需求。
举个例子。我在做智能门锁项目时,验证阶段会检查:按键按下后,MCU是否在10ms内检测到中断。而确认阶段会问:用户真的需要10ms响应吗?还是50ms就够用了?
| 维度 | 验证 | 确认 |
|---|---|---|
| 关注点 | 是否符合规格 | 是否满足需求 |
| 执行时间 | 开发过程中 | 开发完成后 |
| 典型方法 | 单元测试、集成测试 | 系统测试、用户验收测试 |
| 问题类型 | 实现错误 | 需求错误 |
个人经验:我建议团队在需求评审阶段就引入确认思维。别等到产品做完了才发现方向错了,那代价太大了。
1.3 测试V模型与W模型
这两个模型是嵌入式测试的基石。咱们一个一个说。
V模型
V模型把开发和测试对应起来。左边是开发阶段,右边是测试阶段,中间用V形连接。
需求分析 —— 验收测试
↓ ↑
概要设计 —— 系统测试
↓ ↑
详细设计 —— 集成测试
↓ ↑
编码 —— 单元测试
V模型的好处是:每个开发阶段都有对应的测试活动。但有个问题——测试介入太晚了。我以前吃过这个亏:等代码写完了才发现需求理解错了,返工量巨大。
W模型
W模型是V模型的升级版。它把测试活动提前到开发阶段就开始。
需求分析 —— 验收测试设计
↓ ↑
概要设计 —— 系统测试设计
↓ ↑
详细设计 —— 集成测试设计
↓ ↑
编码 —— 单元测试设计
↓ ↑
编码 —— 单元测试执行
↓ ↑
详细设计 —— 集成测试执行
↓ ↑
概要设计 —— 系统测试执行
↓ ↑
需求分析 —— 验收测试执行
关键区别:W模型强调「测试设计」和「测试执行」分离。在开发的同时,测试人员就开始设计测试用例。这样等代码出来,测试用例也准备好了,效率高很多。
我个人更推荐W模型。为什么?因为它能提前发现需求问题。我曾经在一个项目中,测试人员在需求评审阶段就发现了3处逻辑矛盾。要是等到编码后再发现,至少要多花两周时间。
1.4 测试生命周期
嵌入式测试的生命周期,说白了就是测试从开始到结束要经历哪些阶段。我把它分成6步:
- 测试计划:确定测试范围、资源、时间表。这一步最容易被忽视,但恰恰最重要。
- 测试设计:编写测试用例,准备测试环境。包括硬件工装、测试脚本等。
- 测试执行:按计划跑测试,记录结果。注意,嵌入式测试经常需要反复烧录固件。
- 缺陷管理:发现bug后,提交、跟踪、回归验证。我习惯用Jira或禅道管理。
- 测试报告:汇总测试结果,评估质量风险。给老板看的报告要简洁,给开发看的要详细。
- 测试复盘:分析测试过程,总结经验教训。这一步很多团队不做,其实很可惜。
避坑指南:我曾经在一个项目中,测试计划只写了「测功能、测性能」六个字。结果执行时发现:测试环境没搭好、测试工具没到位、测试人员对产品不熟悉……整个项目延期了一个月。所以,测试计划一定要写细,越细越好。
好了,这一章的内容就到这里。嵌入式测试不是简单的「点点按按」,它需要系统性的思维和方法论。下一章咱们聊聊具体的测试策略和用例设计方法。
我的建议:刚入行的朋友,可以先从V模型入手,理解测试的基本流程。等有经验了,再切换到W模型,提升测试效率。别一口吃成胖子,测试这行,经验比理论更重要。
公众号:蓝海资料掘金营,微信deep3321