最後に挙げるのはテスト・プロセスに関する「テスト駆動型開発パターン」である。XP(eXtreme Programming)の提唱者として有名なKent Beck氏が著した「Test Driven Development」(邦題は「テスト駆動開発入門」,ピアソン・エデュケーション刊)で,テストに関する様々なパターンを紹介している(表1)。

表1●テスト駆動型開発で定義するテストに関するパターン
XP(eXtreme Programming)で有名なKent Beck氏は,単体テストにおけるテストのテクニックとして7種類のパターンを定義している
[画像のクリックで拡大表示]
表1●テスト駆動型開発で定義するテストに関するパターン

 テスト駆動型開発におけるテスト・パターンは,いずれも「単体テスト」を対象としているのが特徴だ。具体的には「下位のテスト」や「自己接続」など7種類のパターンを定義。「開発の現場で当たり前に取り入れていることも含むが,モックオブジェクトやログ文字列などのパターンは,利用価値が高い」と,同書の翻訳を手掛けたテクノロジックアートに在籍する藤川幸一氏(テクニカルデプト モデリンググループ システムコンサルタント)は,その効果を強調する。

 例えばモックオブジェクト・パターンは,「高価または複雑なリソース(データベースやモジュールなど)に依存するオブジェクトをどのようにテストするか」を問題としてとらえている。仮に,稼働中のデータベースに接続してテストする必要があるオブジェクトがあったとしよう。しかし,単体テストの段階では,そうしたデータベースに直接接続するのはなかなか難しい。そこでモックオブジェクト・パターンでは,「定数を返す仮バージョンのモジュールを作成し,それを使って単体テストを実施する」という解決策を示している。

 ログ文字列パターンでは,「メッセージが呼び出される順番が正しいことを,どのようにテストするのか」を問題としてとらえている。解決策は「文字列にログを保持し,メッセージが呼び出されるたびに,その文字列にログを追加する」というものである。

テストは失敗して終える

 XPを提唱したKent Beck氏ならではのユニークなパターンも含む。例えば,「失敗するテスト」というパターンでは,1人でプログラムを作成していて作業を中断する場合に,どのようにして終わればよいかという問題をパターンとして示している。この問題に対する解決策は,「最後のテストを失敗して終えること」である。その理由は「最後のテストを失敗していれば,次に作業を始めたときに,どこから手をつけたらよいかが,すぐに分かるから」である。

 テストに関するパターンは,今のところ構成管理パターンの一部とテスト駆動型開発で紹介しているものぐらいしかない。だが,品質要求が一段と高まる中で,今後はさらに発展していく分野の一つと言えそうだ。

 パターンの適用範囲が広がる中で,より重要になるのが「各パターンの組み合わせ」だ。多種多様なパターンが出てくれば,それを適材適所に使い分ける必要がある。個別のパターンを「ミクロ・パターン」とすれば,組み合わせを示したパターンは「マクロ・パターン」と言える。マクロ・パターンには特定分野向けの「J2EEパターン」や「Ajaxデザイン・パターン」などがある。

 これらのパターンはいずれも,アーキテクチャ・パターンやデザイン・パターンの中から,特定の分野に関連するものを抜き出している。その意味では,通常のミクロ・パターンを理解していれば,その習得も難しくはない。

 ここで紹介するパターンは,いずれも書籍として購入できる。取っつきにくいイメージが伴うパターンだが,ぜひその効果に触れてほしい。