# Pm Test Cases

> 测试用例生成技能。基于需求说明书或功能描述，自动生成完整测试用例集。适用场景：(1) 从需求说明书生成功能测试用例，(2) 生成边界值/异常/权限测试用例，(3) 生成接口测试用例，(4) 生成测试报告模板，(5) 用户说「写测试用例」「生成测试」「QA测试」「测试文档」「验收标准」时触发

- Skill: `wang-q-l/pm-test-cases` (Agent Skill)
- Install (CLI): `npx skillmds@latest add wang-q-l/pm-test-cases`
- Raw SKILL.md: https://api.skillmd.com/api/skills/wang-q-l/pm-test-cases/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: wang-q-l (https://skillmd.com/u/wang-q-l)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/wang-q-l/pm-test-cases

---


# 测试用例生成

## 核心原则

每条测试用例必须包含：**前置条件 → 操作步骤 → 预期结果**，三者缺一不可。

## 工作流程

### 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 表格格式

```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 | 跳转到登录页 |  | 待测 |
```

#### 接口测试用例格式（可选）

```markdown
## 二、接口测试用例

| 用例编号 | 接口名称 | 方法 | 优先级 | 请求参数 | 预期状态码 | 预期响应 | 实际结果 | 状态 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 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: 生成测试统计

```markdown
## 测试用例统计

| 分类     | 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）
- 每个功能模块独立一个文件，便于维护

## 用例质量检查

生成后自检：

- [ ] 每条用例都有明确的预期结果（不能写"显示正确"）
- [ ] P0 用例覆盖了所有主流程
- [ ] 每个必填字段都有"为空"的测试用例
- [ ] 每个有权限控制的功能都有权限测试

---

## Word 导出功能

测试用例文档可以导出为 Word 格式，使用公共文档导出工具。

### 文档要求

测试用例 Markdown 文件必须包含 YAML frontmatter：

```yaml
---
title: '测试用例'
subtitle: "[项目名称]\n\n[客户名称]"
author: '编制单位：[编制单位名称]'
date: '[年月]'
lang: zh-CN
toc: true
---
```

### 导出命令

```bash
# 使用公共导出工具
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`

- [ ] 删除/修改操作都有"二次确认"验证

