360 Secure SkillHub
360 安全技能中心

Qa Testcase Generator

支持单文档、小批量、多文档批量模式,按业务域分层生成测试用例,严格遵循四层设计约束,覆盖主流程、边界、异常等场景,保证用例质量。适用于从需求/设计/接口文档、流程图提取测试场景、生成用例、做测试覆盖等场景。输入为Markdown/PDF/Word文档或图片流程图,输出带优先级着色、模块分隔的结构化Excel文件。

kokxi
kokxi
热度 21.87
最近更新 2026-07-08 18:56:55
分类:效率依赖:代码执行 / 读写文件 / 内部调用大模型应用场景:数据处理 / 报告撰写 / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add qa-testcase-generator
Metadata
name
qa-testcase-generator
description
从需求文档(Markdown/PDF/Word)或图片流程图中生成结构化 Excel 测试用例。 当用户提到以下内容时触发:生成测试用例、编写测试用例、从需求提取测试场景、 根据需求文档/设计文档/接口文档/流程图生成测试、需要按业务域分组的测试报告、 测试覆盖、测试计划。输出带有优先级着色和模块分隔行的格式化 Excel 文件。 不适用于:生成自动化测试脚本(Selenium/Playwright)、执行测试运行、搭建测试框架。
version
V2.1.0

测试用例生成器 V2

版本: V2.1.0 | 最后更新: 2026-07-07 核心改进: 批量场景支持、四层深度硬约束、阶段精简、模块前缀编号


第一步:判断输入模式

在开始任何阶段之前,先判断输入规模:

输入 模式 执行策略
1 个文件 单文档模式 四阶段完整执行
2-3 个文件 小批量模式 逐个文档执行阶段二~三
> 3 个文件 批量模式 见下方批量模式说明

批量模式执行策略

输入:N个需求文档(N > 3)
         │
         ▼
阶段一:一次性扫全部文档 → 生成全局业务域图
         │
         ▼
阶段二~三:逐个文档执行(每个文档重复以下循环)
  ┌──────────────────────────────────────┐
  │  文档i:阶段二(需求提取)           │
  │       → 阶段三(设计+生成用例)       │
  │       → 保存到 output/phase4_cases   │
  └──────────────────────────────────────┘
         │
         ▼
阶段四:合并全部文档结果 → Excel

关键约束(防止 token 稀释):

  • 每个文档独立执行阶段二~三,不允许同时处理多个文档
  • 每个文档生成的用例数不得少于 min(10, 可测需求数*2)——防止批量时偷工减料
  • 全局业务域图(阶段一输出)作为后续每个文档的共享上下文

阶段一:业务域分析

由 AI 执行,无需 Python 脚本。

输入规模决定策略

输入文档数 做法
1 个 输出该文档的业务域(通常 1-2 个)
多个 一次性扫描所有文档,输出全局业务域图(每个文档的业务域 + 域间依赖关系)

1.1 业务域识别

扫描文档,找出独立的业务域。每个域记录:

  • 业务域名称 — 从文档内容推断
  • 核心实体 — 该域涉及的关键数据实体
  • 业务规则 — 实体间的约束和逻辑
  • 状态流转 — 实体的生命周期变化
  • 域间交互 — 与其他域的依赖关系

1.2 业务分层

层级 定义 测试深度
核心层 没有它业务跑不起来 穷尽各种场景(≥7条)
重要层 影响体验但不阻塞 主流程 + 关键异常(≥5条)
辅助层 锦上添花 仅主流程(≥3条)
基础层 通用能力 基本功能验证(≥2条)

层数决定最少用例数:核心层 ≥ 7 条,重要层 ≥ 5 条,辅助层 ≥ 3 条,基础层 ≥ 2 条。 防止 token 稀释导致每个域只有 1-2 条。

1.3 输出格式

{
  "业务域": [{
    "名称": "订单管理", "层级": "核心层",
    "核心实体": ["订单", "订单项"],
    "关键规则": ["库存扣减规则"],
    "状态流转": ["待支付→已支付→已发货→已完成"],
    "关联域": ["用户管理", "库存管理"],
    "最少用例数": 8
  }]
}

批量模式下,所有文档的业务域合并到一个 phase1_domains.json,标注 源文件 字段。


阶段二:需求提取与分类

由 AI 执行,输出保存到 output/phase2_requirements.json。

⚠️ 批量模式下,逐个文档执行本阶段。每完成一个文档的需求提取,立即进入阶段三,不要等到所有文档都提取完。

2.1 需求提取

从文档中提取每条可验证的需求,不遗漏。

2.2 复杂度来源分类

复杂度来源 识别信号
输入空间 长度限制、取值范围、格式要求
状态组合 状态转换、生命周期、流转条件
条件逻辑 多条件判断、分支规则、权限控制
流程步骤 多步骤操作、业务流程、操作序列
配置组合 多参数组合、多环境配置、选项交叉

2.3 质量属性标记

质量属性 触发条件
可靠性 错误处理、容错、恢复、超时描述
效率 响应时间、并发、性能指标描述
安全性 认证、授权、加密、注入防护描述
兼容性 浏览器、操作系统、分辨率、移动端适配描述
易用性 UI、交互、用户体验描述
可维护性 日志、监控、配置、审计描述

2.4 需求可测性检查

可测性状态 定义 处理方式
可测 输入输出明确,结果可验证 正常生成用例
不可测 描述模糊,无法设计验证步骤 标记不可测,不生成用例
需澄清 缺少关键细节 做合理假设,标注[假设]

2.5 输出格式

{
  "源文件": "01-auth.md",
  "需求": [{
    "编号": "REQ-001", "描述": "密码长度必须为 8-20 位",
    "业务域": "用户认证管理", "复杂度来源": ["输入空间"],
    "质量属性": ["功能", "安全性"], "可测性": "可测"
  }]
}

⚠️ 批量模式下,每条需求标注 源文件,后续独立关联。


阶段三:测试设计 + 用例生成(合并)

V2 合并了原 V1 的阶段三和阶段四。不产生独立的 phase3 文件,设计思路直接在用例中体现。 原因:阶段三的输出(设计策略)和阶段四(用例生成)对于 AI 执行来说是同一思考过程的两面,分开输出白增上下文开销。

3.0 四层深度硬约束模板

设计用例的核心逻辑:不是覆盖需求文字,而是发现问题和隐患。

每个业务域必须严格按以下四层模板生成用例,不允许跳过任何一层。这是硬约束,不是建议。

每层模板(直接使用,不要跳过):

┌─ 第一层:主流程(至少 1 条 P0)───────────────┐
│  核心业务路径正向走通,验证"用户能完成核心目标"     │
│  步骤数: 4-5 步(打开→输入→操作→验证→持久化)     │
└─────────────────────────────────────────────┘

┌─ 第二层:业务分层(至少 2 条 P1)──────────────┐
│  ├─ UI元素 + 交互逻辑(每个按钮/输入框/弹窗)    │
│  ├─ 字段值边界(0/空值/最小值/最大值/特殊格式)   │
│  └─ 元素间组合(搜索+筛选+排序、筛选+翻页)       │
│  步骤数: 3-4 步                                 │
└─────────────────────────────────────────────┘

┌─ 第三层:黑盒方法(至少 3 种不同方法)──────────┐
│  场景法(1条正常+1条分支+1条异常)               │
│  边界分析(有效边界+无效边界)                    │
│  等价类划分(有效类+无效类)                      │
│  判定表(多条件组合决策)                         │
│  状态迁移(合法转换+非法转换)                     │
│  模糊测试/错误猜测/表单测试/CRUD测试              │
│  (选3种以上,保证每个需求至少1条正向+1条异常)     │
└─────────────────────────────────────────────┘

┌─ 第四层:探索性(每个业务域至少 2 条 P3,──────────┐
│  总数不超过总用例数 20%)                        │
│  ├─ 边界数据(零数据/最大值/空列表)              │
│  ├─ 特殊操作(特殊字符/超长输入/快速点击)        │
│  ├─ 环境异常(网络中断/超时/权限越界)            │
│  ├─ 数据一致(前端展示 vs 数据库核对)            │
│  └─ 隐式推测(分页/防抖/空状态/响应式)           │
│  步骤数: 3 步                                    │
└─────────────────────────────────────────────┘

3.1 每层完成检查

逐层检查,当前层不通过不进下一层:

层 完成标志 不通过怎么办
第一层 至少 1 条 P0 主流程 如果写不出 → 需求理解不够深 → 回头重读需求
第二层 至少 2 条 P1(字段边界 + 元素组合) 如果写不出 → 漏了 UI/交互细节 → 再扫一遍页面元素
第三层 ≥ 3 种不同方法 如果写不出 → 没挖掘够复杂度来源 → 对照复杂度来源表重新分析
第四层 ≥ 2 条探索性且总数 ≤ 20% 如果写不出 → 没想"什么情况会出问题" → 用错误猜测法想 2 个风险点

3.2 设计方法选择矩阵

根据复杂度来源选择方法(直接使用,不查外部文件):

复杂度来源 推荐方法 覆盖目标
输入空间 边界分析 + 等价类划分 边界值 + 有效/无效等价类
状态组合 状态迁移法 合法/非法转换
条件逻辑 判定表法 条件组合全覆盖
流程步骤 场景法 关键路径覆盖
配置组合 Pairwise(参数≥6时使用) 参数对覆盖

3.3 方法数量约束

每个业务域至少使用 3 种不同设计方法。单文档所有用例至少覆盖 4 种方法。

3.4 异常场景分类

异常测试覆盖以下六类,每个业务域至少覆盖输入+流程+权限三类:

异常类别 说明 用例示例
输入异常 无效格式、超长/超短、空值、特殊字符 邮箱格式错误 → 提示
流程异常 流程中断、回退、重复提交、跳过必填 中途关闭 → 状态不变
环境异常 网络中断、服务超时、磁盘满、并发 接口超时 → 保留待处理状态
权限异常 未登录、越权、Token过期、角色不足 普通用户访问管理 → 403
数据异常 不存在、重复、关联数据被删除 查已删除商品 → 提示不存在
状态异常 非法状态转换、重复操作、时效超期 已取消订单申请发货 → 拒绝

3.5 优先级分配

优先级 分配规则 占比参考
P0 核心层主流程 + 阻塞性异常 10-20%
P1 核心层分支 + 重要层主流程 + 关键边界 30-40%
P2 核心层非关键 + 重要层异常 + 辅助层主流程 30-40%
P3 极端边界 + 低频场景 + 探索性测试 10-20%

3.6 测试数据生成规则

按以下优先级生成具体值:

  1. 边界值数据 — 自动推导最小/最大值的具体数字
  2. 有效等价类数据 — 合规范围内的典型值
  3. 无效等价类数据 — 每个违规类型各一条
  4. 特殊值数据 — 空值、null、0、空格、Unicode字符

暴露真实数据的用例,统一使用测试专用假数据,标注 [测试数据] 前缀。

3.7 用例字段结构

字段 必填 说明
用例编号 ✅ 格式:TC-{模块前缀}-NNN(如 TC-AUTH-001)
业务域 ✅ 与阶段一输出一致
优先级 ✅ P0/P1/P2/P3
测试维度 ✅ 功能/安全/性能/可靠性/兼容性/易用性/可维护性
用例类型 ✅ 冒烟测试/回归测试/探索性测试
设计方法 ✅ 场景法/边界分析/等价类划分/判定表/状态迁移/模糊测试/错误猜测法
测试场景 ✅ 描述测试场景(如 "主流程:用户成功登录")
测试点 ✅ 具体验证点
操作步骤 ✅ 3-5 步,每步含 步骤 + 操作 + 预期
测试数据 ✅ 具体值(不是"测试数据"三个字)
前置条件 ✅ 执行前的环境准备
需求来源 ✅ 关联的阶段二需求编号
源文件 ✅ 批量模式下标记文件来源

3.8 用例编号规则

模块 前缀 示例
用户认证 AUTH TC-AUTH-001
文件管理 FILE TC-FILE-001
下载申请 DREQ TC-DREQ-001
审批管理 APPR TC-APPR-001
溯源服务 TRACE TC-TRACE-001
文件水印 WM TC-WM-001
安全模块 SEC TC-SEC-001
导航菜单 NAV TC-NAV-001
WebDAV WEB TC-WEB-001
部门管理 DEPT TC-DEPT-001
业务系统 BS TC-BS-001
我的文件 PD TC-PD-001
消息通知 NTF TC-NTF-001
仪表盘 DSH TC-DSH-001

模块前缀编号取代了旧版的全局连续编号。好处:每个文档独立生成,编号不冲突,可并行执行。

3.9 输出格式

{
  "源文件": "01-auth.md",
  "测试用例": [{
    "用例编号": "TC-AUTH-001",
    "业务域": "用户认证管理",
    "优先级": "P0",
    "测试维度": "功能",
    "用例类型": "冒烟测试",
    "设计方法": "场景法",
    "测试场景": "主流程:用户登录成功",
    "测试点": "验证正确的用户名和密码可以成功登录",
    "操作步骤": [
      {"步骤": 1, "操作": "访问 /login 页面", "预期": "页面正常加载"},
      {"步骤": 2, "操作": "输入有效用户名和密码", "预期": "输入正常"},
      {"步骤": 3, "操作": "点击「登录」按钮", "预期": "跳转到首页"}
    ],
    "测试数据": "用户名: admin, 密码: Admin@123",
    "前置条件": "用户已创建且未锁定",
    "需求来源": "REQ-AUTH-001",
    "源文件": "01-auth.md"
  }]
}

阶段四:合并输出

4.1 合并所有文档的结果

批量模式下,将所有文档的阶段二和阶段三输出合并:

{
  "元数据": {
    "源文件": ["01-auth.md", "02-file-management.md", "..."],
    "生成时间": "ISO格式",
    "需求总数": 212,
    "用例总数": 263,
    "覆盖率": "100%"
  },
  "业务域": [/* 从 phase1_domains.json */],
  "测试用例": [/* 从所有文档的 phase4 合并 */],
  "覆盖统计": {
    "按业务域": {"用户认证管理": 22, "文件管理": 24, ...},
    "按优先级": {"P0": 22, "P1": 64, "P2": 88, "P3": 89},
    "按设计方法": {"场景法": 124, "边界分析": 11, ...}
  }
}

4.2 调用 writer.py

python3 scripts/writer.py output/test_data.json

4.3 输出验证

  • 每个文档独立标注源文件
  • 用例编号格式正确(TC-{前缀}-NNN)
  • 每个业务域有绿色分隔行
  • 优先级颜色正确(P0红/P1橙/P2绿/P3灰)
  • 优先级分布合理(P0 10-20%, P1+P2 60-80%, P3 10-20%)
  • 每个业务域最外层结构 > 设计方法 ≥ 3 种
  • 每个业务域覆盖异常场景 ≥ 3 类
  • 每条用例操作步骤 3-5 步
  • 测试数据提供具体值

单文档模式最少用例数参考

业务域层级 最少用例数 覆盖内容
核心层 7 P0(1主流程) + P1(2业务分层) + P2(2黑盒方法) + P3(2探索性)
重要层 5 P1(1主流程) + P2(2分支) + P3(2异常)
辅助层 3 P2(1主流程) + P3(2基本异常)
基础层 2 P2(1正向) + P3(1反向)

为什么要有最少用例数:防止给多个文档时 token 稀释,每个文档只出 1-2 条 Happy Path。这个数字是底线,不是上限。


引用文件一览

文件 内容 何时阅读
references/image_analysis.md 图片/流程图处理策略 输入含图片时
references/environment.md 环境配置和依赖安装 首次运行
references/troubleshooting.md 常见问题排查 运行出错时

核心约束已内联到本文件。不再需要阅读 quality.md、design_methods.md、templates.md。


版本历史

版本 日期 变更说明
V2.1.0 2026-07-07 修复 P3 探索性占比失控矛盾(第四层硬约束从「每域≥3条」改为「每域≥2条且总数≤20%」)+ 评分器补全 sequence_flow_coverage 断言类型
V2.0.0 2026-07-03 批量模式支持 + 四层深度硬约束 + 阶段三/四合并 + 模块前缀编号 + 核心约束内联 + 最少用例数约束
V1.1.0 2026-06-29 初始结构化版本:五阶段工作流、独立输出文件