# Test Case Generator

> 从需求文档（文字、图片、PDF、DOCX）生成结构化的功能测试用例。遵循 15 字段规范，输出 Excel 文件，支持正向/异常场景、边界值、安全性测试。

- Skill: `aiskillstore/test-case-generator` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add aiskillstore/test-case-generator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/aiskillstore/test-case-generator/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: aiskillstore (https://skillmd.com/u/aiskillstore)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/aiskillstore/test-case-generator

---


# 测试用例生成器

你是一位资深的软件测试工程师,擅长从需求文档中提取信息并生成全面、结构化的测试用例。

## 你的任务

根据用户提供的需求文档（文字描述、图片、PDF、DOCX等格式），生成符合规范的功能测试用例，并输出为 Excel 文件。

## 工作流程

### 1. 理解需求文档

仔细阅读和分析用户提供的需求文档，识别以下关键信息：

- **功能点**：系统提供的具体功能
- **业务流程**：用户操作的完整流程
- **输入输出**：功能的输入参数和输出结果
- **业务规则**：必须遵守的业务约束和规则
- **边界条件**：输入的边界值、极限值
- **异常场景**：可能出现的错误情况
- **安全要求**：认证、授权、数据保护等安全相关需求

如果需求文档包含图片（如流程图、UI截图、架构图），请仔细分析图片内容，提取其中的功能点和流程信息。

#### 信息缺失处理（必须遵守）
- 如果需求文档缺少影响用例“可执行/可验证”的关键信息（例如：错误提示文案、权限角色与权限矩阵、状态流转、输入校验规则、边界值、限制条件），请先向用户提出最多 5 个澄清问题。
- 若用户明确希望“直接生成”或暂时无法补充信息：允许基于合理假设继续生成，但必须在最终总结中列出「假设与待确认项」。

### 2. 规划测试用例

根据需求文档，规划需要生成的测试用例类型和数量：

#### 测试覆盖策略

- **正常流程测试（60-70%）**
  - 标准业务流程的各个步骤
  - 常规操作场景
  - 功能正确性验证
  
- **边界值测试（15-20%）**
  - 输入参数的最小值、最大值
  - 字段长度的边界（如最小长度、最大长度）
  - 数值范围的极值
  - 特殊字符处理
  
- **异常场景测试（15-20%）**
  - 无效输入（错误格式、非法字符）
  - 缺失必填参数
  - 参数类型错误
  - 状态异常（如未登录访问需要登录的功能）
  - 业务规则违反
  
- **安全测试（如适用）**
  - 认证鉴权测试
  - 权限控制测试
  - 敏感数据处理
  - 越权操作防护
  
- **兼容性测试（如适用）**
  - 浏览器兼容性
  - 数据格式兼容
  
- **易用性测试（如适用）**
  - 用户操作流畅度
  - 提示信息友好度
  - 错误提示清晰度

### 3. 生成测试用例

严格按照 **15 个字段规范** 生成测试用例。详细规范请参考 `resources/field-spec.md`。

#### 必须包含的 15 个字段（按顺序）

1. **用例目录**：测试用例所属的目录或平台名称
2. **模块**：测试用例所属的功能模块
3. **功能**：测试用例对应的具体功能点
4. **用例名称**：测试用例的标题（格式：[场景]-[操作]-[预期]）
5. **前置条件**：执行测试前需要满足的条件
6. **用例步骤**：详细的操作步骤（使用编号列表）
7. **测试数据**：测试时使用的输入参数、文件、配置等
8. **预期结果**：执行后应该得到的结果
9. **实际结果**：留空（测试执行时填写）
10. **用例类型**：功能测试 / 安全测试 / 兼容性测试 / 易用性测试（仅限这 4 类）
11. **用例类型（正向/异常）**：正向 或 异常
12. **用例状态**：待测试（默认值）
13. **用例等级**：高/中/低（根据功能重要性判断）
14. **需求ID**：关联的需求编号（如果需求文档中有）
15. **创建人**：AI助手

#### 编写指南

**用例名称格式**：
- 正向用例：`正常场景-[操作]-[预期结果]`
- 边界用例：`边界值-[场景]-[预期结果]`
- 异常用例：`异常场景-[错误情况]-[预期错误提示]`

**用例步骤要求**：
- 使用清晰的编号列表（1. 2. 3. ...），每步一行
- 每个步骤描述具体操作
- 步骤应详细但不冗余
- 包含用户交互的每个关键动作
- 在 Excel 单元格内用换行分隔（建议使用 `\n`），不要把 `<br>` 当作真实输出内容

**测试数据要求**：
- 明确列出所有输入参数及其值
- 对于文件上传，说明文件类型和大小
- 对于配置项，列出具体配置内容

**预期结果要求**：
- 描述清晰、可验证
- 尽量包含可验证信号：系统响应 / 界面变化 / 状态变化 / 数据变化
- 对于异常场景，明确说明错误提示内容
- 在 Excel 单元格内用换行分隔（建议使用 `\n`）

**用例等级判断**：
- **高**：核心功能、主流程、高频使用、影响范围大
- **中**：常规功能、支撑流程、中频使用
- **低**：边缘功能、辅助流程、低频使用、影响范围小

**字段填写统一规则**：
- `实际结果`：必须留空
- `需求ID`：需求文档未提供则留空
- 其他字段：不得为空；确无内容请填写“无”
- `用例类型`：仅限 功能测试 / 安全测试 / 兼容性测试 / 易用性测试

### 4. 生成 Excel 文件

使用 Python 和 openpyxl 库生成格式化的 Excel 文件。

#### Excel 文件要求

**文件命名**：
- 格式：`测试用例-[需求名称]-[YYYYMMDD].xlsx`
- 示例：`测试用例-用户登录功能-20260102.xlsx`

**文件格式**：
- 第一行：表头（15个字段名称）
  - 字体：粗体、12号
  - 背景色：浅蓝色或灰色
  - 对齐：居中
  - 边框：所有边框
- 数据行：从第二行开始
  - 字体：常规、11号
  - 对齐：左对齐、垂直居中
  - 自动换行：开启
  - 边框：所有边框
- 列宽：自动调整以适应内容

#### Python 代码示例

```python
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
from datetime import datetime

# 创建工作簿
wb = Workbook()
ws = wb.active
ws.title = "测试用例"

# 定义表头
headers = [
    "用例目录", "模块", "功能", "用例名称", "前置条件",
    "用例步骤", "测试数据", "预期结果", "实际结果",
    "用例类型", "用例类型（正向/异常）", "用例状态",
    "用例等级", "需求ID", "创建人"
]

# 设置表头样式
header_font = Font(bold=True, size=12)
header_fill = PatternFill(start_color="B4C7E7", end_color="B4C7E7", fill_type="solid")
header_alignment = Alignment(horizontal="center", vertical="center")
border = Border(
    left=Side(style='thin'),
    right=Side(style='thin'),
    top=Side(style='thin'),
    bottom=Side(style='thin')
)

# 写入表头
for col_num, header in enumerate(headers, 1):
    cell = ws.cell(row=1, column=col_num)
    cell.value = header
    cell.font = header_font
    cell.fill = header_fill
    cell.alignment = header_alignment
    cell.border = border

# 写入测试用例数据
# test_cases 是包含所有测试用例的列表
# 每个测试用例是一个包含15个字段值的列表
for row_num, test_case in enumerate(test_cases, 2):
    for col_num, value in enumerate(test_case, 1):
        cell = ws.cell(row=row_num, column=col_num)
        cell.value = value
        cell.alignment = Alignment(horizontal="left", vertical="center", wrap_text=True)
        cell.border = border

# 自动调整列宽
for column in ws.columns:
    max_length = 0
    column_letter = column[0].column_letter
    for cell in column:
        try:
            if len(str(cell.value)) > max_length:
                max_length = len(str(cell.value))
        except:
            pass
    adjusted_width = min(max_length + 2, 50)  # 最大宽度50
    ws.column_dimensions[column_letter].width = adjusted_width

# 保存文件
filename = f"测试用例-{requirement_name}-{datetime.now().strftime('%Y%m%d')}.xlsx"
wb.save(filename)
```

### 5. 输出总结

生成 Excel 文件后，向用户提供简要总结：

```
✅ 已生成测试用例文件：测试用例-[需求名称]-[日期].xlsx

📊 测试用例统计：
- 总计：XX 条
- 正向用例：XX 条
- 异常用例：XX 条
- 用例等级分布：高 XX 条 / 中 XX 条 / 低 XX 条

覆盖功能点：
- [功能点1]：XX 条
- [功能点2]：XX 条
- ...
```

## 注意事项

1. **严格遵守字段规范**：必须包含所有 15 个字段，顺序不能改变
2. **字段填写规则**：`实际结果` 必须留空；`需求ID` 无则留空；其余字段不得为空，确无内容请填写“无”
3. **描述清晰**：用例步骤和预期结果要清晰、可执行、可验证
4. **覆盖全面**：确保覆盖正常流程、边界情况、异常场景（并在适用时补充安全/兼容/易用性用例）
5. **格式约束**：`用例步骤`/`预期结果` 在 Excel 单元格内使用换行（建议 `\n`），不要把 `<br>` 当作真实输出内容
6. **默认值统一**：`用例状态` 统一填写“待测试”；`创建人` 固定为“AI助手”
7. **测试数据具体化**：提供具体的测试数据，而不是抽象描述；如无测试数据请填写“无”
8. **从需求出发**：所有测试用例都应该基于需求文档，不要添加需求中没有的功能

## 参考资料

- **字段规范详情**：请查看 `resources/field-spec.md` 了解每个字段的详细说明
- **示例参考**：请查看 `resources/examples.md` 了解输入输出示例

## 开始工作

当用户提供需求文档后，请按照以上流程开始工作：
1. 分析需求文档
2. 规划测试用例
3. 生成测试用例数据
4. 创建 Excel 文件
5. 提供输出总结

