独立章节页 · 第 06 章

V-Model 测试扩展详解

这一章聚焦 spec-kit 的测试增强能力。V-Model 扩展把需求、设计与测试配对起来, 让测试不再是开发完成后的补丁,而是从需求阶段就同步进入流程。

章节定位:测试专题 关键词:V-Model / Traceability 适合角色:测试 / 开发 / 质量负责人

章节总览

V-Model 的核心不是多写文档,而是建立“设计 ↔ 测试”的一一映射

它让每个开发产物都对应一个测试产物,确保需求、设计、实现和测试之间没有断层。

6.1

安装

V-Model 是社区扩展,需要额外安装后才能在 spec-kit 中使用相关命令。

安装方式

既可以从官方社区目录安装,也可以从 GitHub Release 按版本精确安装。

安装命令

# 方式一:从官方社区目录安装
specify extension add v-model

# 方式二:从 GitHub Release 安装(更精确控制版本)
specify extension add v-model --from https://github.com/leocamello/spec-kit-v-model/archive/refs/tags/v0.4.0.zip

# 验证安装
specify extension list

来源说明

V-Model 扩展由社区贡献者 leocamello 开发,采用 MIT 许可证,当前文档基于 v0.4.0。 它已被收录在 spec-kit 的官方社区扩展目录中。

6.2

新增的 9 个命令

安装扩展后,spec-kit 会新增一组围绕需求、设计、测试和追溯关系的命令。

命令总表

命令 产出 说明
/speckit.v-model.requirements REQ-NNN 标识的需求清单 为需求建立可追溯编号
/speckit.v-model.acceptance 三层验收测试计划 BDD 场景 + 100% 覆盖验证
/speckit.v-model.system-design SYS-NNN 系统设计 遵循 IEEE 1016 标准
/speckit.v-model.system-test 系统测试方案 遵循 ISO 29119-4 标准
/speckit.v-model.architecture-design ARCH-NNN 架构设计 遵循 IEEE 42010 + 4+1 视图
/speckit.v-model.integration-test 集成测试方案 遵循 ISO 29119-4 + 故障注入
/speckit.v-model.module-design 模块详细设计 含伪代码和状态机
/speckit.v-model.unit-test 单元测试方案 白盒技术 + 依赖隔离
/speckit.v-model.trace 追溯矩阵 需求 ↔ 设计 ↔ 测试的完整映射

如何理解这 9 个命令

需求层

requirementsacceptance 负责定义“要验证什么”。

系统层

system-designsystem-test 负责系统级设计与系统级验证。

架构层

architecture-designintegration-test 对应集成级设计和测试。

模块层

module-designunit-test 对应详细设计和单元验证。

追溯层

trace 负责把上面所有层串起来,形成全链路映射。

6.3

核心价值

V-Model 扩展真正解决的问题,是让“每个设计都有对应测试,每个测试都能回溯到需求”。

每个设计都有配对测试

需求(REQ) ←→ 验收测试(Acceptance)
系统设计(SYS) ←→ 系统测试(System Test)
架构设计(ARCH) ←→ 集成测试(Integration)
模块设计(Module) ←→ 单元测试(Unit Test)

这意味着测试不再是”开发完成后再补上”,而是和设计一起成对出现。 从方法论上,它把测试前移到了需求和设计阶段。

V-Model

图 2 · V-Model:左侧设计链与右侧测试链的一一配对关系

追溯矩阵确保零遗漏

/speckit.v-model.trace 生成的追溯矩阵,会明确指出: 哪些需求还没有对应测试,哪些测试没有回到具体需求。 这种结构化追踪尤其适合对覆盖率、审计或验收责任要求较高的团队。

对测试同学的实际价值

  • 测试不再是开发完成后的补丁,而是与设计同步产生的配对物。
  • 验收标准在 Specify 阶段就已经定义,测试可以更早介入。
  • 追溯矩阵自动生成,不需要手工维护大表格。
  • 输出结构符合 IEEE / ISO 标准,更适合正式项目或审计场景。
适用判断

如果你的团队只是简单 CRUD、小规模快速开发,不一定必须使用 V-Model。 但如果测试角色明确、需求复杂、交付要求高,V-Model 会显著提升可追溯性和协作质量。