T

TDD 自主执行

作者:鹿Sir开发工具v1

自主执行计划任务的 TDD 工作流技能。以测试驱动开发实现功能:先写失败测试再最小实现,跑通红-绿-重构循环,内置代码评审关卡、失败根因分析与阻塞任务处理,每个任务原子提交并持续更新计划文件,会话中断后可无损续作。当用户要求「用 TDD 实现这个功能」「先写测试再开发」「按计划任务自主开发」「红绿重构循环」时触发。触发词:TDD、测试驱动、红绿重构、先写测试、自主执行计划、原子提交。

下载量
380
点赞
94
价格
免费

技能文档

---
name: tdd-execution
description: 自主执行计划任务的 TDD 工作流技能。以测试驱动开发实现功能:先写失败测试再最小实现,跑通红-绿-重构循环,内置代码评审关卡、失败根因分析与阻塞任务处理,每个任务原子提交并持续更新计划文件,会话中断后可无损续作。当用户要求「用 TDD 实现这个功能」「先写测试再开发」「按计划任务自主开发」「红绿重构循环」时触发。触发词:TDD、测试驱动、红绿重构、先写测试、自主执行计划、原子提交。
title: TDD 自主执行
category: 开发工具
---

# TDD 自主执行

以测试驱动开发自主执行计划任务的工作流:测试先行、原子任务、证据驱动、进度可持续。每个任务经历「验证基线 → 写失败测试 → 最小实现 → 代码评审 → 提交 → 更新计划」的完整循环。

## 核心原则

- **测试先行**:任何实现前先写失败测试。测试就是「完成」的定义。
- **原子任务**:一个任务 = 一个测试文件 = 一次提交。改动保持小而可审。
- **证据驱动**:不对失败瞎猜。宣布阻塞前必须先做根因分析。
- **进度持续**:每完成一个任务就更新计划文件,进度不因会话中断丢失。

## 技能工作流

### 步骤1:验证基线(Verification Sweep)

动手前先建立事实基线:运行现有测试套件与验证命令,确认当前全绿;记录基线状态,避免把既有失败误判为新问题。

### 步骤2:选取下一个任务

按编号取第一个 pending 状态的任务。同一时间只做一个任务。

### 步骤3:红灯阶段——写失败测试

先定义期望行为,再写任何实现。测试即规格。

1. 阅读任务描述与相关 Gherkin 场景
2. 根据验证命令确定测试文件位置
3. 编写捕获该场景行为的测试
4. 运行验证命令,确认测试**失败**

测试质量标准:

- 标题描述结果而非实现(「应在注册成功后返回确认信息」,而非「调用 register 函数」)
- 测试只验证 Gherkin 场景本身——替换实现而不改测试,测试仍应成立
- 每个测试单一职责

Gherkin → 测试的映射示例:

```gherkin
Scenario: 有效邮箱注册成功
  Given 我是新用户
  When 我用邮箱 "user@example.com" 和密码 "SecurePass123" 注册
  Then 我的账号应被创建
  And 我应收到确认信息
```

```typescript
describe('User Registration', () => {
  it('should create account and return confirmation for valid registration', async () => {
    // Given: 新用户(无需前置设置)

    // When: 使用有效凭据注册
    const result = await register({
      email: 'user@example.com',
      password: 'SecurePass123'
    });

    // Then: 账号创建并返回确认
    expect(result.success).toBe(true);
    expect(result.message).toContain('confirmation');
  });
});
```

**测试意外通过**:说明任务可能已完成——重跑验证基线确认;确实完成则直接更新状态进入下一任务。

### 步骤4:绿灯阶段——最小实现

1. 只写让测试通过所需的最少代码
2. 每次改动后运行验证命令
3. 通过即止

实现纪律:

- 不实现测试未覆盖的功能
- 不过早优化
- 绿灯阶段不顺手重构

**连续 3-5 次尝试仍失败**:停止随机试错,转入根因分析(见步骤 7)。

### 步骤5:代码评审关卡

提交前以独立视角评审实现(可启动独立的评审环节或子代理,保持与实现者视角分离):

```text
评审请求:
任务:<任务描述>
场景:<相关 Gherkin>

检查项:
- 实现是否满足 Gherkin 场景?
- 代码质量与最佳实践
- 安全考量
- 测试质量

变更文件:<列表>

回复:APPROVED 或 NEEDS_CHANGES(附具体意见)。
```

评审循环:NEEDS_CHANGES → 落实意见 → 确认测试仍通过 → 再次送审;**最多 3 轮**。3 轮后仍未通过:对评审意见本身做根因分析,找出未触及的核心问题——针对性修复,或标记阻塞。

### 步骤6:原子提交与更新计划

提交信息格式:

```
<type>(<scope>): <subject>

<body>

Task: <编号> - <描述>
```

type 取值:`feat` 新功能 / `fix` 修 Bug / `refactor` 重构 / `test` 仅测试 / `docs` 文档。

```bash
git add -A
git commit -m "<message>"
```

一个任务一次提交,不合并打包。提交成功后立即更新计划文件中该任务状态:

```markdown
**Status**: pending   →   **Status**: complete
```

同时用任务清单工具实时跟踪进度,每完成一项即更新。

### 步骤7:失败处理

**测试修不过**(实现尝试 3-5 次后):

1. 停止随机试错
2. 做根因分析:用五问法(five-whys)从报错现象和已尝试方案出发,找出真正的根因
3. 按根因修复后重试
4. 仍失败则标记阻塞:

```markdown
**Status**: blocked
**Root Cause**: <根因说明>
```

**评审循环不收敛**(3 轮后):对评审反馈做根因分析,找出为什么修复总没打到点上;要么针对性修复,要么标记阻塞。

**环境问题**:因环境导致的测试失败——记录问题并报告用户,**不标记任务阻塞**(环境问题需要人工介入)。

### 步骤8:会话中断与续作

计划文件始终反映真实状态:已完成任务标记 complete,当前任务保持 pending,不留部分提交的半成品。续作时:重跑验证基线 → 从第一个 pending 任务继续 → 不重复已完成工作。

### 步骤9:收尾

全部完成:

```markdown
## Work Complete
**Plan**: <计划文件>
**Tasks**: X/X complete
**Commits**: N commits
所有任务已验证完成,可进入最终评审。
```

存在阻塞:

```markdown
## Work Blocked
**Plan**: <计划文件>
**Progress**: X/Y complete
**Blocked on**: 任务 N
Root Cause: <说明>
需要人工介入。
```

使用说明

# TDD 自主执行

以测试驱动开发自主执行计划任务:验证基线 → 写失败测试 → 最小实现 → 代码评审关卡(最多 3 轮)→ 原子提交 → 更新计划。失败时先做五问法根因分析再动手,会话中断后可无损续作。

## 最简用法

```text
用 TDD 自主执行这份开发计划:plan.md
```

```text
按红绿重构循环实现用户注册功能,每个任务单独提交
```

## 特点

- 测试先行:测试即规格,意外通过即识别重复工作
- 原子任务:一个任务一个测试文件一次提交
- 评审关卡:独立视角评审,3 轮不收敛自动升级根因分析
- 进度可持续:计划文件实时更新,中断续作不丢进度
- 阻塞有据:绝不瞎猜,根因不明不宣布完成

如何安装此技能?

访问技能市场,点击「安装」按钮,按提示将技能包放入 AI 编程助手的 skills 目录即可。

浏览技能市场

支持平台:Qoder · QoderWork · Claude · Codex 等 AI 编程助手