【ソフトウェア開発】短サイクルで回せ!「テスト駆動開発(TDD)」のプロセス|情報処理問題1000本ノック
システム開発において、プログラムを書く「前」にテストを作成する手法をテスト駆動開発(TDD:Test-Driven Development)と呼びます。TDDは一度に大きく作るのではなく、数分〜数十分単位の小さなサイクル(イテレーション)を何度も反復しながら高品質なコードを作り上げていくのが大きな特徴です。前後の工程も含めた基本的なプロセスを攻略しましょう。
■ テスト駆動開発(TDD)のサイクル:4つの基本ステップ
「まず不合格(Red)を確かめてから合格(Green)させ、美しく磨く(Refactor)」という視点で、それぞれの特徴を整理します。
| ステップ | 作業内容と目的 | 通称(状態) |
|---|---|---|
| 1. テストコードを書く | 実装したい機能の仕様(要件)に基づいて、先に自動テストコードを作成する。この時点では処理本体のプログラムは存在しない。 | 準備段階 |
| 2. テストの実施・失敗確認 | テストを実行し、意図通り「不合格(失敗)」になることを確認する。テスト自体が正しく動作していること(誤検知しないこと)を確かめる重要プロセス。 | Red(レッド) |
| 3. コード実装・テスト合格 | テストを合格させるためだけに最小限のコードを書く。綺麗さよりも、とにかくテストを通す(合格させる)ことを最優先する。 | Green(グリーン) |
| 4. リファクタリング | テストが合格した状態(動く保証がある状態)を維持しながら、コードの重複を排除し、構造を綺麗に整理する。 | Refactor(リファクタ) |
試験対策の重要キーワード&前後の工程
- 前工程(要件の分解):いきなりコードを書くのではなく、実装したい機能を「1つの小さな動作単位(数分〜数十分で終わるレベル)」に細かく分解してからステップ1に入ります。
- イテレーション(反復開発):ステップ1〜4の1サイクルを「数分〜数十分」という超短時間で何度もグルグル回します。1つの機能ができたら、次の小さな機能のテスト作成へ進みます。
- リファクタリング(Refactoring):外部から見たプログラムの動作(挙動)を変えずに、内部構造(読みにくさや重複)だけを改善する作業のことです。テストがあるおかげで壊す恐怖なく整理できます。
- 回帰テスト(レグレッションテスト):後から機能を追加・リファクタリングした際、過去に作ったテストを一斉実行して「既存機能が壊れていないこと」をいつでも即座に検証できます。
※TDDは「プラモデルの説明書(テスト)を先に作ってから、パーツ(コード)を組み立て、最後にバリ取り(リファクタ)をして次のパーツに移る」というミニサイクルをひたすら繰り返すイメージを持つと分かりやすくなります。