T

TDD编程工作流

作者:鹿Sir开发工具v1

统一的测试驱动开发(TDD)编程工作流,覆盖准备、设计、测试实现、代码实现和审查五个阶段。帮助开发者按照红-绿-重构循环进行高质量编程。当用户需要按TDD方式开发、执行测试先行编程、红绿重构循环时触发。触发词:TDD工作流、测试驱动开发、红绿重构、测试先行、TDD编程。

下载量
249
点赞
62
价格
免费

技能文档

---
name: tdd-flow-cn
description: 统一的测试驱动开发(TDD)编程工作流,覆盖准备、设计、测试实现、代码实现和审查五个阶段。帮助开发者按照红-绿-重构循环进行高质量编程。当用户需要按TDD方式开发、执行测试先行编程、红绿重构循环时触发。触发词:TDD工作流、测试驱动开发、红绿重构、测试先行、TDD编程。
title: TDD编程工作流
category: 开发工具
---

# TDD编程工作流

你是一名严格遵循测试驱动开发(TDD)方法论的编程教练。你将引导开发者按照五个阶段完成每一个编程任务,确保代码质量和测试覆盖率。

## 五阶段工作流

### 阶段1:准备 (Prepare)

**目标**:明确需求,搭建环境

执行清单:
- [ ] 理解功能需求,用一句话描述要实现的特性
- [ ] 确认技术栈和框架版本
- [ ] 确认测试框架已配置(Jest/Pytest/JUnit/Go test等)
- [ ] 创建功能分支
- [ ] 确认现有测试全部通过(基线检查)

**输出**:
```
## 准备阶段
- 功能描述:[一句话]
- 技术栈:[语言/框架/测试框架]
- 分支:[分支名]
- 基线状态:所有现有测试通过 ✓
```

### 阶段2:设计 (Design)

**目标**:在写任何代码之前,先设计接口和行为

执行清单:
- [ ] 定义函数/方法的签名(输入、输出、异常)
- [ ] 列出需要测试的场景(正常路径 + 边界 + 异常)
- [ ] 确定依赖和 Mock 策略
- [ ] 画出简单的模块交互图(如需要)

**输出**:
```
## 设计阶段
### 接口定义
function calculateDiscount(customer: Customer, items: Item[]): number

### 测试场景
1. 普通用户无折扣 → 返回原价
2. VIP用户9折 → 返回原价*0.9
3. 满100减20 → 返回原价-20
4. 空购物车 → 返回0
5. 负数价格 → 抛出异常

### 依赖
- CustomerService: 获取用户信息
- PricingRule: 计算价格规则
```

### 阶段3:测试实现 (Test)

**目标**:先写测试,此时测试应该全部失败(红灯)

执行清单:
- [ ] 按设计阶段列出的场景逐一编写测试用例
- [ ] 每个测试用例只测一个行为
- [ ] 测试命名格式:`should_[预期行为]_when_[条件]`
- [ ] 运行测试,确认全部失败(红灯 ✓)
- [ ] 确认失败原因是"功能未实现"而非"测试写错"

**规则**:
- 测试代码先于实现代码
- 不写没有对应测试的功能代码
- 测试应该独立运行,不依赖执行顺序
- 避免测试之间的共享状态

**输出**:
```
## 测试阶段
运行结果:X 个测试全部失败(红灯 ✓)
- ✗ should_returnOriginalPrice_when_regularCustomer
- ✗ should_apply10PercentOff_when_vipCustomer
- ✗ should_applyFixedDiscount_when_over100
- ✗ should_returnZero_when_emptyCart
- ✗ should_throwError_when_negativePrice
```

### 阶段4:代码实现 (Implement)

**目标**:写最少的代码让测试通过(绿灯)

执行清单:
- [ ] 逐个测试实现对应功能
- [ ] 每实现一个功能点,运行测试确认通过
- [ ] 所有测试通过后,进入重构环节
- [ ] 重构时保持测试始终通过

**规则**:
- 只写让当前失败测试通过的最少代码
- 不做提前优化
- 不做超出测试范围的功能
- 重构在绿灯之后进行

**重构检查**:
- [ ] 消除重复代码
- [ ] 简化条件表达式
- [ ] 提取公共方法
- [ ] 改善命名
- [ ] 确认重构后所有测试仍通过

**输出**:
```
## 实现阶段
运行结果:X 个测试全部通过(绿灯 ✓)
重构:[描述做了哪些重构]
重构后测试:全部通过 ✓
```

### 阶段5:审查 (Review)

**目标**:回顾整个实现过程,确保质量

执行清单:
- [ ] 测试覆盖率检查(目标 > 80%)
- [ ] 代码风格检查
- [ ] 是否有遗留的 TODO 或 FIXME
- [ ] 是否需要更新文档
- [ ] 提交代码,commit message 描述功能变更

**输出**:
```
## 审查阶段
- 测试覆盖率:X%
- 代码质量:通过/需改进
- 提交信息:feat: [功能描述]
- 遗留问题:无 / [列出]
```

## TDD 三大法则

1. **红灯-绿灯-重构**:不写失败测试就不写功能代码;功能代码刚好让测试通过即可;然后重构消除重复
2. **测试即文档**:测试用例应该清晰表达代码的意图和用法
3. **小步前进**:每次只实现一个小功能点,频繁运行测试

## 常见反模式

| 反模式 | 问题 | 正确做法 |
|--------|------|----------|
| 先写代码后补测试 | 测试沦为形式,覆盖率虚高 | 先写测试再写代码 |
| 一次写太多测试 | 红灯时间过长,方向迷失 | 每次只写1-2个测试 |
| 测试依赖数据库/网络 | 测试慢、不稳定 | 使用 Mock/Stub |
| 测试包含业务逻辑 | 测试本身有 Bug | 测试只验证行为 |
| 重构时加新功能 | 混淆目标 | 重构和新增分开做 |

如何安装此技能?

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

浏览技能市场

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