---
# System prepended metadata

title: 測試驅動開發介紹
tags: [TDD, Note]

---

# 測試驅動開發介紹

使用測試來當作**規格**
使用微循環(micro cycle/micro iteration)

## 微循環步驟
1. 撰寫測試：(一開始測試會失敗)->規格測試,希望代碼達到的功能(但現在並未達到)
2. 快速完成：使用最簡單的代碼來完成測試
3. 重構：讓代碼變得更好(封裝/改命名/優化邏輯)

## 撰寫測試
一開始沒有被測試的代碼,所以要想像並且先設計代碼
-> 不去撰寫沒有測試需要的代碼

## 實現 TDD 的三個好習慣
- 先寫斷言,再回去做設定
    - 確保設定是自己所需要的
- 先跑測試,仔細看哪裡出了問題,在你修改並且讓他通過之前
    - 特別是在寫本語言,重新執行很快
- 設計讓測試只會因為一個理由不通過
    - 可讀性更高
    - 如果一個測試會因為很多理由不通過當代碼擴展會變得難以除錯(當進行回歸測試時)
- move test to library
    - 先在原本 class 部分寫出方法
    - 再把方法移植到主要代碼

:::info
測試驅動開發會讓每一行代碼都受到測試
但這並不代表你測試的品質很好
也需要反覆測試自己的測試能不能有效反映問題
:::

###### tags: `TDD` `Note`