この概念が出た関連問題

この試験の対策ガイド

情報処理安全確保支援士試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は エ

解説

TDD(テスト駆動開発:Test-Driven Development)はXP(エクストリームプログラミング)のコアプラクティスの一つで、Kent Beckが提唱した開発手法。最大の特徴は「プログラムコードを書く前にテストコードを書く(テストファースト)」こと。開発サイクルはRed-Green-Refactorの3段階:①Red:まず失敗するテストを書く(まだ実装がないので必ず失敗する)②Green:そのテストを通過する最小限のコードを実装する③Refactor:テストが通ることを確認しながらコードをリファクタリングして品質を向上する。このサイクルを短いイテレーション(数分〜数十分)で繰り返す。TDDの効果:設計が自然とテスト可能(疎結合)になる・デグレードを即座に検出・仕様がテストコードとして明確化される・自信を持ってリファクタリングできる。BDD(振る舞い駆動開発)はTDDをビジネス観点まで拡張した手法。

なぜ他の選択肢は違うのか

選択肢 ア
「最初のテストでなるべく多くのバグを摘出する」はTDDの目的ではない。TDDは大規模なテストを一度に実行するのではなく、機能単位で小さなテスト→最小実装→リファクタリングのサイクルを短時間で何度も繰り返す手法。「最初のテスト」で一気に多くのバグを発見するのはブラックボックステストやユーザー受入テストの発想に近く、TDDとは異なる。
選択肢 イ
「テストケースの改善を繰り返す」はTDDの本質的な特徴ではない。TDDのRed-Green-Refactorサイクルで繰り返し改善するのは「実装コードの品質(リファクタリング)」であり、テストケース自体の継続的改善を主眼とはしない。テストケース改善はリグレッションテスト管理や探索的テストの文脈で語られる活動でTDDとは別。
選択肢 ウ
「テストカバレージを高めることを目的とする」はTDDの目的ではなく副産物。TDDの目的は開発の各ステップで即座にフィードバックを得ること・設計品質の向上・仕様の実行可能なドキュメント化。高いカバレージはTDDを実践した結果として得られることが多いが、カバレージ最大化のためにテストを書く手法(カバレージ主導テスト)とはアプローチが根本的に異なる。

解くときのポイント

TDDのRed-Green-Refactorサイクル: ①失敗するテストを書く(Red)②テストが通る最小限のコードを書く(Green)③コードを整理する(Refactor)。BDD(振る舞い駆動開発)はTDDの発展形。