テスト駆動開発

モブプログラミングをやりながら推奨されて買った。

本書は、自分たちのコードに自信を持って開発を続けたいプログラマ、チームリーダー向けに、テスト駆動開発(TDD)の実践方法を解説した“Test-Driven Development By Example"の日本語版です。テスト駆動開発の考案者であるKent Beck自身によって書かれた原典を、日本におけるテスト駆動開発の第一人者である和田卓人氏が訳しました。 テスト駆動開発とは単にテスト自動化を行うことではなく、ユニットテストとリファクタリングを両輪とした小さいサイクルを回すことで不確実性を制御し、不断の設計進化を可能にする手法であることを、実例を通して学ぶことができます。

翻訳者の和田卓人さんも色々わかりやすいスライドを出していて、例えばこれは参考になる。

周囲のエンジニアと話しても、ググってみても、意外と賛否両論の手法見たいだけど、一回理解しておきたい。

todoリストの作り方は、和田卓人さんの例がわかりやすかった。

  • 命題を要素に分けてみる
  • 命題に書かれていない正常系が隠れていないかを見つける
  • テスト可能なサイズに落とし込む
  • 「ただし」のあとは異常系(例外)または準正常系
  • 優先順位に応じて順序を入れ替える

todoリスト

有名なFizzBuzz問題の命題からTODOリストを作る。

1〜100までの数をプリントしなさい。ただし3の倍数では「Fizz」を、5の倍数では「Buzz」を、3と5の倍数では「FizzBuzz」をプリントすること

これをまずざっくりと要素に分けると

  • 1〜100までの数をプリントしなさい。
  • ただし3の倍数では「Fizz」を、
  • 5の倍数では「Buzz」を、
  • 3と5の倍数では「FizzBuzz」をプリントすること

さらに分解して、

  • 数を文字列として返す
  • 数が3の倍数の場合は「Fizz」を返す
  • 数が5の倍数の場合は「Buzz」を返す
  • 数が3と5の倍数の場合は「FizzBuzz」を返す
  • 1〜100までの数を繰り返す
  • プリントする

ここまで行けば、たしかにtest codeがかけそう。