3. 需求分析与评审:从需求文档中提取测试点,需求可测性分析
说实话,很多测试新人拿到需求文档,第一反应就是「直接写用例」。我早年也犯过这个错——需求文档翻两页就开始列步骤,结果测到一半发现需求根本没说清楚边界条件,返工改用例改到崩溃。
后来我养成了一个习惯:先做需求可测性分析,再提取测试点,最后才动笔写用例。这个顺序,能帮你省掉至少 30% 的返工时间。
3.1 需求文档里到底藏着什么?
一份规范的嵌入式需求文档,通常包含这几块:
| 需求类型 | 常见内容 | 测试关注点 |
|---|---|---|
| 功能需求 | 按键响应、LED 显示、数据采集 | 输入输出关系、时序、异常处理 |
| 性能需求 | 采样率 100Hz、响应时间 < 50ms | 边界值、压力、长时间稳定性 |
| 接口需求 | UART 波特率 115200、SPI 模式 0 | 协议一致性、电气特性、容错 |
| 环境需求 | 工作温度 -20℃ ~ 85℃ | 高低温、湿度、振动 |
| 安全需求 | 看门狗超时复位、非法指令捕获 | 故障注入、恢复时间、冗余切换 |
你想想看,如果需求里写「按键响应要快」,这能测吗?什么叫快?100ms 算快还是 10ms 算快?不可量化的需求,就是测试的坑。
3.2 需求可测性分析——四个维度
我个人习惯用四个维度来评估一条需求能不能测:
- 明确性:输入、输出、条件、状态是否无歧义?
- 可观测性:测试结果能不能通过某种手段(日志、波形、指示灯)被观察到?
- 可控制性:测试环境能不能精确控制输入条件?
- 可判定性:有没有明确的 pass/fail 标准?
举个例子,需求是「设备在掉电后重新上电,应能恢复到掉电前的状态」。
- 明确性:掉电前是什么状态?所有状态还是特定状态?——需要细化。
- 可观测性:上电后通过串口打印状态信息,或者观察 LED 指示。——可以。
- 可控制性:用程控电源模拟掉电/上电,精确控制掉电时长。——可以。
- 可判定性:掉电前记录状态 A,上电后读取状态,比对是否一致。——明确。
如果四个维度都 OK,这条需求可以直接提取测试点。如果有一项不满足,必须在评审阶段提出来,不要自己闷头猜。
3.3 从需求到测试点——三步法
我总结了一个三步法,团队里新人都用这个套路,上手很快。
第一步:拆解需求,提取原子条件
把一条需求拆成「条件 + 动作 + 结果」的最小单元。比如:
需求:当温度超过 85℃ 时,系统应关闭加热器并发出报警。
拆解:
- 条件:温度 > 85℃
- 动作:关闭加热器
- 结果:发出报警(蜂鸣器响 / LED 闪烁)
第二步:对每个原子条件做等价类划分
温度这个条件,可以划分成:
- 有效等价类:85℃ ~ 125℃(正常工作范围上限)
- 无效等价类:< 85℃(不触发)
- 边界值:85℃ 本身、84.9℃、85.1℃
第三步:组合测试点,考虑异常场景
不要只测正常流程。我习惯问自己三个问题:
- 如果条件刚好在边界上,系统怎么表现?
- 如果条件快速跳变(比如从 30℃ 瞬间跳到 90℃),系统能正确处理吗?
- 如果多个条件同时触发(比如温度超限 + 传感器故障),优先级怎么处理?
3.4 需求评审——测试视角的「找茬清单」
我参加需求评审时,手里会拿一份清单,逐条核对。这份清单是我多年踩坑总结出来的:
| 检查项 | 常见问题 | 测试视角的提问 |
|---|---|---|
| 边界是否明确 | 「温度过高时报警」——多高? | 阈值是多少?回差是多少? |
| 时序是否清晰 | 「按键按下后执行动作」——多久算按下? | 消抖时间?长按 vs 短按? |
| 异常路径是否覆盖 | 「通信失败时重试」——重试几次?间隔? | 重试耗尽后怎么办? |
| 状态转换是否完整 | 「进入待机模式」——从哪些状态可以进入? | 待机模式下收到唤醒信号,回到哪个状态? |
| 资源约束是否考虑 | 「记录 1000 条日志」——存满了怎么办? | 覆盖旧日志?停止记录?报警? |
评审会上,我一般会挑 2-3 个「看起来没问题」的需求,现场做可测性分析演示。比如:
「这条需求写的是‘系统在 5 秒内无操作自动进入休眠’,那我问一下:5 秒是从最后一次操作结束开始算,还是从操作开始算?休眠前要不要保存当前状态?休眠后按哪个键唤醒?唤醒后是回到休眠前的界面还是回到主界面?」
这么一问,产品经理和开发通常会愣住,然后开始翻文档确认。这就是测试的价值——把模糊的需求逼到墙角,让它现出原形。
3.5 知识结构图:需求分析与测试点提取流程
下面这张图是我自己画的,团队培训时一直在用。它把从需求文档到测试点的整个流程串起来了。
3.6 实战案例:一个温控系统的需求分析
拿一个真实的温控系统需求来走一遍流程。需求原文:
系统应能根据当前温度自动调节加热器功率,使温度稳定在目标值附近。
这条需求,可测吗?
- 明确性:❌ 「目标值」是多少?「附近」是多近?±1℃ 还是 ±5℃?
- 可观测性:✅ 可以通过温度传感器读数观察。
- 可控制性:✅ 可以用恒温箱设定环境温度。
- 可判定性:❌ 没有 pass/fail 标准。
评审时我提了修改建议:
修改后:系统应通过 PID 算法调节加热器 PWM 占空比,使温度稳定在目标值 ±1℃ 范围内,
稳态误差不超过 0.5℃,调节时间不超过 30 秒(从启动到首次进入稳态范围)。
改完之后,测试点就非常清晰了:
- 目标温度 25℃、50℃、75℃ 下的稳态误差测试
- 从 0℃ 升温到 50℃ 的调节时间测试
- 外界扰动(开门、加负载)后的恢复时间测试
- PWM 占空比输出是否在 0%~100% 范围内
好了,这一章的内容就这些。记住:需求分析不是产品经理一个人的事,测试工程师必须从第一天就参与进来。你越早介入,越能掌控质量。