---
name: tdd
description: 测试先行实现或修 bug、补回归测试，或为已有正确实现补充行为测试时使用。按用户范围区分实现改动与仅补测试；不用于只解释测试概念、解读报错或未要求测试工作的普通讨论。
user-invocable: true
allowed-tools: "Read, Grep, Glob, Write, Edit, Bash(npm *, node *, npx *, vitest *, jest *, pytest *)"
argument-hint: "[file-or-description]"
compatibility: "Use the repository's existing test runner, layout and coverage requirements."
---

# Tests with a purpose

从当前会话和 `$ARGUMENTS` 确定要保护的外部行为，阅读实现、相邻测试和项目约定。
选择下面与用户要求相符的分支，沿用现有框架、fixture、测试布局和覆盖率要求。

## 修 bug 或测试先行实现

1. 写最小目标断言：bug 用例必须复现用户报告的行为；新功能用例表达尚未实现的行为。
2. 运行相关测试，确认 RED 来自该断言，而不是语法、导入、缺凭据或缺环境。
3. 修改让用例通过所需的最小实现，再运行该用例与受影响的相邻测试。
4. 有具体必要时才重构，并重新验证；不顺手扩大功能范围。

完成证据是目标失败的实际输出、最小修复和通过结果。不能复现时先修反馈循环，
如实区分环境故障与目标行为，不能声称已经验证修复。

## 仅给已有实现补测试

当用户要求补边界、增加现有行为保护或明确不改实现时，只修改测试及其必要 fixture。
从公开行为推导有区分度的断言，覆盖正常、边界和相关失败路径。正确实现下，测试
首次运行即可通过；报告它新增保护的行为，不改坏代码、伪造失败或制造 RED。

如果新测试暴露真实缺陷，保留证据并说明；按用户已有授权处理修复范围，不能把
“只补测试”自动扩展成生产代码重构。

## 验证与交付

运行最小有意义的测试范围，按依赖扩大验证。测试可观察结果而非私有实现，避免
照抄实现重算期望值。基础设施缺失时说明具体缺口，不为了补一个用例引入整套配置。

简述实际修改、运行的命令、结果和未覆盖范围；只报告真正经历的阶段，不强制
RED/GREEN/REFACTOR 三段。测试通过不等于所有未测行为正确。
