《嵌入式C 语言单元测试实战与落地》课程大纲(1天)
一、 课程目标
通过1 天的集训,使参训研发人员能够:
1、掌握标准:掌握功能类、接口类C 语言单元测试用例的标准写法与实操流程。
2、提升指标:掌握嵌入式环境下的代码覆盖率统计方法,明确达标要求与提升技巧。
3、统一规范:能够带回一套可落地、可校验、可统计的团队单元测试规范。
4、提升质量:通过有效的单元测试左移,切实提升自测能力,降低代码Bug 率与线上故障。
二、 授课对象
嵌入式软件研发工程师、测试工程师、技术主管(需具备基础的C 语言编程能力)。
三、 课程大纲
模块一:破冰与认知对齐
1.1 为什么嵌入式C 语言更需要单元测试?
嵌入式开发的痛点:硬件依赖强、Debug 成本高、牵一发而动全身。单元测试在嵌入式开发中的价值(减少代码Bug 与线上问题)。
1.2 什么是“好”的单元测试?
单元测试的边界:测什么?不测什么?
需求解读:从“功能类”和“接口类”两个维度拆解测试目标。
模块二:功能类与接口类单元测试标准写法与实操——【核心实战】
2.1 嵌入式C 单元测试主流框架选型
主流框架对比:Unity、CMock、CppUTest 等。
环境搭建演示:如何在宿主机(PC 端)搭建C 语言单元测试环境。
2.2 接口类单元测试标准写法(重点)
接口测试的核心:参数校验、返回值检查、异常分支处理。
实战演练:针对一个典型的嵌入式API,现场编写测试用例。
Mock 技术实战:如何打桩(Stub)和模拟(Mock)硬件寄存器、底层驱动,解除硬件依赖。
2.3 功能类单元测试标准写法(重点)
功能测试的核心:逻辑分支覆盖、状态机流转、边界值测试。
实战演练:针对一个复杂的业务逻辑函数(如:数据解析算法、状态机),现场编写测试用例。
测试用例命名规范:如何写出可读性高、易维护的测试代码(统一团队规范)。
2.4 实操流程梳理
标准动作:编写代码->编写测试->运行测试->修复Bug ->提交代码。
模块三:代码覆盖率统计、提升与达标要求——【硬核指标】
3.1 覆盖率统计原理与工具
语句覆盖、分支覆盖、条件覆盖、MC/DC 覆盖的区别(结合嵌入式安全标准如ISO 26262 或DO-178C 的启示)。
工具实操:如何使用gcov+lcov(或类似工具)生成可视化的覆盖率报告。
3.2 覆盖率提升方法与技巧
为什么覆盖率上不去?常见的死角(异常处理、死代码、硬件保护分支)。
如何通过设计更好的测试用例来提升分支覆盖率。
达标要求设定:行业参考标准(如:核心模块分支覆盖率达到80%以上),如何根据实际情况制定合理的KPI。
3.3 覆盖率数据的自动化集成
如何将覆盖率统计集成到CI/CD 流水线中(Jenkins/G itLab CI),实现自动校验。
模块四:统一规范与落地计划——【落地转化】
4.1 制定团队《C 语言单元测试规范》
目录结构规范:测试代码与源码如何分离?
编码规范:测试代码的命名、注释、断言使用规范。
评审机制:单元测试代码也需要Code Review。
4.2 如何做到“可落地、可校验、可统计”?
可落地:降低门槛,提供测试模板,让研发人员“抄”着就能写。
可校验:将单元测试执行纳入提交门禁(Git Hook),不通过不能提交。
可统计:建立度量看板,定期通报覆盖率与Bug 发现率。
4.3 落地实施路线图(Action Plan)
第一阶段:试点模块(选1-2 个核心模块跑通流程)。
第二阶段:规范推广(全员培训,制定考核标准)。
第三阶段:全面铺开与持续优化。
4.4 总结与答疑
回顾一天核心知识点。

