# Markmap 测试用例模板

根据项目类型从以下模块中选取需要的，拼装为测试用例文件。不需要的模块直接删除。

> **编写说明**：默认使用**详细格式**。有 UI 功能用四段式（前置条件 / 操作步骤 / 预期结果，优先级标注在名称行）；无 UI 后端功能用协作五段式（前置条件 / 操作步骤（请开发执行）/ 预期结果（请开发反馈）/ 验证方式，优先级同样标注在名称行，不单列字段）。每条用例唯一编号 `TC-{模块号}-{序号}` 写在名称前，P0 冒烟用例名称后追加 `（SMOKE-{序号}）` 标注。模板内其余条目以紧凑占位 `- {操作}，{结果}` 书写，**编写时请展开为对应详细格式并补 TC 编号**；同一子模块共享的前置在标题下用 `> 前置：...` 统一声明，单条只写特有前置。
>
> **正文零代码内部（硬约束）**：正文只用业务语言，禁出现 `文件:行`、SDK 符号、错误码常量、函数名；嵌入具体测试数据（真实编号/字段/值），不要占位符。
>
> **零上下文可执行（硬约束）**：文件头部导读四件套（功能简介+角色表 / 环境与账号表 / 术语表 / 图例）；被测页面首次出现写明到达路径；异步预期写判定时限（等多久不发生算失败）；用例名称断言不超出步骤实际验证强度。
>
> **代码模式**：文件顶部加测准声明（见下方范例）；`代码依据: {文件:行}` **不写进正文用例**，统一放文件末尾附录；Cx 缺陷记录、Dn 风险点、文档偏离、改动文件映射全部放附录区（见文末），与正文用 `---` 分隔，标注"开发核查，非测试执行"。

### 详细格式范例

> **测准声明**（代码模式必加，文件顶部）：本文件以 {仓库} {分支} 实际实现为唯一功能基线；需求/设计文档降为背景对照（偏离见附录）。代码级证据（`文件:行` 等）放文件末尾附录，不写进用例正文。

**A. 有 UI 功能 — 四段式**

> 前置：管理员已登录、项目已创建

- **TC-01-01 正常创建项目** [P0]（SMOKE-1）
  - 前置条件: 无额外前置
  - 操作步骤: 1. 进入「项目创建」页 2. 填写名称+描述 3. 点击提交
  - 预期结果: 创建成功，列表出现新项目卡片并回显名称/项目id

**B. 无 UI 后端功能 — 协作五段式**

> 前置：测试数据见附录 A（图片编号 fb1f2933...）

- **TC-05-01 写入单个文字字段，读回值一致** [P0]
  - 前置条件: 已准备图片编号 fb1f2933f0e837b719d510a200dff31f
  - 操作步骤（请开发执行）: 1. 用 hbase.set 写入：编号=fb1f2933...，字段 lr_label_top="任务动作"，数据类型=图片 2. 用读取功能读回该字段
  - 预期结果（请开发反馈）: 读回的 lr_label_top 值 = "任务动作"，与写入一致
  - 验证方式: 开发查 HBase 该编号的 lr_label_top 字段，反馈实际值

---

# {项目名} 测试用例

<!-- 导读区四件套（硬性产出，正文模块之前）：以零上下文新人能直接开工为标准 -->

> **功能简介**：{一两句话：这是什么功能，解决什么问题}
>
> **角色**：{角色A} → {用它做什么}；{角色B} → {用它做什么}

**环境与账号**（未知信息不省略，列 TODO 标注找谁拿）：

| 项 | 值 |
|----|----|
| 管理后台入口 | {URL 或「TODO：向 {谁} 索取」} |
| App/客户端 | {测试包获取方式 或 TODO} |
| {角色A} 测试账号 | {账号 或 TODO} |
| {被测页面入口} | {导航路径，如 后台 → 营销中台 → 券工场} |

**术语表**（正文出现的每个内部系统名/英文字段名/状态代号，此处可查）：

| 术语 | 中文名 | 说明 |
|------|--------|------|
| {内部系统名} | {中文名} | {一句话解释，如：风控系统，领取前校验用户风险} |
| {英文字段名} | {中文名} | {含义与界面对应} |

**图例**：P0=冒烟（失败则核心不可用）/ P1=常规（默认级别，未标注即 P1）/ P2=边界低频；`TC-{模块号}-{序号}`=用例唯一编号；`（SMOKE-{序号}）`=冒烟用例序号标注（追加在 P0 用例名称后）；`[需Mock]` 等标签见附录可测试性说明。

> 标准测试数据：{集中声明各用例默认复用的数据}

## 1. 基础配置/创建 <!-- 所有项目 -->

### 1.1 创建
<!-- 详细格式 inline 示范：占位条目编写时按此展开 -->
- **TC-01-01 正常创建（必填字段齐全）** [P0]（SMOKE-1）
  - 前置条件: 无额外前置
  - 操作步骤: 1. 填写全部必填项 2. 点击提交
  - 预期结果: 创建成功并生成记录id
- {创建后默认值}，{默认配置正确}

### 1.2 配置
- {配置选项A}，{配置生效}
- {配置锁定/不可变}，{拒绝变更}
- {配置变更后已有数据的行为}，{符合预期}

### 1.3 编辑/重提路径校验 <!-- 有编辑或重新提交入口的项目，二阶交叉高发区 -->
- {创建时的每条校验规则，在编辑路径重复验证}，{同样拦截}
- {驳回/退回后修改为非法值重新提交}，{同样拦截}
- {标识字段（名称/编号）重复提交}，{唯一性行为明确}

## 2. 数据输入/导入 <!-- 有数据导入的项目 -->

### 2.1 正常格式
- {标准格式导入}，{导入成功} [P0]

### 2.2 异常格式
- {字段缺失}，{报错并提示}
- {字段格式非法}，{行级错误}
- {字段映射/别名}，{映射正确}

### 2.3 有效性校验
- {全部有效}，{全部保留}
- {部分无效}，{过滤后保留有效值}
- {全部无效}，{拒绝/告警}

### 2.4 异步与缓存 <!-- 有异步导入的项目 -->
- {异步任务状态}，{可追踪}
- {缓存一致性}，{导入期间变更不影响已加载缓存}

## 3. 核心业务逻辑 <!-- 所有项目 -->

### 3.1 逻辑分支A
- {条件A}，{走分支A} [P0]

### 3.2 逻辑分支B
- {条件B}，{走分支B} [P0]

### 3.3 逻辑分支C
- {条件C}，{走分支C} [P0]

## 4. 操作/交互 <!-- 有用户操作的项目 -->

### 4.1 正常操作
- {正确条件}，{操作成功} [P0]
- {操作后数据变更}，{符合预期}

### 4.2 异常操作
- {错误条件}，{操作被拒绝}

### 4.3 逆向操作
- {释放/退回/取消}，{状态恢复}
- {完整状态流转}，{每步验证}

### 4.4 并发
- {多用户并发}，{无重复无遗漏}

## 5. 数据处理/转换 <!-- 有数据处理的项目 -->

### 5.1 格式转换
- {输入格式A → 输出格式B}，{转换正确} [P0]

### 5.2 聚合/分发
- {多源数据聚合}，{结果正确}
- {单源数据分发}，{各目标数据正确}

## 6. 搜索/筛选/分页 <!-- 有列表查询的项目 -->

### 6.1 搜索
- {精确搜索}，{结果正确} [P0]
- {模糊搜索}，{结果正确}

### 6.2 筛选与排序
- {多条件筛选}，{结果正确}
- {排序}，{顺序正确}

### 6.3 分页
- {首页/末页/中间页}，{数据正确}
- {每页条数变更}，{分页正确}
- {空结果}，{友好提示}

## 7. 权限与角色 <!-- 多角色系统 -->

### 7.1 角色权限
- {普通用户}，{正常操作} [P0]
- {管理员}，{额外权限验证}
- {无权限用户}，{拦截}

### 7.2 权限变更
- {角色变更后}，{权限即时生效}

## 8. 工作流/审批 <!-- 有流程的项目 -->

### 8.1 正常流程
- {完整审批链}，{流程通过} [P0]

### 8.2 异常流程
- {驳回}，{回到上游}
- {超时}，{超时处理正确}

## 9. 通知/消息 <!-- 有通知功能的项目 -->

- {触发通知}，{通知发送成功} [P0]
- {通知内容}，{模板变量替换正确}
- {发送失败}，{重试机制生效}
- {重复触发}，{消息去重}

## 10. 文件上传/下载 <!-- 有文件操作的项目 -->

- {正常文件上传}，{上传成功} [P0]
- {文件类型限制}，{非法类型拒绝}
- {文件大小限制}，{超大文件拒绝}
- {文件下载}，{内容完整}

## 11. 第三方集成 <!-- 调用外部服务；type_scope 轴 10 include standard+ 时选用，type: functional + [集成] 标签 -->

- {外部 API 正常}，{处理正确} [P0]
- {外部 API 超时}，{降级/重试}
- {外部 API 返回异常数据}，{容错处理}

## 12. 多轮/链式流程 <!-- 有多阶段操作的项目 -->

### 12.1 第一轮
- {第一轮操作}，{结果正确} [P0]

### 12.2 第二轮
- {第二轮操作，携带第一轮数据}，{数据完整} [P0]

### 12.3 多轮(>2)
- {第三轮}，{历史累积正确}

## 13. 标签/分类管理 <!-- 有分类体系的项目 -->

### 13.1 标签 CRUD
- {创建标签}，{创建成功} [P0]
- {修改标签}，{修改成功}
- {删除标签}，{删除成功，关联数据处理正确}

### 13.2 分类层级
- {多级分类}，{层级正确}
- {标签关联}，{关联正确}

## 14. 配置管理 <!-- 有配置项的项目 -->

- {新增配置项}，{配置生效} [P0]
- {修改配置项}，{修改后即时生效}
- {删除配置项}，{关联功能降级或使用默认值}
- {配置生效范围}，{仅影响目标范围}

## 15. 边界与异常 <!-- 所有项目 -->

### 15.1 输入边界
- {空值}，{按规则处理}
- {超大值}，{处理正确}
- {特殊字符}，{报错或转义}

### 15.2 数据一致性
- {级联操作}，{关联数据一致}
- {幂等处理}，{重复操作结果不变}

### 15.3 错误信息
- {错误信息}，{含定位信息，格式符合规范}

## 16. 安全性 <!-- Web/API 项目；type_scope 轴 2 include 时 type: security + [安全] 标签用例（硬默认轴），越权功能正确性归模块 7（功能域 permission），域间裁决见 ../../core/test-type-matrix.md 第 2 节 -->

- {未认证访问}，{拒绝} [P0]
- {越权访问}，{拒绝} [P0]
- {SQL 注入/XSS}，{拦截或转义}
- {数据隔离}，{租户间数据不可见}
- {接口限流}，{超限拒绝}

## 17. 前端展示 <!-- 有前端界面的项目 -->

- {页面展示}，{内容正确}
- {交互限制}（防连点/防重复），{限制生效}
- {动态 UI}（条件展示/隐藏），{符合规则}

## 18. 兼容性 <!-- 跨平台项目；type_scope 轴 5 include standard+ 时选用，type: compatibility + [兼容] 标签 -->

- {目标浏览器A}，{功能正常}
- {目标浏览器B}，{功能正常}
- {移动端适配}，{布局正确}

## 19. 国际化 <!-- 多语言项目；type_scope 轴 8 include standard+ 时选用，type: functional + [国际化] 标签 -->

- {语言切换}，{文案正确}
- {时区处理}，{时间显示正确}
- {多语言文案}，{无溢出/截断}

## 20. 并发一致性 <!-- 测试策略 type_scope 轴 4（concurrency）include 且 standard 及以上时选用；type: concurrency，名称行加 [并发] 标签 -->

### 20.1 竞争写入
- {同一资源多端并发提交}，{无重复无遗漏无死锁}

### 20.2 先查后写窗口
- {并发触发先查后写路径}，{结果与串行执行一致}

> 性能（轴 1）为**脚本型**轴：不产手动用例——压测模型与执行物走专项脚本或移交（executor 如 k6，见 ../../core/test-type-matrix.md 第 12 节消费方式映射），本模板不设性能手动用例模块；可靠（轴 3，type: reliability + [可靠] 标签）的超时/重试/降级用例按需在本模块外另立子模块。

## 21. 数据迁移/升级 <!-- 存量系统迭代；type_scope 轴 9 include standard+ 时选用，type: functional + [迁移] 标签 -->

- {Schema 变更后老数据兼容}，{数据可正常访问}
- {迁移完整性}，{无数据丢失}
- {新旧版本共存}，{行为一致}
- {回滚后数据可用}，{数据完整}

---

## 附录：开发技术核查清单（非测试执行项）<!-- 代码模式按需追加 -->

> 以下供开发/评审核查与溯源，测试工程师不执行。代码级证据（`文件:行`）集中于此，**不写进正文用例**。

### 附录 A：缺陷记录 Cx

> 潜在 bug 记录，每条附证据与处置

- **C1 {现象描述}**
  - 证据: {文件:行}
  - 处置: 主线验证 / 专项验证 / 待实测确认 / 已证伪 / 后端范围
- **C2 {现象描述}**
  - 证据/处置: ...

### 附录 B：高风险点 D1-Dn

> 代码审查识别的高风险回归点，每条映射一条正文回归用例

- **D1 {风险描述}** [等级：Critical/High/Medium/Low（Impact × Likelihood 评分，评级规则见 `../../core/risk-model.md`）]
  - 证据: {文件:行}
  - 覆盖用例: {正文用例 TC 编号}
  - 通过判据: {明确判据}
- **D2 {风险描述}** [等级：...]
  - 证据/覆盖用例/通过判据: ...

### 附录 C：代码证据清单（可选）

| 用例编号 | 代码位置 |
|---------|---------|
| {TC 编号} | {文件:行} |

### 附录 D：文档偏离对照

| 设计点 | 文档描述 | 实际实现（文件:行） | 偏离类型 |
|--------|---------|-------------------|---------|
| {设计点} | {文档原文} | {实现} | 字段/流程/默认值/... |

### 附录 E：改动文件映射

| 改动文件 | 影响模块 | 回归用例 | 分类 |
|---------|---------|---------|------|
| {文件} | {模块} | {TC 编号} | 🆕新建/✏️修改/🗑️删除/💀死代码 |

### 附录 F：可测试性说明

> 带 [需真机]/[需Mock]/[需专业环境] 标注的用例逐条列出，替代方案须可行动（平台/工具 + 操作入口）

| 用例编号 | 标注 | 替代方案 | 状态 |
|---------|------|---------|------|
| {TC 编号} | [需Mock] | {平台名与操作入口；未知则「TODO：向 {谁} 确认 {什么}」} | 待确认/已落实 |
