TDDとかテストファーストを学んで得られたこと


テスト駆動開発などの、「まずテストから考える」という概念は単純なコーディング部分以外でも思わぬ効用があったので最近お気に入りです。

設計スキルが上がった

最初からテストありきで考えていると、全体の設計もテストしやすい設計を考えるようになります。テストしやすいということは必然的に結合度の低い設計となるわけです。だから結果として設計がうまくなった気がします。

要件定義のスキルが上がった

今までは要件定義の際にまず「これどうやって実装すればいいかな」と考えていましたが、ここも「これどうやってテストすればいいかな」と考えるようになりました。以前よりも何を明確にしなければいけないかがはっきりと分かるようになった気がします。一見可能なように見える要件でも、テストを行うという観点から考えると到底不可能な要件なども見分けられるようになりました。

まとめ:テストと定義は表裏一体

結局テストとは、ある人が決めた定義を確認する手段でしかありません。だからこそ、最初にテストを考えることで定義が明確になり、よりシンプルで明瞭な定義(設計)を目指すようになるのです。こういう考えはソフトウェア開発だけでなく、他の分野においても応用が効くんじゃないかと考えています。