TDD(Test-Driven Development)とは、実装コードを書く前にテストを書き、テスト失敗(RED)→実装(GREEN)→リファクタリング(Refactor)の短いサイクルを繰り返す開発手法である。
## RED → GREEN → Refactor TDD の手順は極めてシンプルだ。まず、これから実装する機能の期待動作をテストとして書く。当然テストは失敗する(RED)。
次に、テストを通すための最小限のコードを書く(GREEN)。最後に、動作を変えずにコードを整理する(Refactor)。この3ステップを数分〜十数分の短いサイクルで回し続ける。
## 設計ツールとしてのテスト TDD を「テスト手法」と捉えると本質を見誤る。テストを先に書くことで、関数のインターフェース(引数と戻り値)が実装前に決まる。呼び出し側の視点でAPIを設計するため、使いにくいインターフェースが生まれにくい。
Kent Beck が TDD を提唱した動機も、テスト網羅率の向上ではなく設計品質の改善にあった。## 単体テストとの使い分け TDD で書くテストの大半は単体テストになる。ただし TDD は「いつテストを書くか」の方法論であり、単体テストは「何をテストするか」のスコープの話だ。
TDD のサイクル内で機能テスト相当のテストを書くこともあるし、TDD を使わずに単体テストを書くこともある。## ATDD との補完関係 ATDD がビジネス要件の正しさを外側から保証するのに対し、TDD は内部実装の正しさを内側から積み上げる。プロジェクト全体では、ATDD で受け入れ基準を定義し、その基準を満たすための個々の関数を TDD で実装していくという二層構造が理想的だ。


ATDD(Acceptance Test-Driven Development)とは、開発着手前に受け入れテストの基準をチーム全体で定義し、そのテストを自動化してから実装を進める開発手法である。

シフトレフトとは、テスト・セキュリティチェック・品質検証などの工程を開発ライフサイクルの早い段階に前倒しすることで、欠陥の発見と修正のコストを下げる開発手法である。

DevOpsとは、ソフトウェアの開発(Development)と運用(Operations)を統合し、CI/CDパイプラインや自動化ツールを通じてリリースサイクルの高速化と品質向上を同時に実現する文化・プラクティスの総称である。


ハーネスエンジニアリングとは?AIエージェントのミスを構造で防ぐ設計手法
単体テスト(ユニットテスト)とは、関数やメソッドなどプログラムの最小構成単位を個別に検証するテスト手法である。外部依存をモックに置き換え、対象のロジックだけを高速に確認できる。