リグレッションテストとは
リグレッションテストとは、システムの一部のプログラムを修正したり機能を追加したりした際に、その変更によって「これまで正常に動いていた他の部分に予期せぬ不具合(デグレード)が発生していないか」を確認するための再テストのことです。日本語では「回帰テスト」と呼ばれます。
プログラムは複雑に絡み合っているため、「Aというバグを直したら、全く関係なさそうなBという機能が動かなくなった」というトラブルが頻発します。このような副作用がないかを確認するため、以前合格したテスト項目をもう一度実行し直します。開発が進むにつれてテストすべき範囲が膨大になるため、テスト自動化ツールなどを活用して効率的に実行されることが一般的です。
具体例
スマートフォンのアプリで、「文字サイズの変更機能」を追加した後のテスト手順の例です。
- 新機能のテスト:文字サイズが大きく変わるかをテストする(新機能の検証)。
- リグレッションテスト:新機能の追加とは無関係である「ログインができること」「プロフィールが変更できること」「通知が届くこと」など、既存の主要な機能が崩れずに以前と同じように正常に動作し続けているかをすべて確認する。
もう少し詳しく
回帰テスト(リグレッションテスト / 退行テスト)は、プログラムの一部を修正したり機能追加をしたりした際に、その変更によって「これまで正常に動作していた他の機能に、予期しないバグや悪影響(エンバグ)が発生していないか」を確認するための再テストです。
ソフトウェア開発では、ある場所のバグを修正したことが、全く関係ないはずの他の処理(共通ライブラリの書き換えなどによる影響)を壊してしまうトラブルがしばしば発生します。これを防ぐため、修正を行ったモジュールだけでなく、影響が及ぶ可能性のある既存モジュールに対して、過去に実施したテストケースを再度実行します。
システムが大規模になるほど、変更のたびにすべてのテストを手動で行うのは時間的に不可能になります。そのため、回帰テストは「テスト自動化」との親和性が非常に高いのが特徴です。テストスクリプトを作成しておき、コードがコミットされるたびに自動的にすべての回帰テストを実行する仕組み(CI/CDパイプライン)を構築することで、常にシステム全体の品質と品質後退のない状態を維持します。
試験でのポイント
試験では、回帰テストを行う「目的」について問われます。「プログラム変更に伴う不具合(デグレード / 先祖返り)が、修正対象以外の箇所に発生していないかを検証するテストである」という定義を正しく答えられるようにしましょう。
また、ソフトウェアの保守(メンテナンス)フェーズや、アジャイル開発のように頻繁にリリースを繰り返す開発スタイルにおいて、回帰テストの重要性と、それを支えるテスト自動化の価値について出題されます。
関連する用語
関連する用語には、修正によって新たなバグが入り込むことを指す「デグレード(先祖返り)」、テストを自動実行する「CI/CD(継続的インテグレーション/継続的デリバリー)」、および機能追加による品質低下を防ぐ「ソフトウェア保守」があります。