テスト駆動開発
アジャイル開発のプラクティスのうち,テスト駆動開発の説明はどれか。
- ア先に失敗するテストを作成し,そのテストに合格する最小限のコードを書いた後,リファクタリングで設計を改善するという短いサイクルを繰り返す。
- イ2 人の開発者が 1 台のコンピュータを共有し,一方がコードを書き,他方がそれを確認しながら役割を随時交代する。
- ウ開発者が変更したコードを頻繁に共有リポジトリに統合し,そのたびに自動でビルドとテストを実行する。
- エ外部から見たプログラムの振る舞いを変えずに,内部の構造を改善して保守性を高める。
正解と解説を見る
正解 ア
この問題の基礎知識
- テスト駆動開発は,失敗するテストを先に書き,そのテストに合格する最小限のコードを書き,リファクタリングで設計を改善するという短いサイクルを繰り返す手法である。
- リファクタリングは,外部から見たプログラムの振る舞いを変えずに内部構造を改善することであり,自動テストで振る舞いが変わっていないことを確認しながら行う。
- ペアプログラミングは 2 人 1 組で 1 台のコンピュータを使って開発するプラクティス,継続的インテグレーション(CI)は変更を頻繁に統合して自動でビルドとテストを行うプラクティスである。
ア先に失敗するテストを作成し,そのテストに合格する最小限のコードを書いた後,リファクタリングで設計を改善するという短いサイクルを繰り返す。正解
テスト駆動開発は,失敗するテストを書く,テストを通す最小限の実装をする,リファクタリングするというサイクル(レッド・グリーン・リファクタ)を繰り返して開発を進める手法である。
イ2 人の開発者が 1 台のコンピュータを共有し,一方がコードを書き,他方がそれを確認しながら役割を随時交代する。
2 人 1 組で 1 台のコンピュータを使い,コードを書く役と確認する役を交代しながら開発するのはペアプログラミングの説明である。テストを先に書くことは要件ではない。
ウ開発者が変更したコードを頻繁に共有リポジトリに統合し,そのたびに自動でビルドとテストを実行する。
コードの変更を頻繁に共有リポジトリへ統合し,そのたびに自動ビルドと自動テストを実行して問題を早期に検出するのは継続的インテグレーション(CI)の説明である。テストを先に書く手法ではない。
エ外部から見たプログラムの振る舞いを変えずに,内部の構造を改善して保守性を高める。
外部仕様を変えずに内部構造を改善するのはリファクタリングの説明である。テスト駆動開発のサイクルの一部ではあるが,テストを先に書いて開発を進める手法全体を説明していない。
検証用の出典出典照合済み
Kent Beck, Test-Driven Development: By Example / IPA 応用情報技術者試験(レベル 4)シラバス / IPA アジャイル型開発におけるプラクティス活用事例調査 調査報告書 ガイド編照合の根拠(5 件)
- ア(正解): テスト駆動開発はユニットテストを先に書く
テスト駆動開発 Code the unit test first
IPA アジャイル型開発におけるプラクティス活用事例調査 調査報告書 ガイド編(2013) · 表 1 プラクティスとカテゴリ一覧(新しいタブで開きます) - ア(正解): テストを先に作成する
テストコードを先に書く(テストファースト)
IPA アジャイル型開発におけるプラクティス活用事例調査 調査報告書 ガイド編(2013) · 3.2.3 テスト駆動開発(新しいタブで開きます) - ア(正解): テストが通った後にリファクタリングするサイクルを反復する(TDD マントラ)。エ(リファクタリング単独)はこのサイクルの一工程にすぎない
3. テストが成功する状態を維持しながら、より整理されたコードにリファクタリングす
IPA アジャイル型開発におけるプラクティス活用事例調査 調査報告書 ガイド編(2013) · 3.2.3 テスト駆動開発(新しいタブで開きます) - イ(誤り): 2 人で 1 つの画面に向かい役割を分担するのはペアプログラミング
ペア作業はドライバー(キーボードの前に座り主導権を握る役割)と、ナビゲーター(ドライバーの作業に注意を払い、かつ先の仕事の戦略を考える役割)に別れて、一つの画面に2人で向きあって実施する。
IPA アジャイル型開発におけるプラクティス活用事例調査 調査報告書 ガイド編(2013) · 3.2.1 ペアプログラミング(新しいタブで開きます) - ウ(誤り): 自動で継続的に統合(ビルド・テスト)するのは継続的インテグレーション
インテグレーションマシンを用意し、自動でイ
IPA アジャイル型開発におけるプラクティス活用事例調査 調査報告書 ガイド編(2013) · 3.2.11 継続的インテグレーション(新しいタブで開きます)
原文は 2 段組で pdftotext の行が左右の段で交互になるため,引用は 1 段内で連続する短い箇所に限った。