vs-testcase-generator
- slug: vs-testcase-generator
- version: 0.1.0
- author: lixinming
- language: zh-CN
- target_audience: tester
- description: 模块选择 → 思维导图 → 用户确认 → 生成/迭代测试用例。支持默认四表 Excel 和自定义 Excel 模板。
- dependencies: python >= 3.7, openpyxl, python-docx, PyMuPDF
- tags: [测试用例生成, 思维导图, 孤儿用例, 直接迭代, 图片提取, 自定义模板]
- license: MIT
硬性门禁
这些规则优先级高于用户给出的文件名、保存路径、"直接生成"、"全部生成"、"不用确认"等表述。
- 初稿 V1.0 生成前,必须先识别模块并让用户选择;用户已在同轮或上文明确点名模块时,复述锁定范围后继续。
- 初稿 V1.0 生成前,必须输出并确认思维导图;只有用户明确回复
确认、通过、可以生成用例或同义清晰确认后,才允许生成 Excel/CSV/MD。 - 展示模块列表的同一轮不得输出思维导图;展示或修改思维导图的同一轮不得生成用例文件。
- 初稿 V1.0 只能依据已确认导图生成,不得补充导图外测试点。
- V1.1+ 迭代按用户明确意见直接修改;仅当用户新增模块、扩大范围或需求不清时,才重新输出并确认导图。
- 默认模板每次生成、迭代或导出后,必须运行统计/自检脚本;存在自检失败、孤儿用例或孤立场景时暂停并展示问题清单。
思维导图
- 根节点固定为
测试用例思维导图;层级固定为模块 → 场景 → 测试点。 - 连接线使用
├─、└─、│和三个空格;场景节点使用场景:前缀,测试点节点使用测试点:前缀。 - 测试方法写在测试点同一行,格式为
测试点:<名称> -> <测试方法>;待确认项标注【待确认】。 - 映射关系:
场景写入场景总览;测试点写入用例标题;->后内容写入测试方法;场景数必须小于或等于用例数。 - 输出导图后询问:
请确认以上思维导图是否符合预期?如无异议请回复“确认”,如需修改请描述调整意见。
标准流程
1. 输入解析与模块选择
提取需求、规则、功能模块和测试点。文档内图片优先自动识别;识别失败时提示用户上传图片、提供文字描述或跳过。输入超过 5000 字符或 150 行时提示拆分。
未明确模块时,展示模块列表并等待用户输入序号、多个序号或 全部:
从您的输入中识别到以下功能模块:
1. 用户登录
2. 待办管理
请选择要生成测试用例的模块(输入序号,多个用逗号分隔;或输入“全部”)。
2. 模板选择
- 无自定义模板:读取
references/default-template.md,使用默认四表模板。 - 有自定义模板:读取
references/custom-template-fill.md,运行python scripts/parse_template.py <模板> --json。缺少steps/expected/title、匹配字段不足、出现ambiguous_candidates或额外字段超过 5 个时,暂停并让用户确认映射或切换默认模板。
3. 初稿生成
进入本步前必须满足:模块已锁定、最新导图已输出、用户已明确确认。
- 默认模板:生成结构化
scenes/casesJSON,运行generate_default_template.py创建 Excel,再运行apply_default_stats.py <文件> --json写回统计和自检结果。 - 自定义模板:生成标准
casesJSON,运行fill_custom_template.py <模板> --cases <cases.json> --output <输出文件> --json。
4. 直接迭代
- 默认模板:按用户意见修改 Excel 后,运行
apply_default_stats.py <文件> --auto-bump-version --change-summary <本次修改要点> --change-remark <影响范围或备注> --json。该命令会自动次版本 +1、同步封面/评审报告版本、追加版本历史、写回统计并自检。需要指定版本时用--version <新版本号>替代--auto-bump-version。 - 自定义模板追加用例:重新运行
parse_template.py,再用fill_custom_template.py输出新版本 Excel。 - 自定义模板修改已有用例:只改用户明确指定的行和字段;禁止改表头、列序、公式列、隐藏列、受保护列和其他工作表;交付说明记录旧值摘要和新值摘要。
- 自定义模板删除用例:默认用状态/备注标记为废弃或不适用;物理删除必须先列出用例编号和行号并等待确认。
5. 终版导出
用户确认终版后导出。默认模板导出前运行 apply_default_stats.py <文件> --json 做最终自检;自定义模板导出现有文件。如需 MD,仅提取用例明细区域。
交付反馈
- 默认模板每次生成、导出或迭代后,基于最近一次脚本 JSON 返回值展示统计摘要。
- 摘要至少包含:输出文件路径、总场景数、有效场景数、孤立场景数、总用例数、P0/P1/P2/P3 数量及占比、正向/逆向数量及占比、覆盖模块、孤儿用例数量、孤立场景数量、自检状态。
- 若
self_check.warnings非空,展示警告摘要;若success=false、orphan_cases非空或isolated_scenes非空,展示问题清单和下一步处理建议,禁止只说“生成完成”。 - 自定义模板追加或修改后,如无法使用默认统计脚本,至少展示本轮写入/修改行范围、用例新增/修改数量、覆盖模块、未填充字段和人工待确认事项。
资源使用
- 默认模板:读取
references/default-template.md;调用scripts/generate_default_template.py、scripts/apply_default_stats.py。默认四表公共字段集中在scripts/default_schema.py。 - 自定义模板:读取
references/custom-template-fill.md;调用scripts/parse_template.py、scripts/fill_custom_template.py。 - 优先级:读取
references/priority-guide.md;统计结果以testcase_auto_stats.py --json为准,Excel 写回以apply_default_stats.py为准。 - 只允许删除本轮 AI 生成的临时文件或产物,禁止删除用户提供的需求文档、自定义模板、历史用例或原始截图。
交互前自检
展示文件路径或统计概览前,确认:
- 初稿 V1.0 已完成模块选择、导图输出和导图确认;V1.1+ 迭代有用户明确修改意见。
- 默认模板已运行统计/自检脚本,且无未处理的孤儿用例或孤立场景。
- 默认模板版本号在封面、评审报告基础信息、版本历史中一致;迭代时版本历史记录能概括本轮变更。
- 自定义模板未改表头、列序、公式列、隐藏列、受保护列和其他工作表。
任一项不满足时,禁止展示交付完成结论,先回到对应步骤处理。