テスト駆動開発(Test-driven development)について超ザックリまとめてみた
Test-driven development (TDD) という言葉をよく聞くけれど、実際どういうものなのかわかりませんでした。今回はTDDについて調べてわかったことを超ザックリまとめてみました。
テスト駆動開発
テスト駆動開発 (Test-driven development: TDD)とはソフトウェアの開発手法である。プログラム(機能)の実装前にテストコードを書き、そのテスト(テストコード)をパスできるように実装とリファクタリングを進めていく。
基本サイクル
テスト駆動開発の基本サイクルにはレッド、グリーン、リファクタリングという3つのステップが存在する。
レッド
このステップで重要なのは、実装したコードが何も書かれていなくても、先にテストコードを書くこと。そして、そのテストが必ず失敗すること。
このステップでは、実装する機能の要件を適切な粒度に分けて、どんなテストが必要になるかを明らかにする。
グリーン
このステップでは機能の実装を行う。このステップで重要なポイントは、先に書いたテストコードのテスト条件を全てパスできる最小限の(可能な限りシンプルな)コードを書くこと。例えばテストが『文字 'a' を返す』であれば単純に文字'a'を返すコードでもOK。
リファクタリング
テストを全て成功(グリーンの状態に)させたら、次はリファクタリングを行いコードの可読性を高める。
リファクタリングのステップはコードの規模が小さいうちに実施するようにすること。テストをクリアしているからといってリファクタリングを先延ばしにすると、コードの規模が大きくなるにしたがってリファクタリングの負担が増えてしまう。
メリット
バグが減る
TDDのテストにより、多数のバグが開発段階で発見・修正されるため後々に発見されるバグの数が少なくなる。
要件の理解が深まる
テストと実装を繰り返して進めていくため、実装対象への理解を深められる。
デメリット
コーディングが長くなる
TDDでは実装時にテストコードを書くのでコーディングに時間がかかり、レッドのプロセスが疎かになってしまう可能性がある。
テストコードの保守が必要
TDDのテストコードは、実装コード同様にリグレッションテストで使用するために保守が必要。そのため、保守対象のコードが通常より増え、大規模な変更が行われる場合には多くのテストコードを修正する必要がでてくる。
参考書籍
テスト駆動開発について原点から本格的に学びたい方には「テスト駆動開発」がおすすめです。
読者さん募集中
記事を気に入ったら読者登録をお願いします!