戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2018年 秋期 午前(科目A)50


問題文

XP(Extreme Programming)のプラクティスの説明のうち、適切なものはどれか。

選択肢

顧客は単体テストの仕様に責任をもつ。
コードの結合とテストを継続的に繰り返す。(正解)
コードを作成して結合できることを確認した後、テストケースを作成する。
テストを通過したコードは、次のイテレーションまでリファクタリングしない。

XP(Extreme Programming)のプラクティスの説明のうち、適切なものはどれか。【午前2 解説】

要点まとめ

  • 結論:XPの中心的実践は継続的インテグレーションと自動テストを繰り返すことであり、正解は です。
  • 根拠:頻繁な結合とテストにより欠陥を早期発見し、フィードバックを短サイクルで得て設計を改善していきます。
  • 差がつくポイント:顧客は受け入れ基準(アクセプタンステスト)を定義するが、単体テストの作成責任は開発側にある点を押さえてください。

正解の理由

正解は 「コードの結合とテストを継続的に繰り返す。」です。これはXPで推奨される継続的インテグレーション(Continuous Integration)の説明に一致します。頻繁に(理想は1日複数回)コードを結合し、自動テストを実行して問題を速やかに検出・修正することで、統合による手戻りを小さくします。XPの他のプラクティス(テスト駆動開発、リファクタリング、ペアプログラミング)と合わせて品質と生産性を高めます。

よくある誤解

  • 「顧客が単体テストの仕様に責任を持つ」:誤り。顧客は機能要件や受け入れ条件(アクセプタンステスト)を定義し、単体テスト(ユニットテスト)は主に開発者が作成します。
  • 「テストはコード作成後に行う」:誤り。XPはTDD(テスト駆動開発)を推奨し、単体テストはコードを書く前にテストを先に作ることが多いです。
  • 「テストを通過したらリファクタリングを翌イテレーションまで待つ」:誤り。テストがあることで安全にリファクタリングでき、必要ならその場で改善を行います。

解法ステップ

  1. 問題文と選択肢から「XPのプラクティス」に関するキーワードを探す(継続的/テスト/顧客/リファクタリング)。
  2. XPの主要概念(継続的インテグレーション、TDD、リファクタリング、ペアプログラミング、顧客の常駐)と照合する。
  3. 各選択肢が上記概念に合致するかを検証し、矛盾点(顧客の責任範囲やテストの順序など)を理由に除外する。
  4. 最も直接的にXPのプラクティスを表す選択肢を選ぶ(この場合は継続的な結合とテスト)。

選択肢別の誤答解説

  • ア: 「顧客は単体テストの仕様に責任をもつ。」
    誤り。顧客は要求や受け入れ基準(アクセプタンステスト)を担いますが、ユニットテストの設計・実装責任は開発チーム側です。
  • イ: 「コードの結合とテストを継続的に繰り返す。」
    正解。継続的インテグレーションと自動テストの反復はXPの基本的プラクティスです。
  • ウ: 「コードを作成して結合できることを確認した後、テストケースを作成する。」
    誤り。TDDなどXPではテストを先に定義してからコードを書くことが推奨され、テストを後回しにする表現は不適切です。
  • エ: 「テストを通過したコードは、次のイテレーションまでリファクタリングしない。」
    誤り。むしろテストがあることで安全に随時リファクタリングでき、リファクタリングは継続的に行うべきです。

補足コラム

XPの代表的なサイクルは「Red-Green-Refactor」です。まず失敗するテストを書く(Red)、そのテストを通す最小限のコードを書く(Green)、テストを保ちつつ設計を改善する(Refactor)。継続的インテグレーションはこのサイクルを頻繁に実行し、ブランチ統合やビルドの自動化(Jenkins/GitHub Actionsなど)と自動テストで運用します。小さなコミットと短いフィードバックループが品質と柔軟性を高めます。
簡単なTDDサンプル(Python, pytest):
# test_sum.py
def test_sum():
    assert sum([1, 2, 3]) == 6

# 実装は後から書く(TDDでは先にテストを書く)

FAQ

Q1: 顧客はテストを全く関与しないのですか?
A1: 顧客はビジネス要件や受け入れ基準(アクセプタンステスト)に関与しますが、技術的なユニットテストの詳細設計までは通常担当しません。
Q2: 継続的インテグレーションとTDDはどちらが先ですか?
A2: 役割が異なります。TDDは個々の開発サイクル(テスト先行)を指し、CIはその成果を頻繁に統合・検証するための運用プロセスです。両方を組み合わせるのが効果的です。
Q3: リファクタリングはいつ行うべきですか?
A3: テストが存在する限り随時行うべきです。リファクタリングをため込むと設計負債が増え、修正コストが高くなります。

関連キーワード: XP、Extreme Programming、継続的インテグレーション、テスト駆動開発、リファクタリング、ペアプログラミング、アクセプタンステスト
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について