テスト駆動開発の解説(基本情報技術者シラバス用語)

目次

テスト駆動開発とは

テスト駆動開発(TDD:Test-Driven Development)とは、プログラムの実装コードを書く前に、まずそのプログラムが満たすべき動作を確認するための「テストコード」を先に作成し、そのテストに合格するように実装を進めていく開発手法です。

一般的な開発では、コードを書き終えた後にテストを行いますが、TDDでは手順が逆になります。まず、わざと失敗するテストを書き(Red)、次にそのテストを通過する最小限のコードを書き(Green)、最後にコードを綺麗に整える(リファクタリング)という短いサイクルを繰り返します。これにより、バグを早期に防ぎ、常に動作が保証された綺麗なコードを維持することができます。

具体例

例えば、「入力された2つの数字を足し算する関数」を作る場合、まず「3と5を入力したら8が返ってくること」を検証するテストを先に書きます。この時点では関数がないためテストは失敗します(Red)。次に、単に「8」を返すだけの最低限のコードを書いてテストを通します(Green)。その後に、正しい足し算の処理に書き換え、コードを整理します。

もう少し詳しく

テスト駆動開発(TDD)は、プログラムの品質向上と実装速度の向上を両立させるための開発スタイルです。TDDは、以下の「レッド・グリーン・リファクタリング」という3つのフェーズを非常に短いスパン(数分から数十分)で繰り返すことで進められます。まず「レッド(Red)」フェーズでは、これから実装したい機能のテストコードを記述し、実行して意図的に失敗させます。次に「グリーン(Green)」フェーズでは、テストを通過させるためだけの、最も単純な(時には定数を返すだけの)コードを書きます。これにより「仕様を満たすコードが動いた」という状態を作ります。最後に「リファクタリング(Refactor)」フェーズで、テストが合格する状態(安全ネットがある状態)を維持したまま、重複コードの排除や変数名の変更、設計の整理などを行います。TDDは、単なる「バグを見つけるテスト手法」ではなく、テストを通して「実装すべきコードの設計を考える設計手法」としての側面が非常に強いのが特徴です。

試験でのポイント

試験では、TDDの開発手順やサイクルが正しく理解できているかが問われます。特に「最初にテストを作成する(テストファースト)」という順序や、テストが成功している状態(Green)で初めてリファクタリングを行うというルールが狙われます。また、TDDによって開発者が得られるメリットとして、「テストが自動化されているため、後からコードを変更・追加した際のリグレッション(デグレード:先祖返り)を即座に検知できる」「設計が自然とシンプルで疎結合になる」といった点が正解の選択肢としてよく登場します。

関連する用語

XP(エクストリームプログラミング)の代表的な技術プラクティスの一つであり、コードの内部改善を行うリファクタリングや、テストの自動実行を支援するCI/CD、バージョン管理などと合わせて理解すると効果的です。

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ