忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【開発技術】修正による「飛び火バグ」を防ぐ!「リグレッションテスト」|情報処理問題1000本ノック

バグを1つ直したら、別の場所が動かなくなった――開発現場で誰もが経験するこの恐怖。システムの「先祖返り」やバグの拡散を防ぐための必須テスト、リグレッションテストを攻略しましょう。

1. 【 問題 】:ソフトウェアテストの手法

【 問題 】 ソフトウェアの変更やバグ修正、機能追加を行った際に、その修正がシステム内の他の正常だった部分に予期せぬ悪影響(新たなバグの混入など)を及ぼしていないかを確認するために、以前実施したテストを再度行うものはどれでしょうか?

① リグレッションテスト(回帰テスト)
② 統合テスト(結合テスト)
③ 受入れテスト(承認テスト)
④ ストレステスト(負荷テスト)

2. 正解:

正解: ① リグレッションテスト(回帰テスト / 退行テスト)

3. 解説:既存の安心をもう一度確かめる

リグレッション(Regression)とは「後退、退行」という意味です。プログラムを書き換えたことで、システムの品質が「以前より悪くなっていないこと」を保証するために行うテストです。

【リグレッションテストの極意と自動化】

■ 目的:サイドエフェクト(副作用)の検知
・バグ修正そのものが正しく直っているかを確認するのは「デバッグ(修正確認テスト)」です。
・リグレッションテストは、その修正によって「関係ないはずのA機能やB機能が、巻き添えを食らって壊れていないか」を調べるために、過去に合格したテストケースを丸ごとやり直します。

■ 開発現場での運用:自動化の主役
・コードを書き換えるたびに毎回大量の過去のテストを行う必要があるため、人間が手動でやると膨大な時間がかかります。そのため、現代の開発(CI/CD:継続的インテグレーションなど)では、ツールを使って夜間に自動でリグレッションテストを回す仕組みが定着しています。
[ 選択肢のひっかけポイント ]
★ ②:複数のモジュール(部品)を組み合わせて、インターフェースのデータの受け渡しを確認するテストです。
★ ③:開発の最終段階で、発注元(ユーザー)が要望通りのシステムになっているかを確認するテストです。
★ ④:大量のデータやアクセスを同時に発生させ、システムが限界まで耐えられるかを試すテストです。

1. 理解のコツ: 「お家のリフォーム」をイメージしてください。2階の水回りを新しく修理してもらった(バグ修正)あと、その工事のせいで「1階の電気がつかなくなっていないか」「壁にヒビが入っていないか」を確認するために、家中のスイッチをもう一度入れて回る。これがリグレッションテストです。
2. 試験対策の視点: 「プログラムの変更・修正」「他の部分に悪影響がないか確認」「以前のテストを再度実施」というキーワードが並んだらリグレッションテストが一択です。カタカナで「リグレッションテスト」、漢字で「回帰テスト」または「退行テスト」と、試験によって表記が揺れるので、すべて同じ意味だと覚えておきましょう。


4. まとめ

「システムの修正・追加によって、正常だった他の機能が壊れていないかを確かめる再テスト」。これがリグレッションテストです。アジャイル開発や継続的な機能改善(アップデート)を行う現代のソフトウェア開発において、システムの品質を一定に保つための生命線と言えるテスト手法です。


PR