🧪
PHPで始めるテスト駆動開発(TDD)入門
🧪 PHPで始めるテスト駆動開発(TDD)入門
テスト駆動開発(TDD:Test Driven Development) は、「テストを書く → 実装する → リファクタリングする」というサイクルでコードを書く開発手法です。
この記事では、PHP初学者向けに TDD の基本的な考え方と、実際のコード例を使った実践方法 をわかりやすく解説します!💡
✅ TDDの基本サイクル(レッド・グリーン・リファクタ)
TDDは、以下の3ステップを繰り返して開発を進めます。
- 🔴 Red(失敗するテストを書く)
- 実装前にテストを書く。まだ機能がないので当然失敗する。
- 🟢 Green(テストが通るように実装する)
- テストが成功する最小限のコードを書く。
- 🛠️ 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