前書き
現在、「テスト駆動開発(Kent Beck 著・和田 卓人 訳)」の写経に取り組んでいます。 その中で学んだことについて記述してみる、という記事です。
以降記述していく「3つの実装手法」というのは、テスト駆動開発の基本になる考え方ではないかと思います。
全ての前提
いかなる実装方式を採用するにせよ、全ての前提となるのは「実装より先にテストを書き、テストが通らないことを確認してから実装に移る(RED)」という順序です。 「テストを書かずにいきなり実装に着手する」というのは、テスト駆動開発とは言えません。
仮実装
以下の手順を踏んで実装していく手法です。
- 直値でもなんでもいいので、とにかくテストが通るような実装を作る(GREEN)
- テストが通る状態を維持したまま、より理想的な実装に近づけていく(Refactoring)
テスト駆動開発における実装手法の中で、最も基本的な実装手法と言えるでしょう。
明白な実装
以下の手順を踏んで実装していく手法です。
- 正しいと思われる実装をいきなり書く
- テストが通ることを祈る
「正しいと思われる実装」の見通しが明確である場合に用いる手法です。 想定した実装手法がうまくいかないなら、「仮実装」や「三角測量」といったアプローチに転換していくのですね。
三角測量
以下の手順を踏んで実装していく手法です。
- 複数の実例をテストパターンに記述する
- 全てのテストが通る(GREEN)ように実装していく
「実装方法が皆目見当もつかない」という場合に用いる手法です。
まとめ
テスト駆動開発における実装手法には、以下の3つが存在します。
- 仮実装
- 明白な実装
- 三角測量
以上3つの手法は、場面に応じて使い分けていくものです。 どの手法を用いるかを考えるにあたっては、以下のような判断基準があります。
- 「正しいと思われる実装」の見通しが明確に存在するか否か
- 実装方法について見当がつくか否か