dsh-qa-skills
Version:
DeepSeek Harness (dsh) plugin: 10 testing skills (requirement analysis, test strategy, case writing/review, E2E/API automation, exploratory, regression, bug analysis) + shared core knowledge base — a full QA pipeline as agent skills.
139 lines (95 loc) • 9.93 kB
Markdown
# 用例格式规范(case-format)
> 框架级用例格式硬约束全集(`test-case-writing` 编写、`test-case-review` 修订、`bug-analysis` 建议新增用例时统一遵守),编写与定稿自检时**逐条执行本文件**,不是可选参考。从零拼装用例文件的起点模板(含详细格式范例)由 test-case-writing skill 的 templates 目录提供。
## 1. 文件头部导读区(硬性产出,任何模式)
用例正文(第一个模块)之前必须有导读区,标准是**零上下文新人**(新入职、没读过需求文档、没人讲解、只拿到这一份文件)能直接开工。四件套:
1. **功能简介 + 角色表**:一两句话说清这是什么功能;每个角色一行「角色 → 用它做什么」
2. **环境与账号表**:后台入口地址、App/客户端获取方式、每个角色的测试账号。信息未知时**不省略**——列占位行标注「TODO:向 {谁} 索取」,让读者开工前知道要找谁拿什么
3. **术语表**:正文用到的内部系统名(如风控系统代号)、英文字段名、状态代号,逐条「术语 → 中文名 → 一句话解释」。判定标准:正文出现的每个非通用词,术语表可查
4. **图例**:P0/P1/P2 含义与未标注时的默认级别、`SMOKE-` 前缀、`[需Mock]` 等标签含义
## 2. 正文零代码内部(硬约束,最重要)
用例正文是给**测试工程师看和执行**的,必须用业务语言。正文禁出现:
- 代码位置:`文件:行`(如 `set.go:35`、`create.tsx:42`)
- 代码符号:SDK/库的类与函数(如 `srchbase.StringColumn`、`PlatformCli`、`json.Marshal`)
- 错误码与控制流:`resp.Code != 0`、`SetAbort`、`return nil`、`fmt.Errorf`
- 实现术语:`Qualifiers 下推`、`nil 守卫`、`OptionType 分支`
一律改业务语言:`文件:行` → 不出现(落附录);`resp.Code != 0` → "服务端返回业务错误";`SetAbort` → "任务进错误文件";`Qualifiers 下推` → "只返回请求的字段"。
**允许保留**(这些是测试要用的业务/配置事实,不是代码内部):功能/接口/stage 名(如 `hbase.set`)、配置项 key(如 `fields`)、业务字段名(如 `lr_label_top`)、业务枚举值(如 `DataType=图片`)、可观察的日志原文(作为判定标准时引用,如错误信息含 `is required`)。
> 判定标准:随机挑一条用例,让一个**不读代码**的测试工程师复述"我要验证什么、给什么数据、怎么算通过"。复述不出 → 违反本约束,改写。
## 3. 用例编号(硬性,供交叉引用)
- 每条用例唯一编号 `TC-{模块号}-{序号}`(如 `TC-02-03` = 模块 2 第 3 条),写在名称前:`- **TC-02-03 {用例名称}** [P1]`
- 模块号对应正文一级模块编号(`## 2.` 模块的用例为 TC-02-xx)
- P0 冒烟用例在名称后追加冒烟序号标注(如 `(SMOKE-1)`),便于快速抽取冒烟集
- 附录交叉引用(代码证据清单、风险点 Dn 覆盖用例、改动文件映射)与增量更新的变更标记,一律引用 TC 编号
## 4. 详细格式(默认)
**有 UI 功能**用四段式(优先级标注在名称行):
```markdown
- **TC-{模块号}-{序号} {用例名称}** [P0/P1/P2]
- 前置条件: {该条特有的前置;无特有时可省略此行}
- 操作步骤: 1. 进入{页面} 2. 填写{字段} 3. 点击{按钮}
- 预期结果: {页面上能观察到的明确现象}
```
**无 UI 后端功能**用协作五段式(优先级同样标注在名称行,不单列字段):
```markdown
- **TC-{模块号}-{序号} {用例名称}** [P0/P1/P2]
- 前置条件: {已准备的数据,如测试编号/账号}
- 操作步骤(请开发执行): 1. 用{功能名}处理{具体数据} 2. {触发方式}
- 预期结果(请开发反馈): {明确唯一的可观察结果}
- 验证方式: {开发查库/查日志的具体位置与反馈内容}
```
只有用户明确要求紧凑格式、或信息密度优先(冒烟清单、快速审查)时,才使用紧凑格式:
```markdown
- TC-{模块号}-{序号} 操作条件,预期结果 [P0/P1/P2]
```
> 代码模式下 `代码依据: 文件:行` **不写在每条用例里**;若需溯源,在附录「代码证据清单」统一列表(用例编号 ↔ `文件:行`)。
## 5. 步骤与判定细则
- **前置条件去冗余**:同一子模块下多数用例共享的前置(如"已登录管理员""已创建项目X"),在该子模块标题下方用引用块统一声明一次(`> 前置:...`);单条用例的「前置条件」行只写该条额外需要的条件,没有额外前置时可省略该行
- **嵌入具体数据**:操作步骤里用具体的测试数据(真实编号、字段名、字段值),不要写占位符 `{xxx}`,让测试能直接照着执行或整包发给开发
- **页面可达性**:每个被测页面/入口在文件中首次出现时,写清从哪里到达(如「后台 → 营销中台 → 券工场 → 活动列表」)。入口在输入源中未说明时,不得只写「打开 XX 页」蒙混——列入澄清问题,并在导读区环境表标注「TODO:入口待确认」
- **异步行为必含判定时限**:预期结果含「自动变为 / 稍后更新 / 异步生效」时,必须写明等待多久不发生即判失败(如「到达结束时间后 5 分钟内自动变为已结束,超过 5 分钟未变判失败」)。时限无依据时按输入源指标推算或列入澄清问题,不得留白让执行者自定
- **断言范围不超出验证强度**:用例名称的断言不得大于步骤实际能证明的范围——两个样本证不了「全局唯一」,名称应改为「不同活动的编号互不相同」;确需全局断言时改为协作用例(请开发查库确认约束)
- **一条用例只测一个点**:预期结果明确唯一,不写"或 A 或 B"——应拆分为两条
## 6. 可测试性标注
- `[需真机]` → 替代:模拟器 + Mock 数据,标注为 P2
- `[需Mock]` → 替代:写 Mock 脚本并记录在附录中
- `[需专业环境]` → 替代:改为单元测试或标记"需专项测试"
- 类型域轴标签:`[并发]` / `[可靠]` / `[安全]` / `[兼容]` / `[迁移]` / `[集成]` / `[国际化]`——来自测试策略 type_scope 的 include 轴(消费方式映射见 `test-type-matrix.md` 第 12 节),与 Schema 的 type 字段配套
带标注的用例,附录「可测试性说明」必须落到**可行动**:具体平台/工具名与操作入口,未知则写「TODO:向 {谁} 确认 {什么}」。只写「需 Mock 平台配置」而不说平台是什么、找谁,等于没写。
## 7. Markmap 层级规范
```markdown
# 项目名 测试用例
## 1. 模块名
### 1.1 子模块名
#### 1.1.1 细分类别
- TC-01-01 具体测试点 [P0]
```
附录内容(数据模型、参数定义等)放在文件末尾,不影响思维导图渲染。
## 8. 测准声明(代码模式必加,文件顶部)
代码模式下,用例文件顶部必须加测准声明:
> **测准声明**:本文件以 `{仓库} {分支}` 实际实现为唯一功能基线;需求/设计文档降为背景对照(偏离见附录)。代码级证据(`文件:行`、缺陷记录、接口对照)统一放文件末尾附录,**不写进用例正文**(见「正文零代码内部」)。
## 9. 附录区规范(代码模式必含,与正文 `---` 物理隔离)
代码模式的用例文件,除功能用例外,必须含以下产出——**全部放在文件末尾的附录区**,附录顶部标注"开发技术核查清单(非测试执行项)"。Cx/Dn 记录的 evidence 字段格式见 `evidence.md`,Dn 评级见 `risk-model.md`:
- **附录:缺陷记录 Cx**:编号(C1、C2…)+ 现象描述 + `文件:行` 证据 + 证据等级(E0–E4)+ 置信度 + 处置(主线验证 / 专项验证 / 待实测确认 / 已证伪 / 后端范围)
- **附录:高风险点 D1-Dn**:编号 + 风险描述 + 等级(Critical/High/Medium/Low,Impact × Likelihood 评分)+ `文件:行` 证据 + 覆盖用例编号 + 通过判据
- **附录:代码证据清单**(可选):用例编号 ↔ `文件:行` 对照,供开发溯源(Schema 的 `code_refs` 由此抽取)
- **附录:文档偏离对照**:表格列「设计点 / 文档描述 / 实际实现 / 偏离类型」
- **附录:改动文件映射**:表格列「改动文件 / 影响模块 / 回归用例 / 分类(🆕 新建 · ✏️ 修改 · 🗑️ 删除 · 💀 死代码——与阶段一「改动盘点」四类一致,`regression-testing` 沿用同一枚举)」
- **附录:可测试性说明**(任意模式,存在带标注用例时):按 TC 编号逐条列出,替代方案落到可行动
> 这些代码级内容是给**开发/评审**核查用的,测试工程师不执行、也不应被其干扰。Cx/Dn 中映射的"覆盖用例"指向正文中的业务语言用例。**正文与附录物理隔离是本规范的核心要求**——不要把 Cx/Dn/`文件:行` 当作正文的一个模块穿插在功能用例之间。
> 纯文档模式(无代码)不产出以上内容,降级时已提示用户准确性受限。
## 10. 审查记录与变更报告格式
审查记录(追加在文件末尾,附录之后):
```markdown
## 审查记录
- 审查前:XX 条用例,XX 个模块
- 审查后:XX 条用例,XX 个模块
- 新增:XX 条({简述补充了哪些场景})
- 调整:XX 条({简述调整内容})
- P0/P1/P2 分布:XX/XX/XX
```
变更报告(增量更新时追加在审查记录之后):
```markdown
## 测试用例变更报告 — {日期}
- 变更来源:{需求文档版本 / Bug 单号}
- 影响模块:{模块列表}
- 新增用例:XX 条 | 修改用例:XX 条 | 废弃用例:XX 条
```