オルタナティブ・ブログ > An Agile Way >

アジャイルに行こう!

「テストしやすい」ことが、良い設計(EoT=Ease of Testing)

»

blogno1良い設計とはなにか、と問われて、凝集度と結合度に関する議論を思いつく人も多いだろう。しかし、この定義によりもっと具体性がある設計方針として、テストを考える。テストの視点によってオブジェクト指向を再定義したい。キーワードは、Eon(Ease of Testing)、テスト容易性だ。

ぼくは、

   EoT(*1)の高い設計が、よいオブジェクト指向設計である。

と主張する。設計品質の中で「テスト容易性(EoT)」を最上位と見るのだ。オブジェクト指向のさまざまな機構、用語、考え方は、すべて EoT のため、と捕らえられる。例えば、

  • 継承という言語機構は、Mockを作るためのもの

  • 実装ではなくインターフェイスに対してプログラミングするのは、テストしやすくするため
  • よいモジュール分割とは、テストしやすいモジュール分割である
  • 循環依存性を排除するのは EoT のため
  • DI(Dependency Injection)は、EoTのためのツール

ちょっと本末転倒に感じられるかもしれない。しかし、他の業界ではテスト容易性をもっと重視している例が多い。例えば、コンピュータのハードウェアは「テストが可能な設計」になっていることが普通だ。テスト用のジャンパーは設計に折り込み済みだし、メモリにはパターンの記録とチェックができる機能がある。

写真は、テレビ局が流す、朝の「テストパターン」。これは、テストが織り込まれたシステムデザインの例だ。テレビプログラムは、最初からテレビの受像機をテストする、という機能を折り込み済みなのである。テストが、最終的な顧客価値の検証になるのだから、テストができない設計など、意味がないのではないか。

他にも、ソフトウェア以外でテストを「折り込み済み」の設計を見つけたらぜひ教えて欲しい。

[1] EoT Ease of Testing、テスト容易性。Testability に替わる平鍋の造語

(参考) アジャイル開発の奥義

http://www.amazon.co.jp/exec/obidos/ASIN/4797323361/xpjp-22

Comment(0)