簡単なTDDの難しさ

TDD(テスト駆動開発)について知識が無い人に、TDDを説明する機会がありました。

レッド・グリーン・リファクタリングを説明して、実際の進め方もデモのように見せながら説明したのですが、TDDのテスト対象とする副作用のない純粋な機能を特定するということが、一番の壁となっていることがわかりました。

 

私が普段実践しているTDDは、純粋な概念を特定して、その概念をクラスとして実装する過程をTDDで実装するというものです。モック等を使うようなタイプのテストではないです。モック等を使わないテストというのは非常に簡単に書けるので入門には適しているのですが、「純粋な概念を特定する」というところは、誰でもすぐできる類いのものではないのかもしれません。少なくとも以下を経験的に理解していないと、「TDDのテスト対象とする副作用のない純粋な機能を特定する」ということが難しくなりそうです。

  • 副作用という概念を理解している。
  • 技術詳細(htmlとかデータベースとかファイルとか)を除外して機能を説明できるくらいに、解像度が高い状態で仕様を理解している。
  • 技術詳細について理解している。

簡単にTDDを実践するために、ドメイン駆動設計でドメインを純粋な形で定義できるくらいの理解力が必要になっていると言えるのではないでしょうか?

開発を簡単にするために有効なTDDは、実際私も恩恵を受けています。しかし、説明する機会があったことで、考えなおしてみると導入が困難な難しさを含んでいて、「簡単」と言っていいのだろうか。と思ったメモでした。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

This site uses Akismet to reduce spam. Learn how your comment data is processed.