忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【ソフトウェア開発】短サイクルで回せ!「テスト駆動開発(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は「プラモデルの説明書(テスト)を先に作ってから、パーツ(コード)を組み立て、最後にバリ取り(リファクタ)をして次のパーツに移る」というミニサイクルをひたすら繰り返すイメージを持つと分かりやすくなります。


PR