today::エンジニアに憧れる非エンジニア

今のところは、エンジニアとは言えないところの職種です。しかしエンジニア的なものの考え方に興味津津。

テスト駆動開発における、3つの実装手法

前書き

www.amazon.co.jp

現在、「テスト駆動開発(Kent Beck 著・和田 卓人 訳)」の写経に取り組んでいます。 その中で学んだことについて記述してみる、という記事です。

以降記述していく「3つの実装手法」というのは、テスト駆動開発の基本になる考え方ではないかと思います。

全ての前提

いかなる実装方式を採用するにせよ、全ての前提となるのは「実装より先にテストを書き、テストが通らないことを確認してから実装に移る(RED)」という順序です。 「テストを書かずにいきなり実装に着手する」というのは、テスト駆動開発とは言えません。

仮実装

以下の手順を踏んで実装していく手法です。

  1. 直値でもなんでもいいので、とにかくテストが通るような実装を作る(GREEN)
  2. テストが通る状態を維持したまま、より理想的な実装に近づけていく(Refactoring)

テスト駆動開発における実装手法の中で、最も基本的な実装手法と言えるでしょう。

明白な実装

以下の手順を踏んで実装していく手法です。

  1. 正しいと思われる実装をいきなり書く
  2. テストが通ることを祈る

「正しいと思われる実装」の見通しが明確である場合に用いる手法です。 想定した実装手法がうまくいかないなら、「仮実装」や「三角測量」といったアプローチに転換していくのですね。

三角測量

以下の手順を踏んで実装していく手法です。

  1. 複数の実例をテストパターンに記述する
  2. 全てのテストが通る(GREEN)ように実装していく

「実装方法が皆目見当もつかない」という場合に用いる手法です。

まとめ

テスト駆動開発における実装手法には、以下の3つが存在します。

  • 仮実装
  • 明白な実装
  • 三角測量

以上3つの手法は、場面に応じて使い分けていくものです。 どの手法を用いるかを考えるにあたっては、以下のような判断基準があります。

  • 「正しいと思われる実装」の見通しが明確に存在するか否か
  • 実装方法について見当がつくか否か