testcase-creator
testcase-creator
将用户上传的图片(产品原型图、UI 设计图、流程图、需求文档截图等)深度解析为结构化的测试需求,生成覆盖 9 大测试场景、包含丰富详细预置条件、操作步骤、预期结果的 XMind 测试用例文件。
工作流程
1. 解析图片需求(深度分析版)
当用户上传一张或多张图片时:
-
深度观察图片内容,识别以下信息(至少覆盖 9 大测试场景):
功能模块分析:
- 主要功能区域、子功能、功能入口
- 用户操作流程和路径
- 输入字段(类型、格式、约束)
- 输出内容(展示字段、数据格式)
- 按钮和操作行为
业务规则挖掘:
- 显式规则(图片中明确说明的)
- 隐式规则(根据业务常识推断的)
- 数据依赖关系
- 权限控制要求
- 状态流转逻辑
边界条件识别:
- 数值边界(最大值、最小值、临界值)
- 长度边界(字符数限制)
- 格式边界(日期、邮箱、手机号等)
- 空值处理(必填/非必填、空列表、空字符串)
- 重复数据处理
异常场景推导:
- 网络异常(断网、超时、弱网)
- 服务器异常(500 错误、服务不可用)
- 数据异常(脏数据、格式错误、关联数据缺失)
- 用户操作异常(快速点击、回退、中断操作)
- 第三方依赖异常(支付、短信、邮件服务失败)
安全测试点:
- 输入验证(SQL 注入、XSS、命令注入)
- 权限控制(未登录、越权访问、水平越权、垂直越权)
- 敏感数据(密码、手机号、身份证的脱敏展示)
- CSRF 防护
- 会话管理
-
用专业测试语言表述需求:
- 按功能模块分层组织(一级模块 → 二级功能 → 具体操作)
- 每个功能点标注建议优先级(P0/P1/P2/P3)
- 明确指出测试类型(功能/边界/异常/安全/性能/体验/并发/日志/缓存)
- 使用测试人员熟悉的专业术语
-
生成丰富的测试要素(关键改进):
预置条件(必须包含以下多个维度):
- 环境准备:测试环境、浏览器版本、设备类型
- 账号准备:用户角色、权限等级、账号状态
- 数据准备:前置数据、数据量级、数据状态
- 系统状态:功能开关配置、业务配置项
- 前置操作:需要预先完成的动作
操作步骤(必须详细到可执行):
- 完整的操作路径(从哪个页面进入)
- 每个具体动作(点击、输入、选择、滑动等)
- 输入数据的具体值(使用有意义的数据)
- 操作顺序编号
- 涉及的所有 UI 元素
预期结果(必须覆盖多个层面):
- UI 层面:页面跳转、元素显示/隐藏、状态变化
- 数据层面:数据库变化、缓存更新、文件生成
- 系统层面:接口响应、日志记录、消息通知
- 用户体验:提示信息、加载状态、错误处理
- 业务层面:业务流程完成度、状态机流转
-
与用户确认:
- 展示深度解析后的需求描述(按模块 + 测试类型组织)
- 同时询问存储位置和确认需求:
- "请问测试用例文件希望保存到哪里?(默认桌面,或指定其他路径)"
- "以上需求分析是否准确?是否有需要调整或补充的业务规则?"
- "是否需要增加特定场景的测试(如性能、安全、兼容性)?"
- 根据用户反馈完善需求理解或调整保存位置
2. 生成 XMind 测试用例
根据确认后的需求,按照以下规则生成 XMind 文件:
XMind 结构规范
根节点:
- 标题:必须与 XMind 文件名保持一致,格式为
[项目名称]_测试用例.xmind - 标记:使用减号(-)标记 标识
- 备注:优先级映射说明
- 优先级 1 == P0(核心功能)
- 优先级 2 == P1(主要功能)
- 优先级 3 == P2(次要功能)
- 优先级 4 == P3(边缘功能)
- 无标记 == 默认 P1
分组规则:
- 不同类型的用例必须分组展示
- 分组节点(非叶子节点)使用 减号(-)标记 标识为 Suite
- 前后端分离:功能测试分组下需分别建立"前端用例"和"后端用例"子分组
- 标准分组结构:
根节点 [-] ├── 功能测试 [-] │ ├── 前端用例 [-] │ │ └── 具体用例 [+] │ └── 后端用例 [-] │ └── 具体用例 [+] ├── 边界条件测试 [-] │ ├── 前端用例 [-] │ └── 后端用例 [-] ├── 异常场景测试 [-] │ ├── 前端用例 [-] │ └── 后端用例 [-] └── 安全测试 [-] ├── 前端用例 [-] └── 后端用例 [-]
节点解析规则:
| 节点类型 | 标记 | 解析为 | 备注处理 |
|---|---|---|---|
| 根节点 | - | Root | 丢弃 |
| 分组节点 | - | Suite(用例集) | 丢弃 |
| 用例节点 | + | 测试用例 | 添加到用例"备注" |
| 叶子节点 | + | 用例 | 添加到用例"备注" |
| 叶子节点 | - | Suite(用例集) | 丢弃 |
子节点内容映射(针对带"+"的用例节点):
- 用例节点本身:必须带加号(+)标记(与优先级标记一起在 marker-refs 中声明)
- 带"√"标记的子节点 → 前置条件(多条合并到一个节点,使用"1、第一行\n2、第二行"换行格式)
- 带"?"标记的子节点 → 执行步骤(合并到一个节点,使用"1、第一步\n2、第二步"换行格式)
- 无标记的子节点 → 预期结果(合并到一个节点,使用"1、第一行\n2、第二行"换行格式)
用例结构(增强版)
每个测试用例应包含:
- 用例名称:简洁描述测试目的(动词开头,包含测试对象和场景)
- 优先级:P0/P1/P2/P3
- 预置条件:至少 3-5 条,覆盖环境、账号、数据、状态等维度(带√标记)
- 执行步骤:至少 3-5 步,详细可执行(带?标记)
- 预期结果:至少 3-5 条,覆盖 UI/数据/系统/体验层面
预置条件编写模板(必须包含以下维度)
环境准备:
- 1、测试环境已部署(版本号:vX.X.X)
- 2、浏览器版本:Chrome XX+ / Firefox XX+ / Safari XX+
- 3、设备类型:PC / 移动端(iOS XX+ / Android XX+)
账号准备:
- 1、已登录【角色】账号(用户名:test_user,权限:XXX)
- 2、账号状态正常(已激活、未冻结、权限完整)
- 3、如需特殊权限:已配置【权限名称】权限
数据准备:
- 1、已创建测试数据(类型:XXX,数量:X 条,状态:XXX)
- 2、数据满足测试场景要求(如:包含边界值、特殊字符等)
- 3、关联数据已准备(如:用户关联部门、订单关联商品等)
系统状态:
- 1、功能开关已开启(配置项:XXX,值:true)
- 2、业务配置已设置(如:审批流程、通知配置等)
- 3、缓存已清理(如适用)
前置操作:
- 1、已完成【操作名称】(如:已完成实名认证、已绑定手机号等)
- 2、已访问【页面名称】页面
- 3、已进入【功能模块】功能
操作步骤编写模板(必须详细可执行)
标准格式:
- 1、打开【应用/网站名称】,访问【页面名称】页面
- 2、在【输入框名称】输入框中输入【具体数据】(数据类型/格式说明)
- 3、点击【按钮名称】按钮
- 4、在【下拉框名称】下拉框中选择【选项值】
- 5、勾选/取消勾选【复选框名称】复选框
- 6、点击【确认/提交/保存】按钮,等待系统响应
数据驱动示例:
- 1、在【手机号输入框】输入:13800138000(有效手机号)
- 2、在【密码输入框】输入:Test@123456(符合复杂度要求)
- 3、在【验证码输入框】输入:123456(从测试环境获取的有效验证码)
路径完整示例:
- 1、登录系统,进入【控制台】首页
- 2、点击左侧导航栏【用户管理】菜单
- 3、在用户列表页面,点击【新增用户】按钮
- 4、在弹出的新增用户表单中填写信息
预期结果编写模板(必须覆盖多层面)
UI 层面:
- 1、页面跳转至【目标页面名称】
- 2、【元素名称】显示/隐藏(如:成功提示框显示、加载动画消失)
- 3、【按钮名称】按钮状态变为【不可点击/高亮/禁用】
- 4、列表/表格刷新,展示最新数据
- 5、【字段名称】字段显示值为【预期值】
数据层面:
- 1、数据库【表名】表中新增/更新一条记录(字段:XXX,值:XXX)
- 2、缓存数据已更新/清除
- 3、生成的文件已保存至【路径】(如:导出的 Excel 文件)
- 4、关联数据同步更新(如:用户状态变更,关联会话失效)
系统层面:
- 1、接口响应状态码:200(或预期错误码)
- 2、接口响应时间 < X 秒(性能要求)
- 3、系统日志记录操作(日志级别:INFO,内容:XXX)
- 4、消息通知已发送(如:邮件、短信、站内信)
用户体验层面:
- 1、显示【提示信息内容】提示(成功/失败/警告)
- 2、加载状态展示正常(loading 动画、进度条)
- 3、错误提示清晰明确,指导用户下一步操作
- 4、页面响应流畅,无明显卡顿
业务层面:
- 1、业务流程完成(如:订单创建成功,状态变为"待支付")
- 2、状态机流转正确(如:从"草稿"→"已提交"→"审核中")
- 3、业务规则验证通过(如:库存扣减、积分计算)
- 4、后续流程可正常触发(如:审批流程启动)
测试场景覆盖(9 大场景)
完整的测试用例应覆盖以下 9 大场景:
-
功能测试 - 正常业务流程、增删改查、导入导出
- 正向流程:完整业务闭环
- 分支流程:不同选择导致的不同路径
- 数据操作:增删改查 CRUD
-
边界条件测试 - 长度限制、数值边界、格式边界
- 最小值/最大值/临界值
- 空值/null/空字符串
- 最大长度/最小长度
- 特殊字符/emoji/多语言
-
异常场景测试 - 网络异常、服务器异常、数据异常
- 网络超时/断网/弱网
- 服务器 500/502/503 错误
- 数据格式错误/脏数据
- 第三方服务失败
-
安全测试 - SQL 注入、XSS、CSRF、未授权访问、越权操作
- 输入验证绕过
- 权限控制失效
- 敏感数据泄露
- 会话劫持
-
性能测试 - 响应时间、大数据量处理、并发查询
- 单接口响应时间
- 列表分页性能
- 大数据量导入导出
- 并发用户操作
-
用户体验测试 - 空状态、加载中、错误提示、键盘导航、响应式
- 空数据状态展示
- 加载状态友好性
- 错误提示可读性
- 移动端适配
-
并发测试 - 并发编辑、并发删除、并发导入
- 多用户同时操作同一数据
- 重复提交防护
- 乐观锁/悲观锁
-
日志记录测试 - 操作日志、审计日志
- 关键操作留痕
- 日志内容完整性
- 日志查询功能
-
缓存测试 - 缓存命中、缓存失效、缓存更新
- 缓存数据一致性
- 缓存过期处理
- 缓存穿透/雪崩防护
3. 保存到桌面
将生成的 XMind 文件保存到用户桌面:
- Windows:
C:\Users\{用户名}\Desktop\{项目名称}_测试用例.xmind - macOS:
/Users/{用户名}/Desktop\{项目名称}_测试用例.xmind
输出要求
-
需求描述阶段:
- 使用清晰的标题和列表
- 按功能模块 + 测试类型分组
- 标注识别到的测试点和优先级
- 详细说明边界条件和异常场景
- 展示 9 大测试场景的覆盖情况
-
XMind 文件要求:
- 严格遵循模板格式
- 用例命名不重复
- 优先级标注正确
- 步骤和结果对应清晰
- 前置条件、执行步骤、预期结果分别合并到独立节点
- 预置条件至少 3-5 条(覆盖环境、账号、数据、状态)
- 执行步骤至少 3-5 步(详细可执行)
- 预期结果至少 3-5 条(覆盖 UI/数据/系统/体验)
注意事项
- 图片质量:如图片模糊难以辨认,请求用户提供更清晰的版本
- 信息缺失:如图片中信息不完整,主动询问用户补充业务规则
- 多图片处理:如用户上传多张图片,按模块分别生成用例后合并
- 模板一致性:严格遵循用户提供的 template.xmind 格式要求
- 跨平台兼容:确保生成的 XMind 文件在 Windows 和 macOS 上都能正常打开
- 用例深度:避免生成过于简单的用例,每个用例都应该是完整可执行的
工具使用
使用 Python 脚本生成 XMind 文件,确保格式正确。
文件结构:
testcase-creator/
├── SKILL.md # 技能定义
├── README.md # 使用文档
├── template.xmind # XMind 模板文件
└── scripts/
├── generate_xmind.py # XMind 生成脚本(优化版 v2)
└── run.py # 统一执行脚本(跨平台兼容)
模板文件位置:
testcase-creator/template.xmind
方式一:Python 导入调用(推荐用于代码集成)
from generate_xmind import generate_xmind
# 基本用法 - 保存到桌面
generate_xmind(
project_name="项目名称",
test_structure=test_data
)
# 指定输出目录
generate_xmind(
project_name="项目名称",
test_structure=test_data,
output_dir="C:\\Users\\用户名\\Documents"
)
方式二:命令行调用
使用 run.py 统一脚本(跨平台兼容 PowerShell/CMD/Bash):
# 基本用法 - 使用 scripts 目录下的 testcase_data.py
python scripts/run.py --project "项目名称"
# 指定测试数据文件
python scripts/run.py --project "项目名称" --data "testcase_data.py"
# 指定输出目录
python scripts/run.py --project "项目名称" --output "C:\Users\用户名\Documents"
# 完整参数
python scripts/run.py --project "项目名称" --data "testcase_data.py" --output "C:\输出目录" --template "template.xmind"
# 自动清理临时文件
python scripts/run.py --project "项目名称" --data "testcase_data.py" --cleanup
临时文件约定:
- 默认使用
scripts/testcase_data.py文件 - 脚本会自动从
scripts/目录加载测试数据 - 使用
--cleanup参数可在执行后自动删除临时文件
注意: 临时文件应放在 testcase-creator/scripts/ 目录下,避免 workspace 污染。
命令行参数说明
| 参数 | 必需 | 说明 |
|---|---|---|
--project |
✅ | 项目名称(用于生成文件名) |
--data |
❌ | 测试数据文件路径(Python 文件,需定义 test_structure 变量) |
--cleanup |
❌ | 执行后删除 --data 指定的临时文件 |
--output |
❌ | 输出目录(默认:桌面) |
--template |
❌ | 模板文件路径(默认:使用技能目录下的 template.xmind) |
测试数据文件格式(增强版)
测试数据文件需定义 test_structure 变量,格式如下:
# -*- coding: utf-8 -*-
test_structure = {
'功能测试': {
'前端用例': [
# 格式:(用例名称,优先级,[前置条件], [执行步骤], [预期结果])
(
'用户登录 - 正常登录',
'P0',
[
'测试环境已部署(版本:v2.3.1)',
'浏览器:Chrome 120+',
'已创建测试账号(用户名:test_user,密码:Test@123456,状态:已激活)',
'账号权限完整(包含登录权限)'
],
[
'打开系统登录页面(URL: https://test.example.com/login)',
'在【用户名输入框】输入:test_user',
'在【密码输入框】输入:Test@123456',
'点击【登录】按钮',
'等待系统响应(最多等待 5 秒)'
],
[
'页面跳转至控制台首页',
'右上角显示用户昵称:test_user',
'登录成功提示显示:"欢迎回来,test_user"',
'系统日志记录登录操作(时间、IP、设备信息)',
'用户登录状态已保存(cookie/session)'
]
),
],
'后端用例': [
('登录接口验证', 'P1', ['测试环境 API 可访问'], ['调用 POST /api/login 接口', '传入有效用户名和密码'], ['返回状态码 200', '返回用户信息完整']),
]
},
'边界条件测试': {
'前端用例': [
(
'密码长度边界 - 最小长度',
'P1',
[
'已访问登录页面',
'测试账号已准备'
],
[
'在【用户名输入框】输入有效用户名',
'在【密码输入框】输入 5 位密码(低于最小长度 6 位)',
'点击【登录】按钮'
],
[
'登录按钮不响应或显示错误提示',
'密码框下方显示错误:"密码长度至少为 6 位"',
'未触发登录接口调用'
]
),
],
'后端用例': []
},
'异常场景测试': {
'前端用例': [],
'后端用例': []
},
'安全测试': {
'前端用例': [],
'后端用例': []
}
}
关键要求:
- 每个用例的前置条件至少 3-5 条
- 每个用例的执行步骤至少 3-5 步
- 每个用例的预期结果至少 3-5 条
- 前置条件覆盖环境、账号、数据、状态等维度
- 执行步骤详细可执行,包含具体数据
- 预期结果覆盖 UI、数据、系统、体验等层面
跨平台兼容性说明
PowerShell(Windows 默认):
python scripts/run.py --project "名称"
# 或使用分号分隔
cd scripts; python run.py --project "名称"
CMD(Windows):
python scripts\run.py --project "名称"
:: 或使用 && 分隔
cd scripts && python run.py --project "名称"
Bash(macOS/Linux):
python scripts/run.py --project "名称"
# 或使用 && 分隔
cd scripts && python run.py --project "名称"
统一建议使用 run.py,避免 shell 语法差异问题。
用例质量检查清单
生成测试用例后,必须检查以下内容:
- 预置条件是否至少 3-5 条?
- 预置条件是否覆盖环境、账号、数据、状态等维度?
- 执行步骤是否至少 3-5 步?
- 执行步骤是否详细可执行(包含具体数据和操作路径)?
- 预期结果是否至少 3-5 条?
- 预期结果是否覆盖 UI、数据、系统、体验等层面?
- 用例名称是否清晰描述测试目的?
- 优先级标注是否合理?
- 是否覆盖 9 大测试场景?
- 边界条件是否充分(最大值、最小值、空值、特殊字符)?
- 异常场景是否充分(网络、服务器、数据、第三方)?
- 安全测试点是否覆盖(注入、权限、敏感数据)?
- 用例之间是否有重复?
- XMind 文件格式是否正确(可在 XMind 中打开)?