130 lines
2.4 KiB
Markdown
130 lines
2.4 KiB
Markdown
---
|
||
description: 啟動新的 TDD 會話。遵循 Kent Beck 的純粹 TDD 理念,從第一個測試開始。
|
||
---
|
||
|
||
# TDD Start - 啟動 TDD 會話
|
||
|
||
開始一個新的 TDD 開發會話。遵循 Kent Beck 的理念:從測試開始,讓設計演進。
|
||
|
||
**【功能想法】**:{{brief_idea}}
|
||
|
||
## Kent Beck 的起點
|
||
|
||
> "開始時不要想太多,從最簡單的測試開始。"
|
||
|
||
**不要做:**
|
||
- ❌ 寫完整的需求文件
|
||
- ❌ 規劃所有測試案例
|
||
- ❌ 事先設計類別結構
|
||
- ❌ 想太多細節
|
||
|
||
**要做:**
|
||
- ✅ 想一個最簡單的情境
|
||
- ✅ 寫出第一個測試
|
||
- ✅ 讓測試驅動設計
|
||
|
||
## 開始步驟
|
||
|
||
### 1. 建立開發記錄
|
||
|
||
在 `docs/tdd/{feature_name}/` 建立:
|
||
```
|
||
journey.md - TDD 開發旅程記錄(不是計劃)
|
||
```
|
||
|
||
### 2. 想第一個測試
|
||
|
||
問自己:
|
||
- 什麼是最簡單的使用情境?
|
||
- 什麼是最明顯的行為?
|
||
- 從哪裡開始最容易?
|
||
|
||
**範例思考過程:**
|
||
```
|
||
功能想法:「計算購物車總價」
|
||
|
||
❌ 不要想:
|
||
- 需要支援優惠券
|
||
- 需要處理多幣別
|
||
- 需要計算稅金
|
||
- ...
|
||
|
||
✅ 只想:
|
||
「一個商品的購物車,總價應該等於商品價格」
|
||
|
||
這就是第一個測試!
|
||
```
|
||
|
||
### 3. journey.md 初始格式
|
||
|
||
```markdown
|
||
# {feature_name} TDD Journey
|
||
|
||
## 開始想法
|
||
{簡單描述要做什麼,1-2 句話}
|
||
|
||
## TDD 循環記錄
|
||
|
||
### 第 1 輪 - {日期時間}
|
||
|
||
#### 🤔 想法
|
||
{為什麼要寫這個測試?}
|
||
|
||
#### 📝 下一步
|
||
執行 /kb-red 寫第一個測試
|
||
```
|
||
|
||
## 心態準備
|
||
|
||
Kent Beck 強調的 TDD 心態:
|
||
|
||
**好奇心**
|
||
- "如果我這樣寫測試會怎樣?"
|
||
- 用測試來探索問題
|
||
|
||
**勇氣**
|
||
- 敢於寫會失敗的測試
|
||
- 敢於用最簡單的方式實作
|
||
|
||
**簡單**
|
||
- 從最簡單的開始
|
||
- 不要過度設計
|
||
|
||
**反饋**
|
||
- 頻繁執行測試
|
||
- 快速得到反饋
|
||
|
||
## 範例:開始一個 Money 類別
|
||
|
||
```markdown
|
||
# Money TDD Journey
|
||
|
||
## 開始想法
|
||
建立一個 Money 類別,可以處理金錢運算。
|
||
|
||
## TDD 循環記錄
|
||
|
||
### 第 1 輪 - 2025-10-15 21:30
|
||
|
||
#### 🤔 想法
|
||
最簡單的情境:5 元乘以 2 應該等於 10 元。
|
||
|
||
#### 📝 下一步
|
||
執行 /kb-red 寫第一個測試
|
||
```
|
||
|
||
## 下一步
|
||
|
||
準備好了嗎?執行:
|
||
```
|
||
/kb-red
|
||
```
|
||
|
||
開始寫你的第一個測試!
|
||
|
||
## 記住 Kent Beck 的話
|
||
|
||
> "TDD 的目的不是測試,而是思考。"
|
||
> "從最簡單的測試開始,讓複雜度自然演進。"
|
||
> "如果不知道該寫什麼測試,那就寫一個你知道答案的測試。"
|