この記事では、回帰テスト(リグレッションテスト・退行テスト)についてご説明します。回帰テストとは、過去に開発したソフトウェアコードや実装がうまく動作するか確認するテストのことで、新たなコードや実装も再テストします。コードを変更したことが原因で思いがけない不具合が出ていないかと確認するもので、ソフトウェア開発に不可欠です。

「回帰テストでは、新しく追加されたコードと実装を再テストしつつ、古いコードと実装が引き続き動作することを確認し、既存のコードと合わせてきちんと動作することをチェックします。」出所:AIがもたらすソフトウェアテスティングへの変革

アジャイル開発はライフサイクルが速く、ソフトウェアコードは頻繁に更新されていますが、人為的なミスや改定管理が不十分だったりすると、本番環境に間違ったコードが紛れ込んでしまいます。そこで、本番前のQA段階できちんと回帰テストすることで、このようなミスを未然に防止できるのです。

他にも、コードの一部を修正するとアプリケーションの別の部分でバグが発生してしまうこともあります。例えば、Aという機能をリリースした時、Bという全く別の機能が壊れてしまうようなケースです。具体的な例として、eコマースサイトを構築していて検索機能に変更を加えたところ、商品の購入フローが壊れてしまったという場合が挙げられます。このような機能の悪化をデグレーションと言いますが、ある機能が別の機能に悪影響を与えないことを確認するために回帰テストをきちんと行うのが大切なのです。

人が手作業で確認していくと、ミスや不具合を見落としてしまうことがあります。しかし機械を使えば欠陥を見つけてスクリーンショットを交えてレポートにまとめることができるため、後でQAテスターがチェックするのに役立ちます。AutifyなどのAIベースのテスト自動化ツールにはたくさんの利点がありますが、不具合を効率よく見つけることはその1つなのです。

ミスをできる限り削減するために、バグを文書化して定期的に回帰テストを実行することをおすすめします。また、人為的なミスを削減するには回帰テストを手作業で行うのではなく、テスト自動化ツールをご利用ください。テストプランをしっかり準備すれば、テスト自動化ツールを使ってテストケースを自動で実行できます。実際、コンパイル直後に毎晩、または毎週という頻度でテストをスケジューリングしているDevOpsチームもいます。


回帰テストの一般原則

リグレッションテストとは?

回帰テストは、テストシナリオによって3つの一般原則に分類できます。

  1. すべて再テストする。
    時間とリソースが一番かかる方法です。結果的に工数も掛かる場合があります。テストキューのすべてのテストを再テストする必要があるからです。これについては後程詳しくご説明します。
  2. 回帰テストを選択する。
    テストスタック全体を再テストするのではなく、テストを選んで実行する方法です。「再利用できるテストケース」と「廃止されたテストケース」の2種類あります。前者はテストスクリプトを再利用できますが、後者は再利用できません。
  3. テストケースの優先順位付け。
    文字通りですね。ビジネスのユースケースで優先順位が高いものからテストしていきます。

「1つ目の原則が良く分からない…」というご相談が多いので、詳しくご説明しましょう。

再テストの回帰テストの違い

自動化テストの初心者は、2つのテストの違いに首をかしげてしまいますね。再テストと回帰テストには決定的な違いがあります。

再テストは、「もう一度」テストすることです。上でも説明した通り、再テストは一番時間が掛かります。アプリケーション全体ではなく部分的に変更した場合、すべてを再テストする必要はないかもしれません。しかしアプリケーション全体を再テストすることで、すべてがきちんと動作していることを確実に確認できます。再テストは定期的に実行するのがおすすめです。

回帰テストはアプリケーションの「変更された部分のみ」で実行するため、QAテスト時間を大幅に短縮できます。回帰テストは頻繁に行うと良いでしょう。

回帰テストの利点は?

回帰テストの最大の利点は、正しく行えば安定した製品や新機能を迅速にリリースできることです。

さらに、工数やコストを削減できるため、組織にも利益があります。上で説明した3つのテスト原則を思い出してください。アプリケーション全体を再テストするのではなく、QAマネージャーがテストキューまたはツールからテストしたい部分を選択できるので、より素早くより安価にテストできます。

回帰テストし続けるのが難しい理由は?

UIや実装を頻繁に変更したり大規模な変更があった場合、回帰テストを行い続けるのは難しくなってきます。また、ソフトウェア開発で最も時間とリソースを要する作業になってしまうこともあります。

現在のウェブUI技術では、デザインや機能などによって「id」などの識別子や「class」などの属性を簡単に変更できます。しかしこれらを変更すると、テストスクリプトが壊れる原因になってしまうのです。これがなぜ問題なのか詳しいガイドがありますのでご覧ください。DevOpsチームが手作業でテスティングしていると、膨大なコストがかかってしまいます。このような背景から、AIと自動化は必要不可欠なツールになっており、ソフトウェアテスティングに変革をもたらしているのです。

まとめ

効果的な回帰テストを実践することで、ソフトウェア開発の時間と費用を節約できます。適切なツールがあればバグを素早く見極めることができ、後で再浮上しないように対応できます。しかしそれより重要なのは、よりよい製品をより速く提供することです。

回帰テストを自動化するツールをお探しの方、ぜひAutifyの14日間無料トライアルをお気軽にお試しください!
 
Autifyではこの他にも品質保証やテスト、アジャイル開発に役立つ資料を無料で公開していますので、ぜひこちらからご覧ください。