| name | pm-test-cases |
| description | 测试用例生成技能。基于需求说明书或功能描述,自动生成完整测试用例集。适用场景:(1) 从需求说明书生成功能测试用例,(2) 生成边界值/异常/权限测试用例,(3) 生成接口测试用例,(4) 生成测试报告模板,(5) 用户说「写测试用例」「生成测试」「QA测试」「测试文档」「验收标准」时触发 |
测试用例生成
核心原则
每条测试用例必须包含:前置条件 → 操作步骤 → 预期结果,三者缺一不可。
工作流程
Step 1: 读取上下文
优先读取以下文件(如存在):
docs/spec.md —— 需求说明书
docs/requirements.md —— 需求文档
- 用户直接粘贴的功能描述
用 AskUserQuestion 确认:
- 测试范围(全量 / 指定模块)?
- 测试类型(功能/边界/异常/权限/接口,可多选)?
- 输出格式(Markdown表格 / Excel结构 / 禅道/TAPD导入格式)?
Step 2: 分析功能模块
从需求说明书提取:
- 所有功能点(增删改查、状态流转、业务规则)
- 用户角色与权限
- 关键业务流程
- 数据字段和验证规则
Step 3: 生成测试用例
用例分类体系
功能测试 → 正向流程(Happy Path)
边界测试 → 输入边界值、长度极限、数量极限
异常测试 → 错误输入、网络异常、并发操作
权限测试 → 角色越权、未登录访问
接口测试 → API参数、响应格式、错误码
用例优先级
- P0(冒烟测试):核心主流程,每次上线必测
- P1(核心功能):主要功能的正向 + 关键异常
- P2(完整覆盖):边界值、边缘场景
- P3(探索性):性能、兼容性、用户体验
Step 4: 输出格式
标准 Markdown 表格格式
# [模块名称] 测试用例
**版本**:v1.0 **编写日期**:[日期] **编写人**:[姓名] **关联需求**:docs/spec.md § [章节号]
---
## 测试范围
[说明本次测试覆盖的功能模块]
## 测试环境
- 浏览器:Chrome 最新版 / Safari
- 分辨率:1920×1080
- 账号:[测试账号说明]
---
## 一、[功能模块名] 测试用例
### 1.1 功能测试
| 用例编号 | 用例标题 | 优先级 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 | 实际结果 | 状态 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| TC-001 | 正常新增[资源] | P0 | 已登录,有新增权限 | 1.点击【新增】按钮<br>2.填写必填字段<br>3.点击【保存】 | 名称:测试数据001 | 1.弹窗关闭<br>2.列表新增一条数据<br>3.提示"保存成功" | | 待测 |
| TC-002 | 必填字段为空提交 | P1 | 已登录 | 1.点击【新增】<br>2.不填任何内容<br>3.点击【保存】 | 所有字段为空 | 1.弹窗不关闭<br>2.必填字段显示红色提示<br>3.提示"XX不能为空" | | 待测 |
### 1.2 边界测试
| 用例编号 | 用例标题 | 优先级 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 | 实际结果 | 状态 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| TC-010 | 名称字段最大长度 | P2 | 已登录 | 1.新增时名称输入50个字符 | 50个中文字符 | 正常保存 | | 待测 |
| TC-011 | 名称字段超出最大长度 | P2 | 已登录 | 1.新增时名称输入51个字符 | 51个中文字符 | 输入框限制输入/提示超出长度 | | 待测 |
### 1.3 异常测试
| 用例编号 | 用例标题 | 优先级 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 | 实际结果 | 状态 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| TC-020 | 删除关联数据 | P1 | 已登录,数据已被引用 | 1.选择已关联的数据<br>2.点击【删除】<br>3.确认删除 | 已被引用的数据 | 提示"该数据已被使用,不能删除" | | 待测 |
| TC-021 | 并发新增重复数据 | P2 | 已登录 | 1.快速连续点击【保存】两次 | 相同表单数据 | 只新增一条数据,不重复提交 | | 待测 |
### 1.4 权限测试
| 用例编号 | 用例标题 | 优先级 | 前置条件 | 测试步骤 | 预期结果 | 实际结果 | 状态 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| TC-030 | 无权限用户访问 | P0 | 登录无对应权限的账号 | 1.访问[功能]页面 | 页面不显示 或 操作按钮不可见 | | 待测 |
| TC-031 | 未登录访问 | P0 | 未登录状态 | 1.直接访问功能URL | 跳转到登录页 | | 待测 |
接口测试用例格式(可选)
## 二、接口测试用例
| 用例编号 | 接口名称 | 方法 | 优先级 | 请求参数 | 预期状态码 | 预期响应 | 实际结果 | 状态 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| API-001 | 获取列表 | GET | P0 | page=1&pageSize=10 | 200 | data.list为数组,total为数字 | | 待测 |
| API-002 | 新增数据 | POST | P0 | {name:"test",status:1} | 200 | code=0, msg="success" | | 待测 |
| API-003 | 缺少必填参数 | POST | P1 | {} | 200 | code=400, msg含"参数错误" | | 待测 |
Step 5: 生成测试统计
## 测试用例统计
| 分类 | P0 | P1 | P2 | P3 | 合计 |
| -------- | ----- | ----- | ----- | ----- | ----- |
| 功能测试 | X | X | X | X | X |
| 边界测试 | - | X | X | X | X |
| 异常测试 | X | X | X | - | X |
| 权限测试 | X | X | - | - | X |
| **合计** | **X** | **X** | **X** | **X** | **X** |
**冒烟测试集(P0)**:X 条,预计耗时 X 分钟 **完整回归集(P0+P1)**:X 条,预计耗时 X 分钟
输出规范
- 文件保存路径:
docs/test-cases-[模块名].md
- 用例编号格式:
TC-[模块缩写]-[序号](如 TC-USER-001)
- 每个功能模块独立一个文件,便于维护
用例质量检查
生成后自检:
Word 导出功能
测试用例文档可以导出为 Word 格式,使用公共文档导出工具。
文档要求
测试用例 Markdown 文件必须包含 YAML frontmatter:
---
title: '测试用例'
subtitle: "[项目名称]\n\n[客户名称]"
author: '编制单位:[编制单位名称]'
date: '[年月]'
lang: zh-CN
toc: true
---
导出命令
bash .claude/skills/common/doc-export/scripts/export-word.sh docs/test-cases.md
bash .claude/skills/common/doc-export/scripts/export-word.sh docs/test-cases.md docs/测试用例.docx
样式说明
导出的 Word 文档使用统一的样式配置,与需求说明书、操作手册保持一致。详细配置请参考:.claude/skills/common/doc-export/README.md