| name | creekmoon-fuxuan-testcase |
| version | 1.0.0 |
| description | 测试用例设计规范,覆盖冒烟测试、分支测试与接口测试模式。当用户需要编写接口测试用例、设计测试方案、评审测试覆盖率、或优化现有测试集时触发。覆盖场景包括:查询/提交/删除/状态流转/文件操作类接口测试、冒烟测试集构建、分支覆盖分析、测试用例重构与复用设计。强调数据驱动、集成度优先、工程化可维护的测试设计。 |
测试工程师:冒烟与分支测试
核心原则
1. 业务意图优先
编写用例前,先回答三个问题:
- 这个接口的业务目的什么?(不是"查询列表",而是"让用户找到他想要的订单")
- 核心业务流程依赖哪些接口?(定义冒烟范围)
- 接口内部有哪些条件分支?(定义分支覆盖目标)
2. 数据驱动设计
最大化复用已有数据,最小化硬编码:
- 先用无参数调用获取基准数据集
- 从返回数据中提取字段值构造后续用例
- 用数据集大小推导分页边界,而非写死页码
- 利用业务上天然互斥的枚举值构造负向用例
3. 集成度优先于细粒度
一个用例覆盖多个验证点,而非一对一映射:
- 查询用例同时验证:返回结构、字段类型、数据一致性、分页
- 提交用例同时验证:创建成功 + 列表可查到 + 详情一致
- 删除用例同时验证:删除成功 + 列表消失 + 重复删除友好
4. 可维护性设计
- 用例名自描述:
查询订单_无参数_返回全部 > test_query_01
- 测试数据与断言分离:抽取公共 Setup,避免断言中写死具体值
- 复用测试夹具(Fixture):同一前置条件下衍生的多个用例共享数据准备
用例设计工作流
分析接口并设计测试用例时,按以下步骤进行:
Step 1: 业务边界分析
1. 阅读接口文档(或代码/注释),识别:
- 接口的输入参数及业务含义
- 返回数据结构及各字段含义
- 明确的业务规则(必填、格式、范围、权限)
- 隐式的业务约束(状态依赖、关联关系、并发限制)
2. 画出分支图:
参数校验分支 → 权限校验分支 → 业务规则分支 → 正常处理/异常处理
Step 2: 冒烟测试集定义
冒烟测试 = 核心流程的最小用例集,阻塞发布的标准。
选取标准:
- 覆盖每个接口至少一条 Happy Path
- 覆盖核心业务流程的端到端调用链
- 覆盖最关键的安全/权限校验点
Step 3: 分支测试设计
在冒烟基础上,按接口类型选择测试模式:
| 接口类型 | 测试模式 | 参考文档 |
|---|
| 查询类 | 渐进式条件验证 | references/test-patterns.md#查询类接口 |
| 表单提交类 | 业务规则驱动 | references/test-patterns.md#表单提交类接口 |
| 删除类 | 级联影响验证 | references/test-patterns.md#删除类接口 |
| 状态流转类 | 状态机覆盖 | references/test-patterns.md#状态流转类接口 |
| 文件操作类 | 格式+边界验证 | references/test-patterns.md#文件操作类接口 |
Step 4: 用例组织
按以下结构输出:
## 模块名:XXX
### 冒烟测试
| 用例ID | 用例名称 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|--------|---------|---------|---------|---------|--------|
| | | | | | P0 |
### 分支测试
[同上等宽表格,优先级 P1/P2]
用例命名规范:
{动作}_{对象}_{条件}_{预期}
示例:
- 查询订单列表_无参数_返回全部数据
- 查询订单列表_按状态筛选_仅返回匹配订单
- 查询订单列表_互斥条件组合_返回空列表
- 提交订单_缺少必填字段_返回参数错误
- 删除订单_已被引用_返回业务约束错误
常见反模式(避免)
| 反模式 | 问题 | 修正方式 |
|---|
| 每个字段一个等价类用例 | 用例膨胀,维护成本高 | 按业务规则分组,一个用例覆盖相关字段组合 |
| 全部硬编码测试数据 | 数据失效导致用例批量失败 | 动态获取基准数据,或抽取数据配置 |
| 只测正常场景 | 线上异常频发 | 每个分支至少一个负向用例 |
| 断言仅校验 code=200 | 业务错误被遗漏 | 断言业务结果(数据存在性、状态正确性) |
| 用例之间无关联 | 重复准备数据,执行慢 | 链式用例:上游用例的输出作为下游的输入 |