| name | prototype-to-testcase |
|---|---|
| description | 接收原型图/文字/PRD,输出 XMind+Excel 测试用例。聚焦微信小程序功能测试,含小程序专项测试维度和检查清单。 |
将需求原型图、文字描述或 PRD 文档自动解析为结构化测试用例,经两轮交互确认后输出 XMind 功能点脑图 和 Excel 测试用例文档,附带自动自查报告。
聚焦场景:微信小程序功能测试。
| 阶段 | 能力 | 输出 |
|---|---|---|
| ① 输入解析 | 图片识别 / 文字结构化 / PRD 解析 | 需求要素清单 |
| ② 确认对齐 | 要素清单确认 + 测试范围对齐 | 确认后的要素清单 |
| ③ 测试设计 | 6种设计方法 + 小程序专项维度 + 联动/路由/交互/动效 | 测试用例设计稿 |
| ④ 确认对齐 | 设计稿确认 + 用例数量预估 | 确认后的设计稿 |
| ⑤ XMind 生成 | 按模块/功能点层级拆解脑图 | .xmind 文件 |
| ⑥ Excel 生成 | 标准化用例格式 + 格式化排版 | .xlsx 文件 |
| ⑦ 自查报告 | 自动 checklist 校验 + 覆盖率统计 | 自查报告 |
| 输入类型 | 识别方式 | 解析策略 |
|---|---|---|
| 单张原型图 | 用户提供 1 张图片 | 视觉分析提取要素 |
| 多张原型图 | 用户提供 ≥2 张图片 | 逐张分析 + 关联分析(页面流转关系) |
| 文字描述 | 纯文本需求说明 | 结构化提取要素 |
| PRD 文档 | .docx/.pdf/.md 文件 | 读取文档,按章节结构化提取 |
| 混合输入 | 图片 + 文字 + 文档 | 以主要输入为主,其他作为补充上下文 |
通过视觉分析提取:
- 页面模块:导航、表单、列表、弹窗、按钮、Tab、抽屉等
- UI 元素:输入框、下拉框、开关、单选/多选、表格、图表、日期选择器、上传组件
- 交互规则:点击跳转、表单验证、状态变更、数据联动、loading 态、动画反馈
- 业务规则:校验逻辑、权限控制、数据约束、计算规则
- 异常路径:空状态、错误状态、加载状态、网络异常、无权限状态
- 多图关联(多张图时):页面流转关系、共享数据、状态传递
⚠️ 这是新增功能点识别的唯一依据,必须严格执行。
详见 references/prototype-parsing.md 完整规范。关键要点:
- 识别目标:原型图中背景色为黄色(
#FFEB3B或近似色)的便利贴 / 标注框 - 提取内容:每张便利贴上的完整中文文字,逐字精确识别,不得改写或概括
- 关联分析:记录便利贴的箭头 / 引线指向的原型元素,确定该功能点所属的页面区域
- 功能点转化:每张便利贴 = 1个功能点,便利贴文字即功能点描述
- 识别方案选择(重要):
- 方案B(推荐,DOM 提取):用户提供原型 URL(如 Axure Cloud 链接)时,必须使用 Playwright 渲染页面后从 DOM 直接提取文字。准确率 100%,详见
references/prototype-parsing.md方案B - 方案A(回退,vision 识别):仅提供截图图片无法访问 DOM 时使用。用
xbrowser screenshot --full截图,不要用web_fetch(会被 SSRF 拦截)
- 方案B(推荐,DOM 提取):用户提供原型 URL(如 Axure Cloud 链接)时,必须使用 Playwright 渲染页面后从 DOM 直接提取文字。准确率 100%,详见
- 用户确认:识别完成后,必须将所有便利贴内容列出交用户确认,确认后才进入下一步
- 准确率优化(必做):方案A 全页截图分辨率不足,小字容易识别错误。必须执行「全页定位 → 逐张放大截图 → 逐字识别确认」三步流程,有歧义的文字列出多种可能性让用户确认
以 Markdown 格式输出,包含功能模块表、页面元素表、业务规则表、交互路径表、边界条件表、异常路径表。
向用户展示需求要素清单,并询问:
- "以上要素清单是否准确?是否有遗漏或需要修正的功能点?"
- "是否有额外的业务规则、约束条件或非功能性需求需要补充?"
- "本次测试的范围和重点是什么?(全量测试 / 核心流程优先 / 仅异常场景)"
若用户有修改:更新要素清单后再次确认。 若用户确认:进入阶段三。
基于 references/design-methods.md 的测试方法论设计。
设计顺序:先核心后边缘,先正向后逆向。
优先级初判(必做):设计每条用例时,按 references/priority-rules.md 关键词规则标注 priority 字段(P0/P1/P2/P3):
- 命中核心流程关键词 → P0
- 命中异常/边界关键词 → P2
- 其余非核心功能 → P1
- P3 默认不使用
注:此处为 LLM 初判,阶段六 Excel 生成时
priority_evaluator.py会自动校验并覆盖。
A. 通用功能维度
- 正向用例:全部核心功能路径
- 逆向用例:输入校验、异常流程
- 数据校验:类型、长度、格式、必填、唯一性
- 权限控制:角色权限、数据权限、操作权限
- 边界场景:最大值/最小值、空集/满集、临界时间
- 输入框边界(必做):凡涉及输入框的功能点,必须覆盖「输入为空」和「仅输入空格」两条边界用例
触发条件:当功能点中包含以下任一 UI 元素时自动触发:
- 文本输入框(
<input>/<textarea>) - 自定义名称输入(如奖项名称、奖项名称、备注等)
- 数量/金额输入框
- 搜索框
- 任何需要用户手动输入内容的表单字段
自动生成模板(2条):
| 边界类型 | 用例标题 | 步骤 | 预期 |
|---|---|---|---|
| 为空 | 验证{字段名}输入框为空时提交 | 在{字段名}输入框中不输入任何内容(留空),{后续操作} | 提交时提示"请输入{字段名}"或{字段名}不能为空,提交被拦截 |
| 为空格 | 验证{字段名}输入框仅输入空格时提交 | 在{字段名}输入框中输入若干空格(如' '),{后续操作} | 提交时提示"{字段名}不能为空格"或自动 trim 后按空值处理,提交被拦截 |
示例:
功能点:FP-03 奖项名称自定义(分类=其他时)
→ 自动生成:
1. 验证奖项名称输入框为空时提交
2. 验证奖项名称输入框仅输入空格时提交
B. 小程序专项维度
- 生命周期:冷启动/热启动、切后台→切前台、长时间后台被销毁、页面栈管理(最多10层)
- 授权管理:用户信息/手机号授权(button触发)、位置/相机/相册权限、拒绝后降级与引导、授权状态持久化
- 分享功能:右上角菜单分享 vs 页面内按钮分享、分享到好友 vs 朋友圈、分享卡片配置(标题/描述/封面/路径)、从分享卡片打开的参数传递
- 支付功能:微信支付调起与回调、支付中断(取消/网络异常)后订单状态、金额校验与防重复支付
- 小程序跳转:跳转其他小程序(需配置appid)、返回数据传递、web-view打开H5及双向通信、半屏小程序
- 订阅消息:一次性 vs 长期订阅、授权弹窗时机、模板参数填充、关闭通知后降级
- 存储与缓存:wx.setStorage 10MB限制、Storage持久化、缓存清理后恢复、敏感数据加密存储
- 网络请求:域名白名单、并发限制、请求超时、弱网请求、断网请求
- 地图与定位:GPS/WiFi/基站精度差异、定位权限、后台不可持续定位、POI搜索准确性
C. 联动测试维度
- 表单联动:省市区三级联动、支付方式联动、分类选择联动
- 列表联动:主从列表联动、筛选条件联动、排序联动、分页联动
- 搜索联动:关键词联想、搜索历史联动、热门搜索联动
- 状态联动:按钮状态联动、菜单状态联动、选中状态联动
- 数据联动:实时数据同步、多端数据同步、缓存与数据库同步
D. 路由测试维度
- 页面跳转:导航栏跳转、Tab切换、按钮跳转、参数传递
- 页面栈:前进/后退、页面栈溢出(超过10层)、redirectTo替换页面
- 深链接:从分享卡片打开指定页、扫码打开指定页、参数解析与缺失处理
- 错误页面:404页面、无权限页面、网络错误页面
E. UI交互与动效维度
- 页面交互:加载态/骨架屏、下拉刷新、上拉加载、弹窗遮罩
- 组件交互:按钮防重复点击、输入框聚焦/失焦、下拉框展开收起、轮播图切换
- 交互动效:页面切换动画、反馈动画(ripple/spinner)、手势动画(滑动惯性/缩放)
- UI视觉:布局对齐、颜色状态色、字体层级、图标一致性、图片加载态/错误态
F. 安全维度(如适用)
- XSS/SQL注入防护
- 越权访问(水平/垂直)
- 敏感信息保护(Token加密存储、日志脱敏)
- 业务逻辑安全(支付金额防篡改、重复支付防护、并发竞争)
向用户展示:
- 设计概要:模块 → 功能点 → 用例数量统计表
- 优先级分布:P0/P1/P2/P3 用例数量与占比(P0 目标 5-10%)
- 覆盖维度统计:各维度已覆盖用例数
并询问:
- "测试用例设计是否覆盖了你的需求?是否有需要增减的模块或场景?"
- "用例数量是否符合预期?是否需要精简或扩充?"
- "优先级划分是否合理?P0 核心流程用例是否准确?"
若用户有修改:调整设计后再次确认。 若用户确认:进入阶段五。
调用 scripts/generate_xmind.py 生成 XMind 8 格式脑图,自动为每条用例添加优先级 marker 图标。
python3 scripts/generate_xmind.py \
--title "项目名称" \
--modules /path/to/modules.json \
--output "output.xmind"优先级图标:用例标题前自动添加 XMind marker:
- P0 →
priority-1(红色) - P1 →
priority-2(橙色) - P2 →
priority-3(黄色) - P3 →
priority-4(绿色)
modules.json 中每个用例可携带 priority 字段(P0/P1/P2/P3),未携带则不添加图标。
模块名
└── 功能点名(不带FP编号)
└── 用例标题
├── 前置条件:xxx
└── 步骤:1、步骤描述1
2、步骤描述2
└── 预期:1、预期结果1
2、预期结果2
规则:
- XMind 中功能点名不带 FP 编号(如
奖项分类扩展(8类)而非FP-01 奖项分类扩展(8类)),FP 编号仅在内部设计稿和 Excel 中使用 - 禁止使用 emoji 标志图(如📁📋等),模块名和功能点名直接使用纯文本
- 每个用例标题下只有1个前置条件节点 + 1个步骤节点 + 1个预期节点(预期作为步骤子层级)
- 多步骤合并为1个步骤节点,用
1、2、3、编号区分,换行分隔 - 多预期对应合并为1个预期节点,同样用编号区分
以下是在实际生成中出现过的问题,生成时必须避免:
| 错误类型 | ❌ 错误做法 | ✅ 正确做法 |
|---|---|---|
| 多步骤拆分 | 每个步骤单独一个「步骤:」节点 | 合并为1个「步骤:」节点,用 1、2、 编号 |
| 步骤无前缀 | 步骤描述直接作为节点名,不带「步骤:」 | 节点名必须以 步骤: 开头 |
| 预期平级 | 预期与步骤平级(同为用例子节点) | 预期必须是步骤的子层级 |
| emoji 标志 | 模块名带 📁、功能点带 📋 |
纯文本,不带任何 emoji |
| 预期无编号 | 多预期直接拼接或换行无编号 | 预期与步骤一一对应,用 1、2、 编号 |
| 编号重复 | modules.json 的 action/expected/precondition 自带 1. xxx 前缀,脚本又加 1、 → 输出 1、1. xxx |
modules.json 中 action/expected/precondition 不要带编号前缀(脚本会自动加 1、2、);若已带前缀,脚本会自动剥除 1./1、/1)/1: 等并重新编号为 1、2、3、 |
| 编号格式不统一 | 混用 1. 1) 1、 |
输出统一为 1、2、3、(顿号),脚本自动归一化 |
[
{
"name": "模块名",
"features": [
{
"name": "功能点名(不带FP编号)",
"testcases": [
{
"title": "验证xxx",
"precondition": "已登录队管账号\n赛事已结束\n赛后奖项待核对",
"priority": "P0",
"steps": [
{
"action": "点击xxx按钮",
"expected": "跳转到xxx页面"
},
{
"action": "输入xxx",
"expected": "输入成功,无报错"
}
]
}
]
}
]
}
]| 字段 | 类型 | 说明 |
|---|---|---|
name |
string | 模块名 |
features[].name |
string | 功能点名(XMind 输出时不带 FP 编号,仅在设计稿和 Excel 中使用 FP 编号) |
features[].testcases[].title |
string | 用例标题(以"验证"开头) |
features[].testcases[].precondition |
string | 前置条件(不带编号前缀,多行用 \n 分隔,脚本自动加 1、2、 编号) |
features[].testcases[].priority |
string | 优先级(P0/P1/P2/P3),用于 XMind marker 图标 |
features[].testcases[].steps[].action |
string | 步骤描述(不带编号前缀,脚本自动加 1、2、 编号) |
features[].testcases[].steps[].expected |
string | 该步骤的预期结果(不带编号前缀,脚本自动加 1、2、 编号) |
编号规范(重要):
precondition/action/expected字段不要写编号前缀(如1.1、1)),脚本会自动剥除已有前缀并用1、2、3、(顿号)统一重新编号。即使输入带了前缀,脚本也能归一化处理,不会出现1、1. xxx重复。
调用 scripts/generate_excel.py 生成格式化 Excel 文件,自动调用 priority_evaluator.py 评估优先级并按 P0→P1→P2→P3 排序。
python3 scripts/generate_excel.py \
--title "项目名称" \
--testcases /path/to/testcases.json \
--output "output.xlsx"优先级处理流程:
- 调用
priority_evaluator.evaluate()对每条用例判定优先级(脚本判定为准) - 校验 P0 占比是否在 5%-10%,超出区间自动调整
- 按 P0 → P1 → P2 → P3 排序,同优先级内按模块 grouping
- 用脚本判定的优先级覆盖 LLM 原始
priority字段 - 在 H 列单元格按优先级填充颜色(P0红/P1橙/P2绿/P3灰)
Excel 字段(12列):
| 列 | 字段名 | 说明 |
|---|---|---|
| A | 用例编号 | TC-[模块缩写]-[序号] |
| B | 所属模块 | 一级/二级模块路径 |
| C | 用例标题 | 以"验证"开头 |
| D | 前置条件 | 编号列表 |
| E | 测试步骤 | 编号列表,每步具体操作 |
| F | 输入数据 | 具体输入值(非描述性语言) |
| G | 预期结果 | 与步骤一一对应 |
| H | 优先级 | P0/P1/P2/P3(脚本自动判定) |
| I | 用例类型 | 功能/边界/异常/性能/UI/权限/安全/兼容性/生命周期/授权/分享/支付/联动/路由 |
| J | 需求来源 | 对应需求要素编号(追溯) |
| K | 执行结果 | 待执行时填写 |
| L | 备注 | 补充说明 |
生成完成后,按 references/checklist.md 逐项自查,输出:
- 覆盖度统计:各维度用例数
- 优先级分布:P0/P1/P2/P3 数量、占比、模块分布
- P0 占比校验:是否在 5%-10% 区间,调整用例数
- P0 用例清单:必须 100% 通过的核心流程用例
- 检查结果:通过/发现问题/修复状态
如发现问题:自动修复后重新生成,再次自查。
TC-[模块缩写]-[序号]
| 模块 | 缩写 |
|---|---|
| 登录注册 | LOGIN |
| 用户中心 | USER |
| 订单管理 | ORDER |
| 支付结算 | PAY |
| 商品管理 | PRODUCT |
| 搜索推荐 | SEARCH |
| 消息通知 | MSG |
| 权限管理 | AUTH |
| 数据报表 | REPORT |
| 系统设置 | SETTING |
| 内容管理 | CMS |
| 营销活动 | MKT |
| 物流配送 | LOGISTICS |
| 售后服务 | AFTERSALE |
| 评价管理 | REVIEW |
| 分享功能 | SHARE |
| 订阅消息 | SUBMSG |
| 小程序跳转 | NAV |
| 存储缓存 | STORAGE |
| 地图定位 | MAP |
| (自定义) | (3-6 位英文缩写) |
| 优先级 | 序号范围 | 说明 |
|---|---|---|
| P0 | 001-099 | 核心流程用例(占比 5-10%) |
| P1 | 100-499 | 非核心功能用例(主力) |
| P2 | 500-999 | 异常及边界用例 |
| P3 | 900-999 | 兜底用例(极少使用) |
| 优先级 | 含义 | 占比目标 | 禅道优先级 | 必须通过率 |
|---|---|---|---|---|
| P0 | 核心流程,阻塞发布 | 5% ~ 10% | 1 | 100% |
| P1 | 非核心功能,重要功能 | 主力 60-70% | 2 | 必须 |
| P2 | 异常及边界,次要场景 | 20-30% | 3 | 应当 |
| P3 | 兜底(极少使用,默认不生成) | ≈ 0% | 4 | 可选 |
是否为核心流程?
是 → P0
否 → 是否为异常/边界?
是 → P2
否 → P1
完整判定规则、关键词词典、冲突处理详见 references/priority-rules.md。
- LLM 初判(阶段三):按
references/priority-rules.md关键词规则为每条用例打priority标签 - 脚本校验(阶段六):
scripts/priority_evaluator.py自动判定并校验 P0 占比- 脚本判定以脚本为准,覆盖 LLM 原始标注
- P0 占比 < 5% → 自动从 P1 提升最核心用例
- P0 占比 > 10% → 自动从 P0 降级次要用例
- 调整后标记
_priority_adjusted: true
| 输出格式 | 展示方式 |
|---|---|
| XMind | 用例标题前添加 marker 图标:P0=红色(priority-1)、P1=橙色(priority-2)、P2=黄色(priority-3)、P3=绿色(priority-4) |
| Excel | H 列优先级单元格填充色:P0红/P1橙/P2绿/P3灰;按 P0→P1→P2→P3 排序 |
| 自查报告 | 优先级分布矩阵 + P0 用例清单 + 占比校验结果 |
| 文件 | 格式 | 说明 |
|---|---|---|
{项目名}_需求要素清单.md |
Markdown | 阶段一输出 |
{项目名}_测试用例设计稿.md |
Markdown | 阶段三输出 |
{项目名}_功能点脑图.xmind |
XMind | 阶段五输出 |
{项目名}_测试用例.xlsx |
Excel | 阶段六输出 |
{项目名}_自查报告.md |
Markdown | 阶段七输出 |
- Python 3.7+
- openpyxl(Excel 生成,脚本自动安装)
- XMind 脑图:纯 XML + ZIP 生成,无外部依赖