🧪

PHPで始めるテスト駆動開発(TDD)入門

に公開

🧪 PHPで始めるテスト駆動開発(TDD)入門

テスト駆動開発(TDD:Test Driven Development) は、「テストを書く → 実装する → リファクタリングする」というサイクルでコードを書く開発手法です。

この記事では、PHP初学者向けに TDD の基本的な考え方と、実際のコード例を使った実践方法 をわかりやすく解説します!💡


✅ TDDの基本サイクル(レッド・グリーン・リファクタ)

TDDは、以下の3ステップを繰り返して開発を進めます。

  1. 🔴 Red(失敗するテストを書く)
    • 実装前にテストを書く。まだ機能がないので当然失敗する。
  2. 🟢 Green(テストが通るように実装する)
    • テストが成功する最小限のコードを書く。
  3. 🛠️ Refactor(リファクタリング)
    • テストが通ることを確認したら、コードを整理してきれいにする。

この流れを繰り返すことで、バグの少ない、メンテナンスしやすいコード を書くことができます。


🛠️ PHPUnitの準備(TDDに必要なツール)

PHPでTDDを行うには、PHPUnitを使います。

1️⃣ composerでインストール

composer require --dev phpunit/phpunit

2️⃣ PHPUnitの初期設定

プロジェクトのルートに phpunit.xml ファイルを作成しておくと便利です。


✍️ TDDを実践してみよう!(例:電卓クラス)

🎯 開発する機能:加算ができる電卓クラス Calculator

1️⃣ Red:失敗するテストを書く

tests/CalculatorTest.php

use PHPUnit\Framework\TestCase;
use App\Calculator;

class CalculatorTest extends TestCase
{
    public function test_add_two_numbers()
    {
        $calc = new Calculator();
        $result = $calc->add(2, 3);

        $this->assertEquals(5, $result);
    }
}

✅ この時点では Calculator クラスが未実装なのでエラーになります。


2️⃣ Green:テストが通るように実装する

src/Calculator.php

namespace App;

class Calculator
{
    public function add($a, $b)
    {
        return $a + $b;
    }
}

phpunit を実行するとテストが通るようになります。


3️⃣ Refactor:必要ならコードを整理する

今回はシンプルなのでリファクタの必要はありません。


📈 TDDを続けてみよう(例:引き算機能を追加)

Red:引き算のテストを書く

public function test_subtract_two_numbers()
{
    $calc = new Calculator();
    $result = $calc->subtract(5, 3);

    $this->assertEquals(2, $result);
}

Green:機能を実装

public function subtract($a, $b)
{
    return $a - $b;
}

✅ このように、必要な機能を1つずつテストから実装するのがTDDの考え方です。


🧠 TDDを学ぶメリット

📌 項目 ✅ メリット
🔍 バグを未然に防げる 実装前に期待動作を考えるので、ミスが少ない
🧼 きれいなコードが書ける テストを通すことを最優先に、最小限のコードでスタートできる
🔁 リファクタリングしやすい テストがあるので、安心して変更できる
📚 設計力が身につく 機能の振る舞いを考える癖がつく

🎯 まとめ

  • TDDは「テスト → 実装 → リファクタ」の繰り返し
  • 失敗するテストから書き始めるのがポイント
  • PHPUnitを使って実践できる!

TDDを習得すると、バグに強く、保守性の高いコードを書けるようになります!💪

🔰 初心者のうちから TDD に慣れておくと、将来の大きな武器になります!

今すぐ、テストから書く開発を始めてみましょう!🚀

Discussion