本文へ移動

かいきてすと

回帰テスト(リグレッションテスト)

Regression Test

システムへの機能追加や修正を行った際、その影響で既存の機能が壊れていないかを確認するテストです。退行テストとも呼ばれ、開発の繰り返しの中で品質を維持するために欠かせません。

詳しい説明

1. 定義

回帰テストとは、システムの一部を修正したり機能追加を行ったりした際に、その変更が原因で既存の正常に動いていた機能が動かなくなっていないかを確認するテストです。別名を退行テストとも呼びます。システム開発では、新しい機能を追加したことで、別の場所で予期せぬ不具合が発生することが頻繁に起こるため、このテストが不可欠です。

特に、システムが大規模化・複雑化している場合、修正の影響範囲を正確に予測することは困難です。そのため、変更のたびに以前と同じテストケースを繰り返し実行することで、品質を維持し続けることが、回帰テストの役割です。

2. 仕組みと種類

回帰テストは、過去に実施して成功したテストケース群を再利用して行います。修正した箇所に関連する機能だけでなく、関連性が薄いと思われる機能を含めて広範囲にテストを行う必要があります。手動で毎回行うと膨大な時間がかかるため、テスト自動化ツールを用いて効率的に実施するのが一般的です。

種類としては、単体テストレベルで行うコードの回帰テスト、システム全体レベルで行う統合的な回帰テストがあります。開発者は、バージョン管理システムとテスト自動化環境を連携させ、プログラムを更新するたびに自動で回帰テストが走る仕組みを構築することで、早期の不具合発見を目指します。

3. 試験ごとの視点

ITパスポート試験では、システム変更における品質管理の観点から問われます。システムは一度作って終わりではなく、機能追加や修正が繰り返されるため、その際に既存機能が壊れないように確認するプロセスが必要であるという全体的な流れが重要です。

基本情報技術者試験では、テストの手法や開発手法の文脈で詳細に問われます。アジャイル開発における継続的インテグレーションや、テスト自動化の文脈で、「変更による影響調査」と「テストの再実行」というセットで出題されます。回帰テストを省略すると後で大きな手戻りになるという点が重要です。

4. 紛らわしい語との違い

「追跡テスト(トレース)」は、処理の過程を追うテストであり、目的が異なります。回帰テストは「壊れていないか」を確認するテストです。

「デバッグ」は、発生した不具合の原因を特定して取り除く作業です。回帰テストは、そのデバッグによって別の場所が壊れなかったかを確認する「検証作業」であり、作業の性質が異なります。

5. 身近な例

文章作成ソフトで、誤字を直そうとして文章の一部を削除したら、別の章のページ番号がずれてしまったという事象を想像してください。このとき、単に修正箇所を見るだけでなく、文書全体をチェックし直す作業が回帰テストに相当します。

プログラムでは、ログイン画面の仕様変更を行った際に、ログイン後の「マイページ」画面が正しく表示されなくなった、というケースがあります。ログイン機能が動くからといって安心せず、関連する画面や機能が期待通りに動作するかをチェックし直すことが回帰テストの重要性を示しています。

試験で問われること

ITパスポート試験

  • 修正や追加で既存機能が損なわれていないか確認するテストであることを理解する。
  • システムは継続的に修正されるため、確認プロセスが重要であることを押さえる。
  • 回帰テストの目的が品質の維持であることを理解する。

基本情報技術者試験

  • テストの自動化と回帰テストの親和性の高さを理解する。
  • アジャイル開発や継続的インテグレーションにおける回帰テストの重要性を押さえる。
  • 「修正が新たな不具合を生む」というリスクを管理するプロセスであることを押さえる。