---
name: boundary-case-testcase-generator
description: 从 PRD、需求文档、用户故事、功能说明、接口说明、UI 交互说明或业务规则中，生成、补充、优化和评审测试用例，尤其擅长边界值、极值、空值、越界、长度限制、状态切换、权限、时间、金额、枚举、组合条件等场景。只要用户要根据需求生成测试用例、完善测试点、补充边界场景、检查是否遗漏边界条件，就应优先使用此 Skill。
---

# 边界值测试用例生成

请将输入的 PRD、需求说明、业务规则、接口文档或 UI 说明，转换为适合入库的测试用例 JSON。

## 适用场景

当用户希望你：
- 根据 PRD 或需求文档生成测试用例
- 补充边界值、异常值、极限值测试点
- 评审某个功能是否遗漏关键测试场景
- 将模糊需求拆成更细的测试点
- 为接口、页面、流程、规则、权限生成详细用例

如果信息不足，不要自行编造需求；应使用“待确认”标记不明确部分，并继续围绕已知信息生成可验证的测试点。

## 任务目标

你的目标不是写总结，而是输出可直接入库的测试用例数据。重点是：
- 覆盖边界值、异常输入、临界状态和业务限制
- 用更细的粒度拆解测试点，避免一个用例覆盖太多内容
- 保持用例名称具体、步骤清晰、预期可检查
- 严格遵守固定 JSON 输出结构

## 分析步骤

### 1. 先识别需求对象
从输入中提取：
- 业务目标
- 功能模块与子模块
- 输入字段、参数、条件、状态
- 约束规则：长度、范围、格式、时间、金额、频率、并发、权限、依赖关系
- 成功路径与失败路径

### 2. 再提取边界点
优先寻找以下边界：
- 数值边界：最小值、最大值、临界值、0、负数、极大值、小数精度
- 字符边界：空字符串、仅空格、最短、最长、特殊字符、中文/英文/表情
- 集合边界：无数据、1条、最大条数、重复项、顺序变化
- 时间边界：起止时间、跨天、跨月、当前时间、过期、时区
- 状态边界：未开始/进行中/已完成/已失效/已取消
- 权限边界：未登录、无权限、角色切换、越权访问
- 组合边界：多个限制同时触发

### 3. 设计用例
每个用例都要尽量单一、具体、可执行：
- title 写成“具体场景 + 测试点”
- module_name 写明父模块/子模块/叶子模块
- precondition 写清楚前置条件；没有就写“待确认”
- steps 用数字编号逐行写
- expected_result 也必须逐行编号
- priority 默认按风险和影响判断；若无明确规则，优先级可保守取 2
- case_type 使用平台要求的枚举值；若无更多信息，按功能/边界验证类用例理解为 1
- tags 至少保留“AI生成”

### 4. 输出前自检
检查是否满足：
- 是否覆盖边界值与异常值
- 是否存在编造需求的内容
- 是否每条用例都足够具体
- 是否 steps 和 expected_result 都是编号格式
- 是否完全符合固定 JSON 结构

## 输出约束

必须只输出一个 JSON 对象，不要输出 Markdown、解释、代码块或多余文本。

固定输出结构如下：

{"cases":[{"title":"用例名称/测试点名称","module_name":"父模块/子模块/叶子模块","precondition":"前置条件","steps":"1. 步骤1\n2. 步骤2","expected_result":"1. 预期结果1\n2. 预期结果2","priority":2,"case_type":1,"tags":["AI生成"]}]}

## 编写原则

- 以需求为准，不臆造不存在的规则
- 细化到可执行层级，不要把多个独立场景揉成一个大用例
- 边界值优先于笼统的“正常/异常”描述
- 预期结果要可观察、可判断、可入库
- 当需求模糊时，保留“不确定项”，并围绕已知规则生成用例

## 示例

输入示例：
“用户在注册页输入手机号，手机号为 11 位，验证码 6 位，密码长度 8-20 位。”

输出示例：
{"cases":[{"title":"手机号输入位数下限边界校验","module_name":"注册页/手机号输入","precondition":"用户进入注册页","steps":"1. 在手机号输入框输入 10 位手机号\n2. 点击获取验证码或提交","expected_result":"1. 系统提示手机号格式不正确\n2. 不允许继续提交","priority":2,"case_type":1,"tags":["AI生成"]},{"title":"密码长度上限边界校验","module_name":"注册页/密码输入","precondition":"用户进入注册页","steps":"1. 在密码输入框输入 20 位密码\n2. 点击提交","expected_result":"1. 密码可正常通过长度校验\n2. 若其他字段满足要求，提交成功","priority":2,"case_type":1,"tags":["AI生成"]}]}

## 处理信息不足的方式

如果需求中没有明确说明：
- 是否允许空值
- 最大长度是多少
- 时间范围如何计算
- 是否支持特殊字符
- 权限边界如何定义

则在用例里明确写“待确认”，不要推测具体规则；同时继续生成基于已知条件的边界值测试点。
