🧪 嵌入式C单元测试
规范与工具实战
📘
30章完整目录 · 动手学测试
⚡ 共30个实战章节
01
单元测试基础概念
基石
什么是单元测试
为什么需要
嵌入式特殊性
02
测试驱动开发(TDD)入门
红-绿-重构
TDD循环
嵌入式场景
第一个失败测试
03
CUnit框架入门
经典框架
安装配置
Suite/Test
运行测试
04
CUnit高级用法
夹具&参数化
Setup/Teardown
参数化测试
测试报告
05
Unity测试框架
极简设计
安装集成
断言宏
编写用例
06
Unity与CMock结合
自动Mock
CMock配置
模拟硬件外设
验证调用
07
Ceedling构建系统
一键测试
安装初始化
project.yml
自动发现
08
Ceedling高级配置
覆盖率&脚本
Mock配置
覆盖率
自定义构建
09
Google Test(C++)嵌入式
gtest交叉编译
交叉编译
测试策略
死亡测试
10
测试夹具深度解析
Fixture
Setup/Teardown顺序
共享夹具
资源泄漏
11
Mock对象原理与实现
手工vs自动
手工Mock
记录回放
行为验证
12
硬件抽象层(HAL)测试
可测试HAL
Mock GPIO/UART
模拟外设
常见陷阱
13
中断处理函数测试
中断隔离
中断上下文
标志位模拟
优先级嵌套
14
RTOS任务单元测试
FreeRTOS
模拟调度器
队列/信号量
优先级反转
15
静态代码分析+单元测试
PC-Lint/MISRA
PC-Lint集成
MISRA-C
CI自动分析
16
代码覆盖率分析
gcov/lcov
语句/分支/MC/DC
覆盖率报告
目标设定
17
持续集成(CI)单元测试
Jenkins/GitLab CI
自动化流水线
可视化
告警机制
18
嵌入式Linux环境测试
QEMU
交叉编译
QEMU运行
文件系统/网络
19
裸机(Bare-metal)测试
无OS挑战
链接脚本
启动代码Mock
中断向量表
20
测试数据驱动
CSV/JSON
数据驱动概念
参数化用例
嵌入式实践
21
内存管理与泄漏检测
Valgrind
malloc/free Mock
泄漏检测
静态内存池
22
时间相关函数测试
delay/sleep Mock
系统时钟模拟
超时逻辑
时间戳
23
通信协议栈单元测试
CAN/LIN
帧结构测试
解析组装
Mock总线
24
传感器驱动测试
I2C/SPI Mock
传感器Mock
数据采集
校准算法
25
状态机与业务逻辑测试
状态转换表
事件驱动
覆盖率分析
表格驱动
26
安全关键系统测试
IEC 61508
ISO 26262
安全机制验证
故障注入
27
测试文档与规范
模板&检查清单
测试计划
用例设计规范
代码审查
28
遗留代码单元测试
接缝&依赖注入
识别接缝
依赖注入改造
逐步覆盖
29
性能测试与基准测试
profiler
性能基准
执行时间测量
性能回归
30
综合实战项目
智能传感器节点
从零搭建框架
覆盖核心模块
最终报告