Born Too Late

Yuya's old tech blog.

PHPUnit によるテスト駆動開発 #01 インストール編

2010-07-11 23:54:36

テスト駆動開発とは

テスト駆動開発 (Test Driven Development; TDD) とは、テストケースを書くことからプログラミングを始める、開発手法です。

ざっくり言うと、「このメソッドにこの引数を与えると、この値が返ってくるよね」といったことを、テストコードを用いて検証しながら、開発を進めていくスタイルと言うことができるでしょう。

TDD を知らない人がこの説明を聞くと、「TDD はコードの安全性のための手法である」と思われるかもしれません。
確かに、TDD はコードの安全性をもたらします。
しかし、TDD がもたらすものの中には、「コードの簡潔性」をも含まれます。

何故コードが簡潔になるのか

これは私見ですが、簡潔で読みやすいコードは、「入力と出力の束である」ことが多いです。
それはつまり、メソッド・関数が適切な単位で細かく文節され、それらの協調により組み立てられているコードです。

逆に読みづらい・わかりづらいコードは、「1 つのメソッド・関数が頑張り過ぎている」コードです。
1 つのメソッドが長いと、開発やデバッグの際に、「コード中のどこにバグが潜んでいるのか」を見つけ出すことが困難になります。

TDD による開発では、「テストしやすいコードを書く」ために、必然的に、コードが細分化されます。
その 1 つ 1 つに対して「このメソッドにこの引数を与えると、この値が返ってくるよね」を書いておけば、大幅なリファクタリングも、コードの同質性を検証しながら行うことができます。

TDD と私

新卒で Web エンジニアとして就職した 1 年前、私は TDD を知りませんでした。

そのうち、ブログなどで TDD について知り、Ruby の標準ライブラリ test/unit を使って、遊び程度にテストを書くようになります。

その後、東京 RubyKaigi 03 における、和田卓人氏 (@twada) のワークショップで RSpec の写経を行うことで、TDD の威力を実感することになります。

それ以来、仕事でも、PHPUnit を用いての、TDD による開発を心がけています。

プログラミングについては少しずつ勉強していますが、その中でも一番インパクトがあったのは間違いなく TDD であったと言いきることができます。
とはいえ、まだまったくの初心者レベルなので、勉強しながら、このブログで発表していこうと思います。

PHP Unit をインストール

Ubuntu 10.04 上の LAMP 環境で、PHP5 以上 (筆者は 5.3) 、そして pear がインストールされていることを前提としています。

公式ドキュメントに倣いますが、root 権限が必要となるため、sudo 付きで実行します。

sudo pear channel-discover pear.phpunit.de
sudo pear channel-discover pear.symfony-project.com

上記コマンドで PEAR チャネル (ライブラリのインストール元のサーバ) を追加し、次のコマンドで PHPUnit がインストールされます。

sudo pear install phpunit/PHPUnit

これでインストール完了です。引数無しで phpunit コマンドを実行して、バージョン情報と Usage が表示されれば成功です。
2010 年 7 月 11 日現在では、PHPUnit 3.4.14 がインストールされます。

本日はここまで。
次回は実際にテストコードを書いていく予定です。