---
name: testcase-planner
description: 测试规划器 - 基于软件测试理论(场景法、等价类划分、边界值分析)将完备需求拆解为结构化的测试规划,输出测试项(ITEM)和测试点(POINT)。当用户执行 /testcase-plan 命令或需要生成测试规划时使用。
allowed-tools: Read, Write, Bash
---

# 测试规划 Skill

## 1. 目标

识别测试项（ITEM）和测试点（POINT），生成结构化测试规划。

## 2. 输入输出

- 输入：`clarified-requirements/` 目录（主要读取 `index.md`）
- 输出：`test-case/plan.md`

## 3. 核心原则

1. 场景优先：基于场景法识别测试点，而非等价类
2. 独立性：每个 POINT 是独立的操作路径
3. 完整性：覆盖所有业务模块和关键场景
4. 风险导向：评估风险等级，指导用例生成

## 4. 执行流程

### 4.1 层级定义

三层结构：

**ITEM（测试项）**：
- 业务模块或需求章节
- 示例：登录功能、订单管理、用户设置

**POINT（测试点）**：
- 独立的操作路径（场景）
- 示例：用户名密码登录、手机验证码登录、第三方登录

**备注**：
- 风险等级：Critical / High / Medium / Low
- 测试关注点：边界值、异常情况、业务规则等

### 4.2 ITEM 识别

按以下方式划分：

**方式1：按需求章节**
- 需求文档有明确章节结构时使用
- 示例：第3章"用户管理" → ITEM "用户管理"

**方式2：按业务实体**
- 需求文档无明确章节时使用
- 示例：涉及订单的所有功能 → ITEM "订单管理"

**方式3：按功能模块**
- 跨章节的功能集合
- 示例：所有登录相关功能 → ITEM "登录功能"

### 4.3 POINT 识别

基于场景法识别独立操作路径：

**判断标准**：
- 是否是独立的用户操作流程？
- 是否有不同的前置条件或触发条件？
- 是否有不同的业务规则？

**正确示例**：
- "用户名密码登录"、"手机验证码登录"、"第三方登录" → 3 个 POINT（不同操作路径）

**错误示例**：
- "密码长度 <8"、"密码长度 8-20"、"密码长度 >20" → 不是 3 个 POINT（同一场景的不同数据）
- 正确做法：合并为 1 个 POINT "用户名密码登录"，在用例生成时覆盖密码长度的等价类

### 4.4 风险等级评估

4 个等级：

- **Critical**：核心业务流程，影响系统可用性
- **High**：重要功能，影响用户体验
- **Medium**：辅助功能，影响局部功能
- **Low**：边缘功能，影响较小

### 4.5 测试关注点提炼

从以下维度提炼：

- 边界值：长度、数量、时间等限制
- 异常情况：失败、超时、冲突等
- 业务规则：权限、状态、约束等
- 数据约束：格式、范围、依赖等

### 4.6 输出格式

```markdown
# 测试规划

## ITEM 名称

### POINT 名称
> 风险等级: Critical/High/Medium/Low
> 测试关注点: 具体关注点1、具体关注点2

### POINT 名称
> 风险等级: Critical/High/Medium/Low
> 测试关注点: 具体关注点1、具体关注点2
```

## 5. 示例

### 示例1：正确的 ITEM/POINT 划分

```markdown
# 测试规划

## 登录功能

### 用户名密码登录
> 风险等级: Critical
> 测试关注点: 密码错误次数限制（5次）、账户锁定（30分钟）、密码长度边界（8-20位）

### 手机验证码登录
> 风险等级: High
> 测试关注点: 验证码过期（60s）、错误次数限制（5次）、手机号格式验证

### 第三方登录（微信/支付宝）
> 风险等级: Medium
> 测试关注点: 授权失败处理、token过期处理、首次登录绑定流程
```

### 示例2：错误的 POINT 划分

```markdown
## 登录功能

### 密码长度小于8位
> 风险等级: High
> 测试关注点: 提示"密码长度不足"

### 密码长度8-20位
> 风险等级: High
> 测试关注点: 登录成功

### 密码长度大于20位
> 风险等级: High
> 测试关注点: 提示"密码长度超限"
```

**为什么错误**：这3个不是独立场景，而是同一场景（用户名密码登录）的不同数据。应该合并为1个 POINT "用户名密码登录"，在用例生成时覆盖密码长度的等价类。

## 6. 脚本工具

### parse_plan.py

解析和验证 `plan.md` 文件，提取 ITEM/POINT 结构。

```bash
# 解析并验证（严格模式，格式错误时报错退出）
python testcase-planner/scripts/parse_plan.py test-case/plan.md

# 显示详细摘要（ITEM/POINT 列表、风险等级、测试关注点）
python testcase-planner/scripts/parse_plan.py test-case/plan.md --verbose

# 输出 JSON 格式（便于程序化处理）
python testcase-planner/scripts/parse_plan.py test-case/plan.md --json

# 非严格模式（仅警告不报错）
python testcase-planner/scripts/parse_plan.py test-case/plan.md --no-strict
```

**验证规则**：
- 缺少一级标题 `# 测试规划` → 错误
- 无任何 ITEM → 错误
- 无任何 POINT → 错误
- ITEM 名称 < 2 字符 → 错误；> 20 字符 → 警告
- POINT 名称 < 4 字符 → 错误；> 30 字符 → 警告
- ITEM 下无 POINT → 错误

## 7. 检查清单

- [ ] 所有业务模块都已识别为 ITEM
- [ ] 所有独立操作路径都已识别为 POINT
- [ ] 没有将等价类误识别为 POINT
- [ ] 每个 POINT 都有风险等级
- [ ] 每个 POINT 都有测试关注点
- [ ] 风险等级评估合理
- [ ] 测试关注点具体明确（有数值、有条件）
- [ ] 格式符合规范（## ITEM、### POINT、> 备注）
- [ ] 已通过 `parse_plan.py` 验证格式
