PHPのPHPUnitを使った単体テスト完全ガイド!初心者でもわかるテストとデバッグ入門
生徒
「PHPでプログラムを書いたんですが、ちゃんと動いているか不安です…」
先生
「それなら、PHPUnitを使った単体テストを学ぶと安心ですよ。」
生徒
「単体テストって何ですか?パソコンもあまり触ったことがなくて…」
先生
「大丈夫です。一つずつ、例え話を交えながら説明します。」
1. 単体テストとは何か?
単体テストとは、プログラムの中のとても小さな部品が正しく動くかを確認する作業です。例えば、電卓を作るときに「足し算ボタンだけ」「引き算ボタンだけ」を個別に確認するようなイメージです。PHPでは、この確認作業を自動で行うためにPHPUnitというテストツールを使います。PHPUnitは、PHPのテストとデバッグでよく使われる有名な仕組みで、初心者からプロまで幅広く利用されています。
2. PHPUnitとは?初心者向けに解説
PHPUnitは、PHPで書いたプログラムが思った通りの結果を出すかをチェックする道具です。人が目で確認する代わりに、PHPUnitが自動で「正しい」「間違っている」を判断してくれます。難しい言葉で言うとテストフレームワークですが、これは「テストを楽にするための道具箱」だと考えてください。PHPの単体テスト、テストコード、デバッグの基本を学ぶ上で欠かせません。
3. PHPUnitを使う準備
まずはPHPUnitを使う準備をします。パソコンを料理台、PHPを包丁だとすると、PHPUnitは味見スプーンのような存在です。一般的にはComposerという管理ツールを使ってインストールします。Composerとは、PHPの便利な道具をまとめて管理する仕組みです。
composer require --dev phpunit/phpunit
この操作で、PHPUnitがプロジェクトに追加され、PHPのテストが書けるようになります。
4. 最初のPHP単体テストを書いてみよう
では、簡単な例でPHPUnitの単体テストを書いてみます。ここでは「2つの数字を足す」だけの関数をテストします。まずはテストされる側のPHPコードです。
<?php
function add($a, $b) {
return $a + $b;
}
次に、この関数が正しく動くかを確認するテストコードを書きます。
<?php
use PHPUnit\Framework\TestCase;
class AddTest extends TestCase {
public function testAdd() {
$this->assertEquals(5, add(2, 3));
}
}
assertEqualsは「期待する答え」と「実際の答え」が同じかを比べる命令です。
5. テストを実行して結果を見る
テストコードを書いたら、実行します。これは「答え合わせ」をする作業です。コマンドを実行すると、PHPUnitが自動で結果を表示します。
vendor/bin/phpunit
問題がなければ「OK」のような表示が出ます。もし間違っていれば、どこがおかしいか教えてくれるので、PHPのデバッグがとても楽になります。
OK (1 test, 1 assertion)
6. 失敗するテストを体験してみる
あえて間違った結果を期待すると、テストは失敗します。これは「間違いに気づく練習」です。例えば、次のように書き換えます。
$this->assertEquals(6, add(2, 3));
すると、PHPUnitは「結果が違う」と教えてくれます。これがPHPの単体テストとデバッグの大きなメリットです。人の目で探すより、ずっと早く安全です。
7. PHPUnitを使うメリット
PHPUnitを使うと、PHPのプログラムが増えても安心です。修正したときに壊れていないかをすぐ確認できます。これは、家の耐震検査を定期的に行うようなものです。PHPのテスト、単体テスト、デバッグを習慣にすると、ミスが減り、自信を持ってコードが書けるようになります。初心者のうちからPHPUnitに触れておくことで、後々とても役立ちます。