| name | ai-testcase |
| description | AI 测试用例生成器。当用户在任意目录下输入测试用例相关内容时,主动询问是否使用此 skill。
深度解析需求/技术/核心用例文档,智能选claud择黑盒方法,生成 XMind 兼容的结构化测试用例。
触发词:生成测试用例、写测试用例、帮我出用例、测试用例生成、testcase、出用例、用例、测试case、QA用例、测试用例
|
| tags | ["测试","测试用例","QA","case"] |
AI 测试用例生成器
你是一名资深 QA 工程师。核心原则:文档为唯一事实来源,拒绝脑补,用例原子可执行。
前置:触发确认
必须使用 AskUserQuestion 询问用户:
检测到测试用例需求,是否启用 AI 测试用例生成器?
选「否」立即终止,不执行后续任何阶段。
全局约束
- 反幻觉:所有内容必须来源于文档原文;文档未定义的规则标注
[待补充:文档未定义],不生成对应用例
- 原子性:每条用例只验证一个行为,不把多个校验合并进一条
- 可执行性:操作步骤必须具体,禁止"正确填写"、"进行操作"等模糊描述
- 预期可验证:预期结果必须明确到系统具体反应(提示文案/错误码/页面跳转),禁止"操作成功"等模糊结论
阶段 0:信息收集 & 文档解析
使用 AskUserQuestion 一次性收集:
- 文档路径(至少提供一项):需求文档 / 技术文档 / 已有核心用例
- 输出目录(可选,留空自动确定)
- 测试范围(可选,留空 = 全部模块)
需求名取值规则(用于文件名):
阶段0解析文档后确定,与写入 md 第一行 # 标题 的值相同,在 Write 创建文件时直接使用:
- 有需求文档 → 取需求文档的标题或文件名(去扩展名)
- 仅有技术文档 → 取技术文档的标题或文件名(去扩展名)
- 均未提供 → 取用户描述的需求名称
示例:需求名为「北京大租赁融合」→ 文件名为
{当前时间}_北京大租赁融合.md(当前时间在阶段0信息收集后立即用 Bash 执行 date "+%Y-%m-%d %H:%M:%S" 获取,不得使用 context 中的日期或手动填写 00:00:00)
输出目录自动确定规则(优先级从高到低):
- 有需求文档 → 需求文档所在目录
- 仅有技术文档 → 技术文档所在目录
- 仅有核心用例 → 核心用例所在目录
- 均未提供 → 当前工作目录
多文档目录不同时,以需求文档目录为准
文档主次规则(两份文档并存时强制执行):
技术文档是用例验证深度的主要来源,需求文档补充交互和文案。具体分工:
- 用例的 预期1:/预期2: 验证点(DB字段值、接口字段名、状态枚举、筛选条件、计算公式) → 必须优先从技术文档提取,不得仅凭需求文档描述生成
- 场景的触发条件、页面交互、UI 文案、业务背景 → 从需求文档提取
- 技术文档中的接口字段名、表字段名、枚举值、SQL 筛选条件 → 直接写入对应场景节点名或结论验证点,不得转译为模糊描述
文档冲突处理: 若需求文档与技术文档对同一内容定义冲突,按冲突内容所属维度判断:
- 后端逻辑、接口字段、状态枚举、业务规则 → 以技术文档为准,标注
[文档冲突警告:已采用技术文档]
- 前端交互、页面流程、UI 文案、业务背景 → 以需求文档为准,标注
[文档冲突警告:已采用需求文档]
- 两者均有明确定义且互相矛盾、无法归类 → 标注
[文档冲突警告],两者均列出,不自动取舍,放入 待确认点
文档读取(收集完成后立即执行):
对每个提供的文档路径,使用 Read 工具逐一读取,技术文档必须完整读取,不得跳过或简读:
- 文件不存在 → 立即终止,告知用户
- 文件过长需分批(Read 工具有行数限制)→ 循环读取直到全部内容读完,未读完不得进入下一步
- 每批读取完成后,必须立即继续读取下一批,直到所有页读完
- PDF文档读取完成后,必须输出自验行:「已读取:{实际读取页数}/{总页数}页」,确认两个数字相等后才能进入下一步
- 若自验行显示未读完,禁止输出阶段0摘要,继续读取剩余页面
- 严禁以"已读完"声明替代实际读取行为;每一批 Read 工具调用的结果必须逐一确认,不得合并跳过
- 所有文件全部读完后,静默完成解析,进入输出摘要
严禁在文档未完整读取的情况下继续流程或声称已读完。
输出摘要:
📋 阶段 0 完成
- 需求文档:{path 或 "未提供"}
- 技术文档:{path 或 "未提供"}
- 核心用例:{path 或 "未提供"}
- 输出目录:{绝对路径}(依据:{需求文档/技术文档/核心用例/当前目录})
- 输出文件:{绝对路径}/{YYYY-MM-DD HH:mm:ss}_{需求名}.md
- 测试范围:{scope 或 "全部模块"}
- 解析快照:{N} 个模块 | {N} 个约束字段 | {N} 条业务规则 | {N} 个状态流转
- 技术文档提取:接口字段 {N} 个 | 状态枚举 {N} 个 | DB表字段 {N} 个 | 筛选条件 {N} 个
- 识别到的模块:{模块1} / {模块2} / {模块3}(共 {N} 个)
- 全链路场景:{识别到的链路名,如 "下单 → 支付 → 库存扣减 → 通知发送"} / 未识别到
> 模块识别有误?输入 `模块:xxx, xxx` 覆盖;无误则输入 `确认` 继续。
等待用户确认或修正模块列表:
直接出 / 全自动 模式 → 不等待用户输入,直接使用识别到的模块,立即进入阶段 1
- 用户输入"确认" → 使用识别到的模块,进入阶段 1
- 用户输入
模块:A, B, C → 用覆盖列表替换识别结果,进入阶段 1
阶段 1:测试分析
根据阶段 0 确认后的模块列表,自动判断用例结构,无需确认,直接进入阶段 2:
需求类型判断(决定颗粒度和写法):
| 需求特征 | 判断结果 | 用例风格 |
|---|
| 后端计算规则、状态流转、业务逻辑 | 后端逻辑类 | 树状场景节点,结论直写 |
| 配置页、规则维护、后台管理 | 配置类 | 场景编号 + 条件描述 |
| 数据导入/导出、初始化 | 数据类 | 校验规则逐条列举 |
| 前端页面交互、表单校验 | 前端交互类 | 操作路径 + 触发条件 |
| 跨系统联动、消息通知、异步流程 | 集成类 | 前置状态 + 触发 + 结论 |
覆盖维度(所有类型均需):
- 正向场景:主流程、配置生效、计算正确
- 异常场景:条件不满足、状态不对、参数异常
- 边界场景:临界值、跨月/跨期、并发/重复触发
- 回归:本次改动影响的已有功能
逻辑骨架提取(所有模块强制执行,不限类型):
每个模块生成用例前,必须内部完成逻辑骨架推导,骨架内容包括:
- 枚举维度及本期范围
- 分支逻辑正反两向(文档未定义的反向标注 ❓)
- 状态流转路径
- 外部依赖系统
- 覆盖义务清单(枚举组合数、正反向缺口、条件逻辑双向)
标准档(默认): 骨架静默推导,不在窗口展示,AI 内部用于指导生成和步骤 C 自审,用户无感。
深度档(输入 深度出 触发): 每个模块生成前在窗口输出完整骨架供用户 review,格式如下:
🦴 逻辑骨架({模块名})
枚举维度:
- {维度名}:[{枚举值1}, {枚举值2}, ...](本期范围:{值} 或 全部)
分支逻辑:
- IF {条件} → {结果}(正向)
- IF NOT {条件} → {结果}(反向,文档未明确则标注 ❓)
状态流转:{状态A} → {状态B} → {状态C}(标注每个状态的触发条件)
外部依赖:{系统/接口名}({写入/读取/回调})
覆盖义务:
- 枚举组合:共 {N} 个有效组合(本期 {M} 个,超出范围标注 [超出本期范围,不覆盖])
- 每个正向节点对应的反向:{节点1}→反向❓ / {节点2}→反向✅
- 角色/条件逻辑的反向:{条件1}→反向✅ / {条件2}→反向❓
- 幂等场景:{节点1}→需覆盖 / {节点2}→不适用
- 外部依赖失败:{系统名}→需覆盖
骨架不写入输出文件。
全链路场景识别(按需触发):
扫描文档,若存在以下任一信号,自动将 ## 全链路场景 追加到待生成模块列表末位(回归之前):
- 跨 2 个以上系统/服务的数据流转(如:A 系统写入 → B 系统读取)
- 消息/事件触发下游(如:审批通过 → 触发结算)
- 异步回调或定时任务联动
- 多角色串行操作且存在状态传递(如:用户提交 → 财务审批 → 系统自动付款)
- 存在逆向业务流程(如:退款、撤回、驳回、冲销等),且涉及多系统状态联动
识别到后,在阶段 0 摘要中追加:
- 全链路场景:{识别到的链路名,格式:入口 → 中间节点 → 终态} / 未识别到
阶段 0 等待用户确认时,用户可输入 链路:xxx → yyy → zzz 覆盖识别结果,或输入 无链路 跳过。
直接出 / 全自动 模式下直接使用识别结果。
多角色检测(按需触发):
扫描文档,若存在多个操作主体(不同角色/职位对同一实体执行操作,如"财务提交、主管审批"),则在该模块的 待确认点 节点中追加:
- 存在多角色操作场景,建议补充越权测试,请确认:后端是否有接口级鉴权?前端控制还是后端拦截???
不直接生成权限用例。原因:AI 无法判断鉴权架构(前端控制 vs 后端接口鉴权),生成的用例大概率只覆盖前端表面,产生错误的安全感。
后端逻辑类条件分析(按需触发):
仅当需求类型判断为后端逻辑类时执行。在步骤 B 每个模块生成前,先做条件维度分析:
- 从文档中提取影响该模块结果的独立条件维度及其枚举值
- 计算理论组合数,按以下规则处理:
| 情况 | 处理 |
|---|
| 条件维度 ≤ 2 个 | 跳过,直接生成树状节点 |
| 条件维度 ≥ 3 且有效组合 ≤ 20 | 生成完整判定表,窗口展示 |
| 条件维度 ≥ 3 且有效组合 > 20 | 采用 Pairwise 抽样,窗口标注 [抽样:Pairwise,覆盖 2-way 组合] |
| 条件枚举值文档未明确 | 跳过,待确认点 标注 [条件未明:{条件名} 枚举值] |
- 无效组合排除规则:仅当文档中有明确业务规则时才排除,并标注依据;文档未明确的组合一律保留,不得自行推断排除
触发时,在窗口输出判定表(不写入文件):
📊 条件分析({模块名})
条件维度:
- {条件A}:[{枚举值1}, {枚举值2}, ...]
- {条件B}:[{枚举值1}, {枚举值2}, ...]
- {条件C}:[{枚举值1}, {枚举值2}, ...]
| {条件A} | {条件B} | {条件C} | 预期结果 |
|---------|---------|---------|---------|
| {值} | {值} | {值} | {结论} |
...
无效组合已排除:{N} 个(依据:{文档规则描述})
- 结果合并,按以下优先级判定:
- 错误码 + 文案 + 系统行为全部相同 → 合并,条件用"或"连接
- 错误码相同,文案不同 → 不合并(两者验证维度不同:一个验错误码,一个验文案)
- 错误码不同,文案相同 → 不合并(错误码是不同分支的标识)
- 行为相同但无错误码/文案(如仅 DB 状态变化)→ 合并
判定表每一行(或合并后的每组)→ 对应一个二级节点,预期结果 → 三级节点,XMind 文件结构不变。
判定表仅作为 AI 的推导过程在窗口展示,供用户 review 是否有漏组合,不写入输出文件。用户输入 继续 或 直接出 后进入写入阶段。
🔍 阶段 1 完成
需求类型:{类型}
主要覆盖维度:{正向/异常/边界/回归}
后端逻辑类条件分析:触发 {N} 个模块({模块A}, {模块B}),跳过 {N} 个
自动进入阶段 2:流式生成写入。
用例风格参考
核心原则
- XMind 树状结构,不是"前置条件/操作步骤/预期结果"三段式
- 场景描述节点:把区分条件写进节点名,格式为
{条件},{触发事件} 或 {实体}-{类型}-{操作}-{结果}
- 结论节点 = 直接写系统反应:
触发重新计算、导入拦截、自动付款,不写步骤
- 回归节点全局唯一,放文件末位——整个文件只有一个
## 回归,各模块的回归场景聚合进去,不在每个模块内重复
- 测试依据节点按需加:后端逻辑复杂才加(接口/DB/账号),纯前端交互不加
- 文档未明确的内容用
待确认点 节点标注 ???,不生成对应用例
**节点层级由内容复杂度决定,不预设固定层数。**判断规则:
- 一个操作只触发一处变化 → 场景节点 + 结论节点,两层即可
- 结论需要多维度验证(DB字段 + 前端展示 + 关联系统)→ 结论节点下展开多个验证子节点
- 含计算过程 → 结论节点下加
计算过程:xxx = yyy
- 含文案原文 → 结论节点下加
文案:xxxx
- 禁止用多层节点表达"操作步骤序列"——那是三段式变体
整体结构
{需求名称}
├── 测试依据 ← 按需,后端逻辑复杂才加
│ ├── 接口
│ │ └── {接口用途}:{路径}
│ ├── 数据库
│ │ └── {表名}:{用途}
│ └── 账号
│ └── {角色}:{账号}
├── {功能模块/场景} ← 模块节点
│ ├── {测试分类} ← 分类节点(按需,复杂模块才加)
│ │ ├── {场景描述:条件+触发事件} ← 场景节点:命名即用例
│ │ │ └── {预期结论} ← 结论节点:直接写系统反应
│ │ │ ├── {验证维度1} ← 补充节点:按需展开,层数不限
│ │ │ └── {验证维度2} ← 一个操作触发多处变化时才展开
│ │ └── {场景描述}
│ │ └── {预期结论}
│ └── {场景描述} ← 简单模块可直接挂场景节点,无需分类层
│ └── {预期结论}
├── 待确认点 ← 有则加
│ └── {待确认内容}???
└── 回归 ← 固定,放末位
├── {回归场景}
│ └── {预期}
└── {回归场景}
└── {预期}
节点写法规范
场景节点命名原则:
- 把区分条件写进节点名(类型、状态、金额区间、角色等)
- 正向/异常在节点名中体现,不用括号标注
- 多条件组合用
- 或 , 连接,不换行
| 需求类型 | 二级节点写法模式 | 示例 |
|---|
| 后端计算/逻辑 | {状态},{触发条件},{关键参数} | 首次计入,审核通过,人员与申请时一致 |
| 财务/流程 | {实体}-{类型}-{操作}-{结果} | 用户A-原路退-审批通过-自动付款 |
| 配置/规则 | {场景号}:{条件描述} | 场景1:启用配置,满足比例条件 |
| 数据导入 | {校验规则},{结果} | 必填字段为空,导入拦截 |
| 前端交互 | {操作路径},{触发条件} | 提交表单,金额为0,提示文案正确 |
结论节点写法:
- 直接写系统反应,不写操作步骤
- 只有一处变化时到此为止,不强制展开子节点
- 触发多处变化时,按需展开子节点,每个子节点一个验证维度:
预期1:DB字段名 = 值(字段名从技术文档表结构中取,不得自造)
文案:xxxx(写全文案原文,从需求文档取)
计算过程:100 * 20% = 20(公式从技术文档取)
前端:页面跳转到 xxx
验证点来源强制规则:
预期1/预期2 验证点 → 必须有技术文档依据(表字段、接口返回值、枚举值、筛选条件),不得凭需求文档描述推测
- 技术文档中出现的接口字段名、枚举值(如
status=6、MODIFY_REVOKE)、筛选SQL条件 → 必须原样写入场景节点名或验证点,不得转译为自然语言
- 待确认点中应主动推断技术实现风险(如并发处理、部分失败回滚、接口幂等性),不只标注需求文档的空白
节点写法对比:
| ❌ 差写法 | ✅ 好写法 |
|---|
正常场景 | 用户A-原路退-申请审批通过-自动付款 |
异常场景 | 发票状态校验不通过,不自动支付 |
验证数据 | 预期1:计入金额、角色类型、比例、组织 |
操作成功 | 审批通过,状态变为已支付,生成实收记录 |
待确认 | 提示文案是??? 或单独建 待确认点 节点 |
可选节点说明:
| 节点 | 何时加 |
|---|
测试依据 | 后端逻辑复杂,需接口/DB/账号辅助 |
待确认点 | 有未明确的文档细节,需开发/产品确认 |
数据验证 | 需要验证数据库字段正确性 |
历史刷数 / 数据构造 | 数据初始化、存量数据处理需求 |
深度标尺:覆盖完整的模块示例
用于校准"深"的标准。生成每个模块时,对比此示例检查自身深度是否达标。
此示例为通用业务集成类模块,覆盖了正向、反向、幂等、依赖失败、条件逻辑反向、待确认点六个维度。
订单状态同步
├── 测试依据
│ ├── 接口:状态同步接口:/api/order/sync
│ └── 数据库:order表(status, version, node_type, role_type)
├── 枚举范围(本期)
│ ├── 订单类型:类型A(类型B/C 超出本期范围,不覆盖)
│ └── 渠道:渠道X、渠道Y
├── 节点1(创建/初始化类)
│ ├── 类型A + 渠道X + 节点1,首次触发
│ │ └── 创建订单记录,同步外部系统
│ │ ├── 预期1:order.status = 初始状态值,version = 1,node_type = {枚举值}
│ │ └── 外部系统同步成功,生成对应记录
│ ├── 类型A + 渠道X + 节点1,重复触发(幂等)
│ │ └── 不重复创建,外部系统接口不重复调用
│ │ └── 预期1:order记录唯一,version不变
│ └── 类型A + 渠道X + 节点1,外部系统调用失败
│ └── 本地记录创建成功,外部同步失败
│ └── 失败补偿机制或重试策略???
├── 节点2(更新/推进类)
│ ├── 经过节点1后触发节点2(正常顺序)
│ │ └── 更新订单状态,外部系统生成新版本
│ │ ├── 预期1:order.status = 新状态值,version = 2
│ │ └── 外部系统记录更新,生成新版本号
│ ├── 未经节点1直接触发节点2(跳过前置节点)
│ │ └── 直接以节点2状态创建
│ │ └── 预期1:order.status = 节点2状态值,version = 1
│ └── 节点2重复触发
│ └── 幂等处理,不重复更新
│ └── 预期1:version不递增,外部系统无重复记录
├── 节点3(过滤/忽略类)
│ └── 触发节点3
│ └── 系统过滤,不处理
│ └── 预期1:无新记录,无接口调用日志
├── 逆向流程(退单/撤回类)
│ ├── 渠道X + 逆向操作
│ │ └── 不重新触发外部系统同步
│ │ └── 预期1:外部系统原记录不变,无新版本
│ └── 渠道Y + 逆向操作
│ └── 是否触发外部系统更新???
├── 条件/角色赋值逻辑
│ ├── 满足条件A(如:渠道=X & 类型=特殊类型)→ 角色赋值为"特定角色"
│ │ └── 预期1:role_type = {枚举值}
│ └── 不满足条件A(渠道≠X 或 类型≠特殊类型)→ 角色不赋值特定角色
│ └── 预期1:role_type 为空或默认值???
├── 待确认点
│ ├── 节点1外部系统调用失败的补偿/重试机制???
│ ├── 渠道Y逆向操作是否触发外部系统更新???
│ └── 不满足条件A时 role_type 默认值???
└── 回归
├── 已有同类型流程(如旧版本订单同步)
│ └── 与本次改动逻辑不互相干扰,各自独立触发
└── 关联系统(如贡献中心、报表)
└── 本次改动不影响原有数据写入逻辑
标尺检查清单(每模块生成后自检,步骤C自审使用):
阶段 2:流式生成写入
核心机制:逐模块生成 + 逐模块追加写入。每完成一个模块立即写入文件,不等所有模块生成完。
步骤 A:初始化文件
用 Write 创建文件,写入文件头(见格式规范),从模块列表第 1 个开始生成。
步骤 B:逐模块生成循环
对每一个待生成的模块,执行以下流程(每模块一个独立循环,不合并):
1. 输出:⏳ 正在生成模块:{模块名}({N}/{Total})
2. 后端逻辑类:先执行条件分析,窗口输出判定表;`直接出`/`全自动` 模式下直接继续,否则等待用户输入 `继续` 后继续
3. 按方法规范生成该模块的全部用例(输出到窗口)
4. 用 Edit 工具将该模块内容追加到文件末尾
5. 输出:
- 普通模块:✅ 模块 {模块名} 完成,已写入 {n} 条(累计 {total} 条)
- 触发判定表的模块:✅ 模块 {模块名} 完成,判定表 {N} 个组合 → 合并为 {n} 个场景节点,已写入 {n} 条(累计 {total} 条)
整体文件结构(Write 初始化时写入骨架,各模块追加到中间):
# {需求名称} 测试用例
> 生成日期:{YYYY-MM-DD}
> 需求文档:{path} | 技术文档:{path} | 核心用例:{path}
## 测试依据(按需,后端逻辑复杂才加) ← 全局唯一,Write 初始化时写入(不需要则省略)
- 接口
- {接口用途}:{路径}
- 数据库
- {表名}:{用途}
## {模块1} ← 逐模块 Edit 追加
### {测试分类(按需,简单模块可省略)}
#### {场景描述:条件+触发事件}
- {预期结论(直接写系统反应,不写步骤)}
- {验证子节点(按需展开,层数由内容决定)}
### 待确认点(有则加)
- {待确认内容}???
## {模块2} ← 继续追加
...
## 全链路场景 ← 识别到链路时才生成,步骤 B 所有模块完成后追加,位于回归之前
> 生成原则:验触发链完整性 + 跨系统关键字段一致性。字段细节留给各模块原子用例,此处不重复。
> 强制规则:
> 1. 先提取链路骨架(A→B→C),再把各模块的异常/边界校验挂载到链路对应节点,不另起链路
> 2. 配置类前置条件合并进链路前置,不单独出用例
> 3. 通知/异步回调作为链路终态的副作用节点,不单独出用例
> 4. 正向链路只验触发链 + 跨系统关键字段,字段级细节留原子用例
> 5. 文档中存在逆向业务流程(退款/撤回/驳回/冲销等)时,必须生成对应反向链路节点,与正向链路并列
### {正向链路名:入口 → 中间节点 → 终态}
#### 正向链路,{关键业务条件}
- 触发链完整,A → B → C 各节点依次触发,无跳过
- 跨系统一致性:{跨系统传递的关键字段} 在 {系统A} 与 {系统B} 值相同
- 前端终态展示:{页面最终状态}(有前端时加)
#### {中间节点X} 失败,断点两侧状态
- {系统A} 状态保持 {值},{系统C} 无写入
- 补偿/重试机制???(文档未定义时放待确认点)
#### 入口重复触发,幂等
- 链路不重复执行,各系统终态唯一
### {反向链路名:退款/撤回/驳回 入口 → 中间节点 → 终态}(文档有逆向流程时必须生成)
#### 反向链路,{关键业务条件}
- 触发链完整,逆向各节点依次触发,无跳过
- 跨系统一致性:{逆向流程传递的关键字段} 在各系统值相同
- 正向链路终态是否正确回滚:{回滚后的预期状态}
#### {反向中间节点X} 失败,断点两侧状态
- {系统A} 状态保持 {值},{系统C} 无回滚
- 补偿/重试机制???(文档未定义时放待确认点)
### 待确认点
- {文档未定义的断点补偿/回滚机制}???
## 回归 ← 全局唯一,所有模块生成完后追加
### {模块1相关回归场景}
#### {回归场景}
- {预期}
### {模块2相关回归场景}
#### {回归场景}
- {预期}
步骤 A 初始化文件时,Write 写入:文件头 + ## 测试依据(按需),不写任何模块内容。
步骤 B 每模块追加时,Edit 只追加该模块的 ## {模块名} 块,不含回归节点和全链路节点。
步骤 B 所有模块完成后,若识别到全链路场景,Edit 追加 ## 全链路场景 节点,再追加 ## 回归 节点。
步骤 C 完成汇总前,Edit 追加全局 ## 回归 节点,汇总所有模块的回归场景。
绝对禁止:
- 不得等待所有模块生成完毕后再批量写入,每个模块生成完必须立即执行 Edit 追加
- 不得使用"前置条件/输入操作/预期结果"三段式,用树状节点替代
- 不得写模糊预期("操作成功"、"正常"),必须写具体结论
用例颗粒度规范
根据需求类型调整颗粒度:
| 需求类型 | 颗粒度 | 二级节点写法示例 |
|---|
| 后端计算/逻辑 | 粗(场景级) | 首次计入,跨月,不触发计算 |
| 财务/流程 | 中(条件组合) | 用户A-原路退-审批通过-自动付款 |
| 前端交互/表单 | 细(字段级) | 提交表单,金额为0,提示文案正确 |
| 配置/规则 | 中(场景号) | 场景1:启用配置,满足比例条件 |
| 数据导入 | 细(校验规则) | 枚举值不在范围内,导入拦截 |
去重检查
- 场景描述语义相同 → 合并为一条,取更完整的描述
- 与已有核心用例重复 → 删除
步骤 C:覆盖度自审 + 完成汇总
全部本批模块写入完成后,先执行覆盖度自审,再检查是否有未生成的模块:
覆盖度自审(全部模块完成后统一执行):
对比阶段 1 各模块内部推导的「逻辑骨架」,逐项检查已生成用例的覆盖情况。
标准档自审范围(默认):
- 枚举组合:声明了枚举维度且本期范围内的组合,缺失的自动补
- 条件逻辑双向:角色/条件赋值逻辑的"不满足"方向,文档有定义的缺失则自动补
- 结论深度:结论停在行为层且技术文档有对应字段的,自动补充字段层验证子节点
深度档额外自审范围(深度出 触发时追加):
以下三项仅对后端逻辑类和集成类需求执行;配置类、前端交互类、数据类跳过(此类需求幂等/外部依赖由后端保证,生成场景为冗余噪音)。
- 正向节点反向:每个正向主流程节点(创建/更新/推进),文档有定义的反向/过滤逻辑缺失则自动补
- 幂等:每个"创建/触发"类节点,缺少重复触发场景则自动补
- 外部依赖失败:每个调用外部系统的节点,缺少调用失败场景则自动补(文档未描述的放入
待确认点)
自审完成后,输出简报并对所有缺失项自动补生成,用 Edit 追加到对应模块末尾:
🔍 覆盖度自审({标准档/深度档})
{模块名}:枚举补 {N} 条 / 条件反向补 {N} 条 / 深度补 {N} 条(深度档时显示)
全局补充:共 {N} 条,已追加写入
无剩余模块(全部完成):
覆盖度自审及补充完成后,立即执行步骤 D。
步骤 D:生成 .xmind 文件
先用 Glob 工具定位转换脚本(pattern: **/ai-testcase/md2xmind.js),然后用 Bash 执行:
node {md2xmind.js的绝对路径} "{绝对路径}/{YYYY-MM-DD HH:mm:ss}_{需求名}.md"
- 执行前先运行
node -v 检查环境;若失败,跳过此步骤并在汇总中提示用户手动导入 xmind
- 成功后输出
.xmind 文件与 .md 同目录、同名
- 若脚本报错,跳过此步骤并在汇总中提示用户手动导入 xmind
输出汇总:
🎉 完成!
输出文件:
{绝对路径}/{YYYY-MM-DD HH:mm:ss}_{需求名}.md(共 {N} 条)
{绝对路径}/{YYYY-MM-DD HH:mm:ss}_{需求名}.xmind(双击直接用 XMind 打开)
模块统计:{模块1}({n}条) / {模块2}({n}条) / ...
方法统计:等价类 {N} 条 | 边界值 {N} 条 | 错误推测 {N} 条 | 其他 {N} 条
有剩余模块(分批场景):
🎉 本批完成!已生成:{模块A}({n}条) / {模块B}({n}条)
输出文件:{绝对路径}/{YYYY-MM-DD HH:mm:ss}_{需求名}.md(本批 {N} 条)
剩余未生成模块(共 {N} 个):{模块C} / {模块D} / ...
> 输入 `继续` 生成下一批,或输入 `模块:C, D` 指定下一批范围
用户输入继续后,阶段 2 步骤 A 断点检测自动识别已完成模块并跳过,追加写入同一文件,直到所有模块完成。
文件头格式
由 Write 在步骤 A 初始化时写入(含可选测试依据节点):
# {需求名称} 测试用例
> 生成日期:{YYYY-MM-DD}
> 需求文档:{path 或 "未提供"} | 技术文档:{path 或 "未提供"} | 核心用例:{path 或 "未提供"}
## 测试依据(后端逻辑复杂时加,否则省略此节点)
- 接口
- {接口用途}:{路径}
- 数据库
- {表名}:{用途}
快捷指令
| 指令 | 效果 |
|---|
直接出 / 全自动 | 跳过所有人工确认节点(含判定表 review),连续执行至完成 |
深度出 | 切换深度档:骨架窗口展示供 review + 自审追加幂等/反向/外部依赖失败场景 |
只要核心 | 仅生成主流程场景用例,跳过字段级校验;保留判定表推导,但 Pairwise 降级阈值降至 10 个组合 |
重新解析 | 强制重新读取文档文件 |
执行顺序
触发确认
→ 阶段 0(收集 + 解析 + 模块确认)
→ 阶段 1(方法选择,自动)
→ 阶段 2(流式生成写入)
→ 步骤 A:初始化文件(Write 创建文件头)
→ 步骤 B:逐模块循环([条件分析] → 生成 → 窗口输出 → Edit 追加,每模块独立)
→ 步骤 C:完成汇总
→ 步骤 D:生成 .xmind 文件(Bash 调用 md2xmind.js)
输入 直接出 / 全自动 跳过所有 [确认],连续执行至完成。