第3章 验证计划与规格拆解

验证计划不是“测试用例清单”,而是一张从设计规格到验证目标的工程地图。本章围绕一个核心问题展开:如何把自然语言写成的规格文档,拆解为可执行、可度量、可追溯的验证计划。

3.1 核心概念

验证计划是验证活动的“作战地图”,必须在编写代码之前明确目标、方法、资源和完备性判定标准。

规格拆解是将规格文档中的需求逐条翻译为功能点;功能点是规格中可独立验证的设计行为;验证点则是验证空间中具体可执行的原子检查项。

一条常见拆解路径为:规格条目 → 功能点 → 验证点 → 用例 → 覆盖率。越早完成这条链,验证盲区越少。

验证计划与规格拆解流程 自顶向下逐层拆解,保证验证可达与可追溯 规格文档分析 功能点提取 验证点分解 验证计划制定 评审与基线

3.2 核心概念速查表

概念定位典型输出载体
验证计划验证活动总纲验证计划文档
规格拆解需求到功能点的翻译过程功能点清单
功能点可独立验证的设计行为功能点列表
验证点具体检查任务验证点描述 / 用例映射
覆盖率模型完备性度量框架功能覆盖率模型

3.3 原理机制

  • 自顶向下拆解:模块级 → 接口级 → 事务级 → 检查项,避免漏测。
  • 双向追溯:功能点可回溯到规格条目,验证点可回溯到功能点。
  • 粒度适中:一个功能点通常对应 3~8 个验证点;过粗则不可执行,过细则维护成本爆炸。
  • 方法匹配:按风险选择定向测试、约束随机、断言、形式化或硬件加速。

3.4 流程步骤

  1. 收集规格输入:设计规格说明书、协议规范、架构文档、变更记录。
  2. 建立功能点清单:按功能域分组,编号采用“模块-功能-序号”规则。
  3. 拆解验证点:逐条列出验证点、激励描述、预期行为、异常边界。
  4. 制定验证计划:确定优先级、验证方法、资源分工、进度与工具链。
  5. 评审与基线:设计 / 验证 / 架构三方评审,通过后纳入版本管理。

3.5 案例说明

以 APB Slave 寄存器读写为例,展示规格拆解到验证计划的关键片段。

规格条目功能点验证点验证方法
寄存器写入在 PENABLE 与 PREADY 握手完成时生效 APB-RW-FP02 APB-RW-VP01 写地址匹配时数据正确写入
APB-RW-VP02 PENABLE 高电平期间写入不丢失
约束随机 + 断言
读操作返回最近一次写入值 APB-RW-FP03 APB-RW-VP03 读回值等于写入值 定向测试
从设备 PREADY 拉低时事务延长 APB-RW-FP04 APB-RW-VP04 等待 PREADY 后写入数据仍正确 定向测试 + 断言

推荐在验证计划中使用统一的验证点描述模板:

APB-RW-FP02:
  - 验证点: APB-RW-VP01  写地址匹配时数据正确写入
  - 验证点: APB-RW-VP02  写事务期间 PENABLE 时序正确
  - 验证方法: 约束随机 + 断言
  - 优先级: P0

3.6 表格总结:验证计划关键要素

维度要素说明
追溯链功能点编号必须关联到规格条目
验证点描述三要素激励、行为、预期结果
优先级P0 / P1 / P2P0 冒烟必过,P2 可延期回归
验证方法定向 / 随机 / 断言 / 形式化按风险与效率选择
覆盖率功能覆盖组映射到验证点,形成完备性度量
版本状态待评审 / 已基线纳入版本管理,防止无声变更

3.7 误区提醒

  • 把验证计划写成测试用例集合,导致追溯链断裂。
  • 功能点粒度失控:既无法评估完备性,也无法指导实现。
  • 只拆正常路径,异常、边界、复位、跨时钟域无人认领。
  • 验证计划不随版本更新,最终沦为“历史文档”。

3.8 实践清单

  • 建立全局编号规则:FP / VP / 用例三级编号。
  • 规格中每一条“应当 / 必须 / 可以”必须有功能点承接。
  • 每个功能点至少包含一个正向验证点和一个异常 / 边界验证点。
  • 验证计划必须包含完成标准:功能覆盖率、断言语义、回归通过率。
  • 使用版本管理工具为验证计划建立基线,每次重大变更后重新评审。
实践提示:项目初期可以先用“验证计划骨架”拉通模块与功能域,再随规格成熟度逐层细化,比一次性写完更可靠。