forge-testlisted
Install: claude install-skill gldu/dev-forge
# forge-test — 五轮测试金字塔
## Goal
本 Skill 为 **Change 级轻量门禁**(耗时 ≤ 1 分钟)。侧重于本次变更范围内的单元测试、基础 npm audit 漏洞与轻量 QPS 对比;全盘深度静态 SAST 与高并发 k6 压测请使用专项命令 `forge-sec` / `forge-perf`。
测试不是"跑一下单测",是 5 个维度的金字塔。每轮按项目类型可裁剪。
## Workflow
### 步骤 0 · 声明本次走哪几轮(强制)
在 TEST.md 开头显式输出适用矩阵:
```
| 轮次 | 状态 | 范围 | 跳过理由 |
|---|---|---|---|
| 第 1 轮 · 功能 | ✅ 必跑 | 全部 AC | — |
| 第 2 轮 · 性能 | ✅ / ⚠️ / ❌ | ... | ... |
| 第 3 轮 · 安全 | ✅ / ⚠️ / ❌ | ... | ... |
| 第 4 轮 · 兼容 | ✅ / ⚠️ / ❌ | ... | ... |
| 第 5 轮 · 可观测 | ✅ / ⚠️ / ❌ | ... | ... |
```
禁止没声明就跳过任何轮次。每个 ❌ 必须有理由。
### 第 1 轮 · 功能测试
#### 1.1 测试矩阵
每条 AC 映射到测试用例。强制:每条 AC >= 1 条覆盖。空缺必须解释。
#### 1.2 UAT 脚本
无法自动化的 AC 写 UAT 脚本(前置/步骤/期望/通过失败)。
#### 1.3 覆盖率与边界
- 跑 `<test-cmd> --coverage`,贴输出
- 关键路径行覆盖 >= 项目门槛(默认 80%;core 90%)
- 边界值用例(空/极大/极小/Unicode/null)>= 3 条
- 错误路径必须有显式测试
#### 1.4 测试质量自检 · 6 维测试衰退风险
| 编号 | 衰退风险 | 诊断问题 |
|---|---|---|
| T1 | Test Obscurity | 读这个测试能马上看出「它在验证什么」吗? |
| T2 | Test Brittleness | 重构实现会让这个测试坏掉吗? |
| T3 | Test Duplication | 同一个场景是否被多个测试换个姿势验证? |
| T4 | Mock Abuse | mock 是��遮蔽了真实问题? |
| T5 | Coverage Illusion | 覆盖率高但 assertion 空? |
| T6 | Architecture Mismatch | 测试层级是否与架构匹配? |
路径 A(装了 brooks-lint):`/brooks-test`,输出 4 要素格式贴入 TEST.md。
路径 B(未装):逐个维度检查,命中 >= 3 项 → release 前必修。
#### 1.5 真实 API 端点探活与契约实测 (Live API Testing)
针对 API/后端/Web 服务,强制进行真实 HTTP 请求实测(使用 supertest / httpx / curl / fetch):
- **服务启动探活**:本地/测试 HTTP 服务成功启动,端口监听正常,`/health` 返回 200。
- **真实 Payload 校验**:发送真实 HTTP 请求,校验状态码(200/201/400/401/404)与 JSON 数据结构。
- **模拟数据策略**:
-