第6回 UnitTestをする理由 - テスト講座
TOM先生のテスト講座
Lecutures on PHP
第6回 UnitTestをする理由 (その3)
PHPSpec
http://www.phpspec.org/で配布されているテスティングフレームワークです。BDDに従った開発/テストを行うことができます。Piece FrameworkはPHPSpecを使ったUnitTestに対応しています。
PHPUnitと同じ例をPHPSpecで記述すると次のようになります。
コード4 PHPSpecのテストコード例
<?php
require_once 'Member.php';
class DescribeMember extends PHPSpec_Context
{
private $member = null;
public function before()
{
$this->member = new Member();
}
public function itShould存在しない会員番号で検索したらnull()
{
$this->spec($this->member->find(99999))->should->equal(null);
}
}
PHPSpecとPHPUnit/SimpleTestの最大の違いは動作を確認する部分の記述方法です。"It should ..."というように、英語の文法に近い形でどのような振る舞いをさせたいのかを感覚的に記述できるように工夫されています。我々は残念ながら英語がネイティブ言語ではないので、少し気持ちが伝わってこないですが、日本語的に記述できるようにしようとされている方もいるようです。
実行結果4 PHPSpecの実行結果
$ phpspec MemberSpec . Finished in 0.1190710067749 seconds 1 examples, 0 failures
ここまで見てきてやはり「面倒だなぁ」と感じたかもしれません。自分が書いているコード以外にこのようなテストコードを書かないといけないというのは面倒だと最初は感じてしまうかもしれませんね。
それを解消するために我々Maple Projectが開発しているDocTestというツールを次回紹介したいと思います。
今回のまとめ
- プログラマはいつも"不安"を抱えている
- その"不安"はプログラマの効率を著しく下げる
- 漠然とした"不安"を目に見える形にするのがUnitTestで行うテスト
- プログラマの責務は自分の担当部分を仕様通りに動作させること
- 仕様通りに動作することを保証するためにもUnitTestは必要
- プログラマの原動力は「動いた!!!」という感動
- UnitTestはその感動を後押しする
- UnitTestは他の人の為に記述するものではなく、プログラマが自分のために自分自身で自分が普段使っている言語で記述するもの
次回は?
次回はわれわれMaple Projectが提供するDocTestを使って、より"楽しく"UnitTestを行う方法を紹介したいと思います。
その他の記事も見る
- 第1回 "テスト"ってどんなイメージ?
- 第2回 テストの目的と種類
- 第3回 結合テストをする理由
- 第4回 Seleniumの実行環境を作ってみよう
- 第5回 Seleniumでのテストの記述方法
- 第6回 UnitTestをする理由
- 第7回 DocTestを使ってUnitTestをやってみよう
- 第8回 UnitTestをする理由(再び)
- >>「TOM先生のテスト講座」一覧ページに戻る
- TOM先生
本名:小林智樹
ソリッド・ブルー株式会社 代表取締役CTO http://solidblue.jp/
Mapleプロジェクト コミッター http://kunit.jp/maple/
SI企業にて、運用保守担当として大手企業や各省庁の大規模システムを支える。
その後、起業・独立し、現在はソリッド・ブルー株式会社のCTOとして、PHPを中心とした技術戦略の立案などを行っている。また、PHPフレームワークMapleプロジェクトの一員として、RESTfulやTDDについて普及活動を展開している。





ページのトップへ


今回のような実践的な経験がエンジニアのキャリアに繋がると思います。是非サービスを成功させて下さい!