4. 测试计划制定:范围、策略、资源、进度、风险
测试计划这东西,说白了就是整个测试团队的作战地图。我见过太多项目,一上来就闷头写用例、跑脚本,结果跑到一半发现资源不够、环境冲突、需求还变了。嗯,最后锅全甩给测试。
所以我的习惯是——不管项目多急,先花半天把 Test Plan 敲定。你想想看,方向错了,跑得再快也没用。
核心观点:测试计划不是写给领导看的文档,是写给整个团队(包括未来的自己)的行动指南。
4.1 测试范围:什么该测,什么不该测
范围界定是第一步,也是最容易扯皮的一步。我记得有一次做智能家居网关项目,产品经理说“所有功能都要测”,开发说“只测改动的模块”,最后我夹在中间……后来我学乖了,直接用一张表把范围锁死。
| 维度 | 包含(In Scope) | 不包含(Out of Scope) |
|---|---|---|
| 功能 | 新增的 OTA 升级、设备配网、场景联动 | 已有功能的回归(由自动化覆盖) |
| 平台 | Android 12+、iOS 15+、Linux 5.10 | RTOS 旧版本、Windows 端 |
| 协议 | MQTT v3.1.1、CoAP、BLE 5.0 | Zigbee 3.0(由另一团队负责) |
| 性能 | 并发 200 设备、消息延迟 < 500ms | 极限压测(>1000 设备) |
我的经验:在 In Scope 里写清楚“测到什么程度”,比如“OTA 升级:覆盖断点续传、版本回退、异常断电”。模糊的表述就是未来的坑。
4.2 测试策略:怎么测,用什么手段
策略部分,我习惯按测试金字塔来分层。但嵌入式测试跟纯软件不一样——硬件依赖、环境干扰、实时性要求,这些都得单独拎出来说。
具体到每个层级,我会在策略里写明:
- 单元测试:用 Cmock + Unity 做驱动层打桩,每个模块独立编译运行。我习惯在 CI 里配一个“提交即跑”的流水线,10 分钟内出结果。
- 集成测试:重点测中断优先级、DMA 传输、RTOS 任务调度。曾经有一次,两个任务共享一个全局变量没加锁,跑单测全过,一集成就随机死机……后来我规定:所有共享资源必须用信号量保护。
- 系统测试:用真实硬件 + 自动化脚本。比如用 Python 控制继电器模拟上电掉电,用串口抓日志做关键字校验。
- 验收测试:这部分我一般交给产品经理和 QA 一起做,测试团队提供环境和数据支持。
避坑指南:我曾经在策略里只写了“做系统测试”,结果开发说“单元测试你们测”,QA 说“集成测试你们测”,最后全压在我一个人身上。所以策略里一定要写清楚“谁负责什么层级”。
4.3 资源:人、设备、环境、工具
资源计划最容易出问题的是“设备冲突”。一个项目 5 个人,只有 3 块开发板,怎么排?我的做法是提前拉一张资源表,按周分配。
| 资源类型 | 具体项 | 数量 | 使用时段 | 负责人 |
|---|---|---|---|---|
| 人员 | 嵌入式测试工程师 | 3 人 | 全周期 | 张三(主)、李四、王五 |
| 硬件 | 开发板(STM32H7) | 5 块 | 第 1-8 周 | 李四 |
| 硬件 | 逻辑分析仪 | 2 台 | 第 3-6 周 | 王五 |
| 环境 | 高低温箱 | 1 台 | 第 5-6 周(需预约) | 张三 |
| 工具 | Jira + TestRail + Jenkins | — | 全周期 | 全员 |
我的习惯:资源表里加一列“风险备注”。比如“高低温箱只有 1 台,如果坏了需要外租”,提前想好替代方案。
4.4 进度:里程碑 + 迭代节奏
进度计划我一般分两层:里程碑层(给管理层看)和迭代层(给团队用)。
里程碑层长这样:
- M1(第 2 周):测试计划评审通过,环境搭建完成
- M2(第 4 周):单元测试完成,覆盖率报告输出
- M3(第 6 周):集成测试完成,关键问题清零
- M4(第 8 周):系统测试完成,发布候选版本
- M5(第 9 周):验收测试通过,发布签字
迭代层我按周排,每周末做一次“测试进展看板”。举个例子:
| 周次 | 重点任务 | 交付物 | 风险点 |
|---|---|---|---|
| W1 | 环境搭建、Test Plan 评审 | 环境可用、计划签字 | 开发板未到货 |
| W2 | 单元测试用例编写 + 执行 | 覆盖率报告 | 驱动接口不稳定 |
| W3 | 集成测试用例 + 第一轮执行 | 集成测试报告 | 中断冲突 |
| W4 | 系统测试 + 性能摸底 | 性能基线数据 | 内存泄漏 |
避坑指南:我曾经把进度排得太满,每个任务之间没有缓冲。结果开发延期 3 天,整个测试计划全乱套。现在我习惯在每个里程碑后留 1-2 天“缓冲期”,专门处理突发问题。
4.5 风险:提前识别,提前应对
风险这东西,你不管它,它就会来管你。我一般把风险分成三类:技术风险、资源风险、管理风险。
| 风险类别 | 具体描述 | 概率 | 影响 | 应对措施 |
|---|---|---|---|---|
| 技术 | 新 BLE 协议栈不稳定 | 高 | 高 | 提前做协议栈压力测试,准备回退方案 |
| 资源 | 高低温箱被其他项目占用 | 中 | 中 | 提前 2 周预约,备选外租方案 |
| 管理 | 需求变更频繁 | 高 | 中 | 每周需求变更评审,变更后重新评估测试范围 |
| 技术 | OTA 升级失败导致设备变砖 | 低 | 高 | 开发阶段加入看门狗 + 双备份分区 |
我的经验:风险不是列出来就完了。我每周会在站会上过一遍风险清单,更新“概率”和“影响”的评级。有些风险随着项目推进会自动消失,有些会突然升级。
4.6 完整的 Test Plan 模板
说了这么多,最后给一个我一直在用的模板结构。你直接拿去改项目名就能用。
# 嵌入式测试计划模板
## 1. 文档信息
- 项目名称:
- 版本号:
- 编写人:
- 评审人:
- 批准人:
## 2. 测试范围
- In Scope(功能/平台/协议/性能)
- Out of Scope(明确不测的内容)
- 测试通过/失败标准
## 3. 测试策略
- 单元测试(工具、覆盖率目标、责任人)
- 集成测试(重点模块、接口、时序)
- 系统测试(场景、压力、稳定性)
- 验收测试(用户场景、认证标准)
## 4. 资源计划
- 人员(角色、姓名、时间投入)
- 硬件(开发板、仪器、数量)
- 环境(实验室、工具链、CI 配置)
## 5. 进度计划
- 里程碑(M1-M5,含日期)
- 迭代计划(按周排,含交付物)
- 缓冲期安排
## 6. 风险管理
- 风险清单(类别、描述、概率、影响、应对)
- 风险跟踪机制(周更新、责任人)
## 7. 交付物清单
- 测试计划文档
- 测试用例集
- 测试报告(阶段/最终)
- 缺陷报告
- 覆盖率报告
## 8. 审批签字
- 测试经理:
- 项目经理:
- 产品经理:
最后说一句:模板是死的,项目是活的。我每次用这个模板都会根据项目特点做裁剪——小项目可能只写 3 页,大项目能写到 30 页。关键是,每一行字都要对实际测试有指导意义,而不是为了凑文档。