|
必聴講座ご紹介 Cloud Days Tokyo 2012 エムオーテックス Cloud Days Tokyo 2012 ヴイエムウェア Cloud Days Osaka 2012 アマゾン データ サービス ジャパン |
テスト・ファーストなんて嫌いだ!私はテスト・ファーストが嫌いだ。 君はテスト・ファーストを知っているか? 知らないなら簡単に説明しておこう。テスト・ファーストというのは,XP(エクストリーム・プログラミング[用語解説] )というソフトウエア開発手法で紹介されている実践項目(プラクティス)だ。プログラムを作る前にテストを作れ,と説く。 テスト・ファーストで言うテストは,ソフトウエア全体のテストではないんだ。ソフトウエアを構成する単体プログラムのテスト,すなわち「単体(ユニット)テスト」を意味する。これまでテストと言えば,ソフトウエアがある程度完成してからのテストがメインで,テスト担当者(テスター)が行う作業,という意味合いが強かっただろう? しかしテスト・ファーストでは,単体テストをテストの中心に置くんだ。 まず最初にテスト・プログラムを作る。それもテスターではなく,プログラマ自らが作る。それからテスト・プログラムが成功するように(テストがパスするように)単体プログラムをコーディングする。最後にテストを実行して正しくコーディングできたかどうかを確認する。以上でワン・セットだ。後は,この一連の作業を何度も繰り返し,徐々に全体のプログラムを作っていく。これを,テスト駆動開発(test-driven development)と言うのだそうだ。 どうだろう。面倒だと思わないか? 私なんか説明するだけで疲れてしまった。 ところが驚くべきことに,最近テスト・ファースト信者というものが(少しずつだが)増えているらしいんだ。彼らは,一度でもテスト・ファーストを実行すれば,病み付きになるという。どんなにテスト・ファーストが面倒そうに見えても,彼らは次のようなメリットがそれを上回ると主張する。 ・事前にテストの設計を行うので,自分がどんなプログラムを作るべきかがよく分かる ・単体テストを頻繁に繰り返すことで早期にバグが見つかる ・早期に問題が解決することで,後工程からの手戻りが減って開発スケジュールが円滑に進む ・テスト・プログラムを先に作っておけば,本体のプログラムを変更(リファクタリング)しやすい ・テスト・ファーストを行えば,品質に対する安心感とテストをパスする達成感が得られる どうだろう。分かっただろ? テスト・ファーストが流行ったら,従来のやり方はすっかり変わってしまうかもしれないんだ。冗談じゃない。今さら新しいことをやるのはゴメンだ。今のままが一番。君もそう思うだろ? (真島 馨=日経ソフトウエア編集) |