Skip to content

About

接收原型图/文字/PRD,输出 XMind+Excel 测试用例。聚焦微信小程序功能测试,含小程序专项测试维度和检查清单。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

name prototype-to-testcase
description 接收原型图/文字/PRD,输出 XMind+Excel 测试用例。聚焦微信小程序功能测试,含小程序专项测试维度和检查清单。

需求原型 → 测试用例 生成技能

将需求原型图、文字描述或 PRD 文档自动解析为结构化测试用例,经两轮交互确认后输出 XMind 功能点脑图 和 Excel 测试用例文档,附带自动自查报告。

聚焦场景:微信小程序功能测试。

能力概览

阶段 能力 输出
① 输入解析 图片识别 / 文字结构化 / PRD 解析 需求要素清单
② 确认对齐 要素清单确认 + 测试范围对齐 确认后的要素清单
③ 测试设计 6种设计方法 + 小程序专项维度 + 联动/路由/交互/动效 测试用例设计稿
④ 确认对齐 设计稿确认 + 用例数量预估 确认后的设计稿
⑤ XMind 生成 按模块/功能点层级拆解脑图 .xmind 文件
⑥ Excel 生成 标准化用例格式 + 格式化排版 .xlsx 文件
⑦ 自查报告 自动 checklist 校验 + 覆盖率统计 自查报告

执行流程

阶段一:输入解析

1.1 输入类型识别

输入类型 识别方式 解析策略
单张原型图 用户提供 1 张图片 视觉分析提取要素
多张原型图 用户提供 ≥2 张图片 逐张分析 + 关联分析(页面流转关系)
文字描述 纯文本需求说明 结构化提取要素
PRD 文档 .docx/.pdf/.md 文件 读取文档,按章节结构化提取
混合输入 图片 + 文字 + 文档 以主要输入为主,其他作为补充上下文

1.2 图片解析要素

通过视觉分析提取:

  • 页面模块:导航、表单、列表、弹窗、按钮、Tab、抽屉等
  • UI 元素:输入框、下拉框、开关、单选/多选、表格、图表、日期选择器、上传组件
  • 交互规则:点击跳转、表单验证、状态变更、数据联动、loading 态、动画反馈
  • 业务规则:校验逻辑、权限控制、数据约束、计算规则
  • 异常路径:空状态、错误状态、加载状态、网络异常、无权限状态
  • 多图关联(多张图时):页面流转关系、共享数据、状态传递

1.3 原型图黄色便利贴识别(核心规则)

⚠️ 这是新增功能点识别的唯一依据,必须严格执行。

详见 references/prototype-parsing.md 完整规范。关键要点:

  1. 识别目标:原型图中背景色为黄色(#FFEB3B 或近似色)的便利贴 / 标注框
  2. 提取内容:每张便利贴上的完整中文文字,逐字精确识别,不得改写或概括
  3. 关联分析:记录便利贴的箭头 / 引线指向的原型元素,确定该功能点所属的页面区域
  4. 功能点转化:每张便利贴 = 1个功能点,便利贴文字即功能点描述
  5. 识别方案选择(重要):
    • 方案B(推荐,DOM 提取):用户提供原型 URL(如 Axure Cloud 链接)时,必须使用 Playwright 渲染页面后从 DOM 直接提取文字。准确率 100%,详见 references/prototype-parsing.md 方案B
    • 方案A(回退,vision 识别):仅提供截图图片无法访问 DOM 时使用。用 xbrowser screenshot --full 截图,不要用 web_fetch(会被 SSRF 拦截)
  6. 用户确认:识别完成后,必须将所有便利贴内容列出交用户确认,确认后才进入下一步
  7. 准确率优化(必做):方案A 全页截图分辨率不足,小字容易识别错误。必须执行「全页定位 → 逐张放大截图 → 逐字识别确认」三步流程,有歧义的文字列出多种可能性让用户确认

1.4 输出:需求要素清单

以 Markdown 格式输出,包含功能模块表、页面元素表、业务规则表、交互路径表、边界条件表、异常路径表。

阶段二:确认对齐(交互确认点 ①)

⚠️ 此阶段必须与用户确认后才继续。

向用户展示需求要素清单,并询问:

  1. "以上要素清单是否准确?是否有遗漏或需要修正的功能点?"
  2. "是否有额外的业务规则、约束条件或非功能性需求需要补充?"
  3. "本次测试的范围和重点是什么?(全量测试 / 核心流程优先 / 仅异常场景)"

若用户有修改:更新要素清单后再次确认。 若用户确认:进入阶段三。

阶段三:测试用例设计

基于 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加密存储、日志脱敏)
  • 业务逻辑安全(支付金额防篡改、重复支付防护、并发竞争)

阶段四:确认对齐(交互确认点 ②)

⚠️ 此阶段必须与用户确认后才继续。

向用户展示:

  1. 设计概要:模块 → 功能点 → 用例数量统计表
  2. 优先级分布:P0/P1/P2/P3 用例数量与占比(P0 目标 5-10%)
  3. 覆盖维度统计:各维度已覆盖用例数

并询问:

  1. "测试用例设计是否覆盖了你的需求?是否有需要增减的模块或场景?"
  2. "用例数量是否符合预期?是否需要精简或扩充?"
  3. "优先级划分是否合理?P0 核心流程用例是否准确?"

若用户有修改:调整设计后再次确认。 若用户确认:进入阶段五。

阶段五:XMind 脑图生成

调用 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),未携带则不添加图标。

XMind 层级结构

模块名
 └── 功能点名(不带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、(顿号),脚本自动归一化

modules.json 数据结构

[
  {
    "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 重复。

阶段六:Excel 用例文档生成

调用 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"

优先级处理流程:

  1. 调用 priority_evaluator.evaluate() 对每条用例判定优先级(脚本判定为准)
  2. 校验 P0 占比是否在 5%-10%,超出区间自动调整
  3. 按 P0 → P1 → P2 → P3 排序,同优先级内按模块 grouping
  4. 用脚本判定的优先级覆盖 LLM 原始 priority 字段
  5. 在 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 ~ P3,对应禅道优先级 1~4)

优先级 含义 占比目标 禅道优先级 必须通过率
P0 核心流程,阻塞发布 5% ~ 10% 1 100%
P1 非核心功能,重要功能 主力 60-70% 2 必须
P2 异常及边界,次要场景 20-30% 3 应当
P3 兜底(极少使用,默认不生成) ≈ 0% 4 可选

判定原则(简明三档分类)

是否为核心流程?
  是 → P0
  否 → 是否为异常/边界?
        是 → P2
        否 → P1

完整判定规则、关键词词典、冲突处理详见 references/priority-rules.md。

双层判定机制

  1. LLM 初判(阶段三):按 references/priority-rules.md 关键词规则为每条用例打 priority 标签
  2. 脚本校验(阶段六):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 生成,无外部依赖

About

接收原型图/文字/PRD,输出 XMind+Excel 测试用例。聚焦微信小程序功能测试,含小程序专项测试维度和检查清单。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages