AI 辅助测试设计实战演练 - 0基础学会“SRS ->测试SPEC(测试点) ->测试用例”的一站式生成

本文摘要本项目以「图书管理系统」为演练靶场-有源码,用 **AI 技能(Skill)固化测试方法论**,让需求 → 测试点 → 用例的链路可复用、可追溯、可审计。

image.png

一条龙演示:如何用两个 OpenCode【也可以用其他的Agent,如WorkBuddy、OC、CC】 技能,把一份软件需求规格(SRS)自动展开为结构化测试规格/测试点(TestSpec)与可执行测试用例集(TestCase),并最终导出 Excel 评审表。

1. 项目背景、目的与收获

传统测试设计高度依赖个人经验:需求逐条拆解易遗漏、等价类/边界值等技术靠手感、用例文档散乱难追溯。

本项目以「图书管理系统」为演练靶场-有源码,用 AI 技能(Skill)固化测试方法论,让需求 → 测试点 → 用例的链路可复用、可追溯、可审计。

目的

  • 沉淀一套通用型测试设计技能,不绑定具体项目,任何软件系统都可套用;
  • 用「逐需求 × 14 类测试技术」强制审视,杜绝测试点丢失;
  • 产出带可追溯矩阵与统计表的用例文档,直接用于评审与执行。

参与者能学会

  1. 如何写一份支撑测试设计的详细需求规格(SRS);
  2. 如何用测试需求分析技能把 SRS 拆成测试点(TestSpec);
  3. 如何用测试设计技能把测试点展开为完整用例(TestCase);
  4. 如何用 14 类测试技术(等价类、边界值、决策表、状态迁移、场景法、异常、非功能等)覆盖需求;
  5. 如何生成同名 Excel 用例表,落地评审与跟踪。

2. 所需环境与项目结构

演练测试对象——图书管理系统:基于 Flask + SQLite 的可运行 Web 系统(library_management/),含书目、读者、借阅、罚款、预约、统计、系统管理七大模块,一键 start.bat 启动,自带种子数据,是测试设计的真实输入。

依赖的 OpenCode:OpenCode 是技能化 AI 编码助手,按 .opencode/skills/<skill>/SKILL.md 自动发现技能。本项目两个核心技能即存放于此,开箱即用、可跨项目复用。

完整目录结构(含各文件作用)

AIforTestDesignWorkshop/
├─ 图书管理系统_需求规格说明书.md      # SRS ,可以是word,但要先转换成md文档,注意word中的图表转换; 
├─ 图书管理系统_TestSpec.md           # 测试规格输出:41需求×14类技术覆盖表 + 292测试点
├─ 图书管理系统_TestCase.md           # 测试用例输出:292条用例(12列明细) + 统计表
├─ 图书管理系统_TestCase.xlsx         # 测试用例输出:同名 Excel:用例清单 + 需求用例统计 两工作表
├─ 图书管理系统/                      # 本实战演练的 目标测试系统,具备SRS中描述的基本功能; 
│  └─ library_management/             # SUT 源码
│     ├─ app.py / services.py / db.py # 路由 / 业务 / 数据访问
│     ├─ start.bat / requirements.txt # 一键启动 / 依赖
│     ├─ templates/ (7个页面)          # 前端页面
│     └─ data/library.db              # 种子数据库
└─ .opencode/skills/
   ├─ test-requirement-analysis/      # 技能1:需求→测试规格 的业务skill
   │  ├─ SKILL.md   
   ├─ test-case-design/               # 技能2:测试点→用例
   │  ├─ SKILL.md   
   │  ├─ references/   # 参考:测试技术/故障模式/易错点,可结合业务补充,有效性的关键参考输入
   │  │  ├─ test_design_techniques.md
   │  │  ├─ software_fault_mode.md
   │  │  └─ fault_examples.md
   │  └─ tools/         # Markdown 用例→Excel 导出脚本
   │  │  └─ testcase_to_xls.py   
   └─ word-to-md/       # 辅助技能:Word 转 Markdown
      ├─ SKILL.md

实战项目演练包 AIforTestDesignWorkshop.zip 获取:

隐藏内容,请登录后查看


3. 演练流程图与技能介绍

操作流程图

image.png

核心技能

  • word-to-md(辅助,可选):将 Word 需求文档转为 Markdown,便于技能读取。
  • test-requirement-analysis(测试需求分析):通读 SRS,提取功能/业务规则/非功能需求,对每条需求逐一审视 14 类测试技术(适用 → 测试点,不适用 → 写明理由),输出含「逐需求 × 逐技术覆盖表」与「测试点清单(10 列)」的 TestSpec,并做技术闭环自检。
  • test-case-design(测试设计):承接 TestSpec,1:1 把测试点展开为完整用例;先产出关键字段等价类 + 边界值表、状态迁移覆盖表,再落地单一 12 列用例明细表,附覆盖矩阵与按需求统计的 16 列统计表;配套 testcase_to_xls.py 一键导出 Excel。

4. 开始实战演练

步骤 1| 准备环境

  • 克隆/打开 AIforTestDesignWorkshop 作为 OpenCode 工作目录,把本实战中的几个skill归档到相应目录(参见前面目录结构),并确认 .opencode/skills 下技能已自动加载;
  • Python 环境需装 openpyxl(用于导出 xlsx)。

步骤 2| 审阅 SRS

  • 准备好、并阅读 图书管理系统_需求规格说明书.md,熟悉七大模块与 §9 边界场景,作为后续输入。
  • 若是其他业务场景,把相应的 *_需求规格说明书.md、word文档也放入同样目录;

步骤 3| 运行技能 1 生成 TestSpec

  • 在OpenCode对话中输入“基于 图书管理系统_需求规格说明书.md 开展测试需求分析,生成测试 Spec”;
  • OpenCode,会自动执行test-requirement-analysis 技能,将产出 图书管理系统_TestSpec.md

步骤 4| 运行技能 2 生成 TestCase

  • 在OpenCode对话中输入“基于 图书管理系统_TestSpec.md 开展测试设计,生成测试用例”;
  • 技能产出 图书管理系统_TestCase.md图书管理系统_TestCase.xls(若python环境OK)

步骤 5| 导出 Excel

  • 运行 tools/testcase_to_xls.py(自动定位 *_TestCase.md),生成同名 .xlsx,用于筛选、排序、评审。
⚠️ 注意:导出前先在技能说明里确认 openpyxl 安装路径;脚本与技能均不绑定本项目,可复用。

步骤 6| 评审与回归

人工审检用例;如需调整,可优化 SRS、几个skill, 后重跑步骤3~5。


5. 实战演练成果展示

本次演练以 296 行需求规格为输入,完整跑通技能链路,最终交付:

  • TestSpec(测试规格):覆盖 41 个需求条目(功能 23 + 业务规则 11 + 非功能 7),逐需求 × 14 类测试技术共 574 行覆盖判定,其中不适用项均附理由;产出 292 个测试点(TP-001\~TP-292 连续无缺口),业务规则数值(借阅 ≤5、借期 30 天、续借 1 次/15 天、预约 ≤3/3 天、罚款 0.5 元·天封顶 50、ISBN 978/979、密码 8–20 位)全部落入测试点预期与边界种子。

image.png

image.png

  • TestCase(测试用例):292 个测试点 1:1 展开为 292 条可执行用例(TC-BOOK / READER / LOAN / RPT / SYS / BR / NFR 七大模块),每条含 12 字段(预置条件/步骤/数据/预期/通过标准等),无信息丢失。

    image.png

  • 需求用例统计表:41 个需求 × 16 列,按技术列示用例数(不适用填 NA),总计与分项一致。

    image.png

  • Excel 交付物图书管理系统_TestCase.xlsx 含「用例清单(Summary)」(292 行 ×12 列)与「需求与用例设计统计」(41 行 ×16 列)两工作表,可直接评审跟踪。

    image.png

一句话总结:从一份 SRS 到 292 条带追溯、带统计、带 Excel 的用例,全程由两个可复用 AI 技能驱动——这就是 AI 辅助测试设计实战演练的完整价值。

觉得内容不错?我要

打赏杯咖啡或蜜雪冰城吧
微信扫一扫
微信赞赏码
支付宝扫一扫
支付宝赞赏码
评论 暂无评论
请登录后参与评论