mcpField
T
tdd

tdd

github.com/venhdev测试与质量115 次安装1 天前更新
代码仓库

关于 tdd

面向编码 Agent 的测试驱动开发行为规范,强调通过公共接口验证行为、先确认单个失败测试,再以最少代码实现并重构。

主要功能

  1. 01通过公共接口测试行为
  2. 02实现前编写单个失败测试
  3. 03以最少代码通过测试
  4. 04断言具体不变量
  5. 05遵循红绿重构循环

适用场景

  1. 01根据验收标准实现功能
  2. 02检查领域不变量与边界
  3. 03避免测试依赖私有实现

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/venhdev/skills --skill tdd

安装后在 Claude Code 中输入/tdd确认已加载。

详细介绍

tdd — 测试驱动开发行为协议

操作不变量

  • 仅限公开接口:严格通过公开模块接口测试可观察行为;绝不针对私有辅助方法或内部状态变量进行断言。
  • 单个失败断言(RED):在修改生产代码之前,准确编写一个代表验收标准的失败测试。运行测试,并确认失败原因是预期的断言错误,而非语法或导入错误。
  • 最小化实现(GREEN):只编写使失败测试通过所需的最少生产代码;禁止推测性功能、预先设计的抽象或未经测试的代码分支。
  • 杜绝断言碰运气:针对具体的状态转换、返回数据或领域不变量进行断言;禁止浅层存在性断言(expect(res).toBeDefined()、assert len(x) > 0)。
  • 规范输出约定:(按设计省略——这是由模型调用的行为协议。其输出是生产代码和测试套件的差异。)

领域准则

1. Red-Green-Refactor 循环
  1. RED:编写一个捕获具体验收标准的测试用例。运行测试器以确认 RED 状态。
  2. GREEN:实现通过测试所需的最少逻辑。运行测试器和类型检查器以确认 GREEN 状态。
  3. REFACTOR:删去冗余变量,消除重复逻辑,并使命名符合领域语言,同时保持测试通过。
2. 不变量与属性检查

优先使用不变量测试,而非浅层示例测试:

  • 有界性:对于任意输入,范围边界都必须成立(0 <= discount <= total)。
  • 幂等性:重复应用相同的变更会产生完全相同的结果状态。
  • 往返一致性:序列化和反序列化领域实体后,深度相等性得以保留。

代码异味与改进方法

// Smell: Testing private internals (Couples test to implementation)
expect(service['internalCache'].has('item-123')).toBe(true);

// Remedy: Testing through public observable seam
const result = await service.fetchItem('item-123');
expect(result.id).toBe('item-123');
# Smell: Shallow assertion roulette (Passes even if data is corrupt)
assert response.status_code == 200
assert response.json() is not None

# Remedy: Concrete invariant assertion
assert response.status_code == 200
data = response.json()
assert data["order_id"] == expected_id
assert data["status"] == "CONFIRMED"

评论

支持 Markdown