INDEX
TDDとは?

TDD(Test-Driven Development:テスト駆動開発)とは、プログラム本体より先にテストコードを書いて開発を進める手法です。
「まずテストを書く → テストを通すための最小限のコードを書く → コードを改善する」というサイクルを繰り返すことで、品質の高いプログラムを少しずつ作り上げていきます。
TDDの基本サイクル
TDDでは、次の3つの工程を繰り返します。
| ステップ | 内容 |
|---|---|
| Red | 失敗するテストを書く。 |
| Green | テストが成功する最小限のコードを書く。 |
| Refactor | 動作を変えずにコードを整理・改善する。 |
このRed → Green → Refactorを繰り返すことがTDDの基本です。
ステップ1:Red(失敗するテストを書く)
まずは機能が存在しない状態でテストを書きます。
const add = require("./add");
test("1 + 2 = 3", () => {
expect(add(1, 2)).toBe(3);
});
この時点ではadd()関数が存在しないため、テストは失敗します。
ステップ2:Green(最小限の実装)
次に、テストが通る最小限のコードを実装します。
function add(a, b) {
return a + b;
}
module.exports = add;
これでテストが成功します。
ステップ3:Refactor(改善する)
テストが成功したら、コードを読みやすく整理します。
今回の例では十分シンプルなので変更は不要ですが、実際の開発では重複コードの削除や変数名の改善などを行います。
function add(a, b) {
return a + b;
}
module.exports = add;
リファクタリング後も、すべてのテストが成功することを確認します。
TDDの流れ
TDDは次のような流れで進みます。
- テストを書く。
- テストを実行して失敗を確認する。
- 最小限のコードを書いてテストを成功させる。
- コードを整理する。
- 次の機能について同じことを繰り返す。
TDDのメリット
- バグを早い段階で発見できる
- 安心してリファクタリングできる
- 仕様がテストコードとして残る
- 必要最小限のコードを書く習慣が身に付く
- 保守しやすいプログラムになりやすい
TDDの注意点
- 最初は開発速度が遅く感じることがある。
- テストコードも保守が必要になる。
- 細かすぎるテストを書くと管理が大変になる。
- UI全体の動作確認には別のテストも必要になる。
JavaScriptでよく使われるテストツール
| ツール | 特徴 |
|---|---|
| Jest | 最も利用されているテストフレームワークの1つ。設定が簡単。 |
| Vitest | Vite向けに高速動作する新しいテストフレームワーク。 |
| Mocha | 柔軟性が高く、長年利用されているテストフレームワーク。 |
まとめ
- TDDはテストを先に書く開発手法である。
- 「Red → Green → Refactor」のサイクルを繰り返して開発する。
- 小さな単位でテストすることで品質を維持しやすくなる。
- リファクタリングを安心して行えるようになる。
- JavaScriptではJestやVitestなどのテストフレームワークがよく利用される。