基本情報技術者 2011年 秋期 午前(科目A) 問48
問題文
ソフトウェアのテストの種類のうち、ソフトウェア保守のために行った変更によって、影響を受けないはずの箇所に影響を及ぼしていないかどうかを確認する目的で行うものはどれか。
選択肢
ア:運用テスト
イ:結合テスト
ウ:システムテスト
エ:リグレッションテスト(正解)
ソフトウェアのテストの種類(保守変更の影響確認)【午前2 解説】
要点まとめ
- 結論: ソフトウェア保守で行った修正や機能追加の後、影響範囲を確認する目的はリグレッションテストで実施します。
- 根拠: リグレッションテストは既存機能が改修や追加によって不具合を起こしていないかを再検証するための試験工程です。
- 差がつくポイント: 全件再実行か選択実行か、テスト自動化や優先度付けで効率と確実性が大きく変わります。
正解の理由
選択肢の中で「保守のために行った変更によって、影響を受けないはずの箇所に影響を及ぼしていないかどうかを確認する」目的に最も合致するのはリグレッションテストです。リグレッション(回帰)テストは、バグ修正や機能追加などの変更後に、既存の機能が意図せず壊れていないかを検証するために行われます。したがって正解は エ です。
よくある誤解
- 「結合テストやシステムテストが同じ」と考える誤解:結合テストはモジュール間の相互作用、システムテストは要件全体の検証であり、変更による既存機能の健全性確認が主目的ではありません。
- 「リグレッションはすべて手動でやるべき」との誤認:多くの場合、回帰テストは自動化して頻繁に実行することで効率化と信頼性向上を図ります。
- 「修正した部分だけを再テストすればよい」との錯覚:修正箇所に依存するモジュールやインタフェース経由で影響が出るため、影響範囲を考慮した再実行が必要です。
解法ステップ
- 問題文からキーワードを抽出:「保守のために行った変更」「影響を受けないはずの箇所に影響を及ぼしていないか」。
- 各選択肢の定義を短く頭の中で照合:運用テスト=運用環境や手順、結合=モジュール間、システム=全体要件の検証、リグレッション=既存機能の再検証。
- 定義と問題文の照合で最も目的が一致するものを選ぶ。該当はリグレッションテスト。
選択肢別の誤答解説
- ア: 運用テスト — 運用手順や運用環境での動作確認、運用負荷やバックアップ手順の検証が主で、保守変更が他箇所に影響していないか確認する目的とは異なります。
- イ: 結合テスト — 個々のモジュールを結合してインタフェースや相互作用を検証する段階で、変更後の回帰確認が主目的ではありません。
- ウ: システムテスト — システム全体が仕様通りに動作するかを確認しますが、保守による既存機能の回帰確認を特化して行うのはリグレッションです。
- エ: リグレッションテスト — 修正や追加の影響で既存の機能に回帰(退化)が起きていないかを確認するためのテストであり、設問の目的に合致します(正解)。
補足コラム
リグレッションテストの実務ポイント
- 実行頻度:修正ごと、ビルドごと、リリース前などの定期的な実行が基本です。
- 自動化の重要性:回帰テストは範囲が広く繰り返し実行されるため、自動化ツール(例:JUnit, pytest, Seleniumなど)で効率化するのが一般的です。
- 範囲の選定:フルスイート実行は時間がかかるため、変更影響解析で優先テストケースを選ぶ「選択回帰」や、リスクベースでの実行が現実的です。
- 維持管理:テストケース自体の品質やメンテナンスも重要で、古くて無意味なテストは削除・更新しておくべきです。
簡単な自動化イメージ(pytestで特定マークを付けた回帰テストを走らせる例)
# pytest の例
# テストに @pytest.mark.regression を付けておき、回帰だけ実行する
# 実行: pytest -m regression
import pytest
@pytest.mark.regression
def test_existing_feature():
assert some_function() == expected
FAQ
Q1: リグレッションテストとリテスト(再テスト)は同じですか?
A1: 違います。リテストは修正箇所の不具合が直っているかを確認するもので、リグレッションは修正で他の機能が壊れていないかを確認します。目的が異なります。
A1: 違います。リテストは修正箇所の不具合が直っているかを確認するもので、リグレッションは修正で他の機能が壊れていないかを確認します。目的が異なります。
Q2: どの程度自動化すべきですか?
A2: 優先度の高い回帰ケース(基本機能、クリティカルパス)は自動化すべきです。コストに応じて段階的に自動化範囲を広げます。
A2: 優先度の高い回帰ケース(基本機能、クリティカルパス)は自動化すべきです。コストに応じて段階的に自動化範囲を広げます。
Q3: 回帰テストはいつ実行するのが望ましいですか?
A3: 修正直後、統合時、リリース前など複数回実行します。CI/CD環境ではビルド毎の自動実行が推奨されます。
A3: 修正直後、統合時、リリース前など複数回実行します。CI/CD環境ではビルド毎の自動実行が推奨されます。
関連キーワード: リグレッションテスト、回帰テスト、保守テスト、テスト自動化、テストスイート、テストカバレッジ、結合テスト、システムテスト、運用テスト、影響範囲分析

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

