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 测试策略:怎么测,用什么手段

策略部分,我习惯按测试金字塔来分层。但嵌入式测试跟纯软件不一样——硬件依赖、环境干扰、实时性要求,这些都得单独拎出来说。

嵌入式测试策略金字塔 单元测试(Unit Test) 驱动/协议栈/算法模块 · 覆盖率 > 85% 集成测试(Integration Test) 模块间通信 · 中断/时序 · 硬件抽象层验证 系统测试(System Test) 端到端场景 · 压力/稳定性 · 兼容性 验收测试(Acceptance Test) 用户场景 · 法规认证 · 发布标准 自动化占比 单元:90% 自动化 集成:60% 自动化 系统:30% 自动化

具体到每个层级,我会在策略里写明:

  • 单元测试:用 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 页。关键是,每一行字都要对实际测试有指导意义,而不是为了凑文档。