Get a Free Trial
Creating, executing, and maintaining reliable tests has never been easier.
ソフトウェアテストに慣れてくると、様々な種類のテストが存在することが分かってくるかと思います。リグレッションテストと再テストという2種類のテストは、開発後に行われるため混同されがちです。しかし、これらは全く異なるものです。
その違いは、それぞれの目的と優先順位にあります。最も分かりやすい違いは、以前バグがあった場所と、全くなかった場所という、テストする場所の違いです。再テストでは、以前存在したバグが修正されているかどうかをシナリオに沿ってテストしますが、リグレッションテストでは、新しいバグが出現しているかどうかをチェックします。
それぞれを個別に解説して、違いを説明しましょう。
再テストを実施する場合
再テストとは、特に、不具合(アプリケーションの動作がビジネス要件と異なる場合)やバグ(コードエラー)を修正した後にソフトウェアをテストすることを指します。このテストは、ソフトウェアが以前は動作しなかった場所で動作するかどうかを判断するために行われます。
再テストは自動化できない
テストケースはバグに特化したものであり、動作状態に特化したものではありません。再テストは、純粋にソフトウェアが以前に失敗したテストケースを実行するために存在します。これが、私たちが「手動テストは完全に置き換えることはできない」と述べる理由の一つです。あるレベルでは、バグを修正した後にコードの再テストを行う必要があります。一般的に、これは不具合が修正されたときに開発者によって処理されます。
再テストは計画的に行う
再テストは不具合が修正された後に行われ、不具合が修正されたかどうかを確認するためのものです。再テストをパスするために、アプリケーションは以前の状況で失敗した項目のチェックリストを通過しなければなりません。再試験は、"計画的なテスト”、または、"確認テスト "とも呼ばれます。
高い優先度
再テストはリグレッションテストよりも優先度が高く、テスト工程の前に再テストを実施することを意味します。
特定エリアで実施
再テストは、欠陥やバグが以前から存在していた特定のエリアでのみ行われます。
リグレッションテストを実施する場合
リグレッションテストは、バグを修正しても、アプリの他の部分に新たなバグが発生しないことを確認するためのソフトウェアのテストです。コードが動作しない状態にデグレードしていないことを確認します。
意図しない結果に対するテスト
リグレッションテストは、アプリケーションの別の部分が変更された後、ソフトウェアが以前動作していた場所で動作し続けるかどうかを判断するために設計されています。言い換えれば、以前はテストにパスしていたソフトウェアが、バグが修正された後も引き続き動作することを確認するためのテストです。
不具合のためのテストではない
リグレッションテストは、不具合やビジネスロジックのバリエーションをテストするものではありません。リグレッションテストは特定のバグ修正に焦点を当てるように設計されていませんが、アプリケーションのエリアまたは任意の時点での完全なアプリケーションのテストのために計画されています。しかし、リグレッションテストは、バグの修正による予期せぬ副次的な影響をテストします。
広範囲なテスト
リグレッションテストは、再テストとは異なり、個別ではなく、バグや不具合を修正した後にアプリケーションの残りの部分をチェックするための広範なテスト形式のため、必然的にテスト範囲は広範囲になります。
リグレッションテストを別の言葉で言い換えると、"汎用テスト"と言えます。テストは機能要件に基づいて構築することができます。つまりそれは、ソフトウェアが動作し、動作し続けることを保証するためのソフトウェアの一般的なテストです。リグレッションテストは、個別ではないという点で汎用的です。それは、以前に検出されなかった(または、発見されなかった)バグや不具合を特定することを目的とした、アプリケーション全体の一般化されたテストなのです。
優先度は低め
通常は再テストの後に行われますが、リグレッションテストと再テストは同時に行うことができます。
再テストが特定の不具合が改善されたことを確認するものであるのに対し、リグレッションテストは新たに発生したバグやこれまで確認されていなかったシステムの不具合を特定するものです。
テストの自動化
リグレッションテストは完全に自動化することができます。テストケースは新しいビルドや変更のたびに拡張されますが、これらのテストケースはより大きなテストの中のモジュールとして含めることができます。
リグレッションテストは、単体テストや統合テストといった下位のコードレベル、そしてシステムテストやE2Eテストといった上位レベルで自動化できます。mablのようなリグレッションテストツールは、E2Eのリグレッションテストを容易にするために作られています。特にmablは、機械学習を使用して、機能テストの実行中に視覚的およびパフォーマンスのリグレッションを自動的に特定することができます。
結論
もし疑問が残っているなら、再テストは実際にバグを修正したかどうかをチェックすることで、リグレッションテストは修正によって新しいバグが発生したかどうかをチェックすることだと考えるとわかりやすいかもしれません。再テストの間に回帰の問題を特定することはできますが、実際にはこれらは別のものであり、異なる形式のテストとして扱われるべきです。