リグレッションテストはなぜ重要か?
基本と注意点、効率化する方法を解説
2022年8月10日
ご相談・無料お見積りシステムを改修する際には、もちろん、その影響範囲を事前に精査しますが、思いもよらない場所に影響し、トラブルや品質低下につながってしまう可能性があります。そこで、「意図しない変更がされていないか」「本当に改修個所以外に影響していないか」など、システム全体を対象に検証する「リグレッションテスト」が欠かせません。しかし、改修範囲の規模にかかわらず、システム全体が対象となるため、規模が大きくなればなるほど工数がかかってしまい、その負担が課題となっています。
本コラムでは、リグレッションテストの目的や重要性、リグレッションテストを実施しなかった場合のリスクを改めて解説するとともに、テスト自動化ツールで効率化する方法を紹介します。
リグレッションテストとは?
システム全体をテストし、改修個所が意図しない影響を与えていないことを検証
リグレッションテストは、「レグレッションテスト」「回帰テスト」「退行テスト」「デグレードテスト」とも呼ばれ、システムを改修した際に、意図しないところが変わっていないかなどを確認するテストを指します。また、リグレッションテストには、「デグレード」していないことの確認も含まれます。「デグレード」は品質劣化の意味で、そのまま受け取ると「改修によりソフトウェアの品質が悪くなること」となりますが、主に「以前修正したバグが戻ってしまうこと」「誤って古いバージョンに戻ってしまうこと」を指します。これらを正しく確認するためにも、改修した範囲だけではなく、システム全体をテストする必要があるのです。
リグレッションテストを実施しない場合のリスク
システム改修では、改修によって想定外の個所に影響が出ないようあらかじめ検討しますが、それでも「変更した個所を想定外の機能で参照していた」「対象外の画面レイアウトが崩れてしまった」などの問題が発生するケースがあります。ほかにも、うっかり古いソースコードをベースに改修してしまい、「対処したバグが元に戻ってしまった」「追加したはずの機能がなくなってしまった」といったトラブルが起こることも。これらに気づかないまま本番リリースをしてしまうと、大きな問題になりかねません。リスクに事前に対処するためにも、システム全体をテストすることが理想です。
リグレッションテストの課題
リグレッションテストの課題としてまず挙げられるのは、実施に工数がかかることです。ブラウザやOS、端末(PC、スマートフォンなど)といった対象となるすべての環境で、すべての処理をチェックすることが理想……とはいえ、工数との兼ね合いから、「メインの機能のみ」「特定の環境のみ」を対象とするプロジェクトも少なくありません。 また、リグレッションテストは改修のたびに実施しますが、テスト項目には当然、改修内容を反映させていく必要があり、この維持・メンテナンスも大きな負担となります。これらの作業をいかに効率化し、できるだけ広い範囲を低コストで実施するかがポイントです。
リグレッションテストの課題を解消する「テスト自動化」
テスト自動化ツールで、手間をかけずに広範囲のテストが可能に
解決策の1つとなるのが、テスト自動化です。様々なテスト工程において活用されるものですが、同じテストを何度も繰り返して実施するリグレッションテストでは特に大きな効果を期待できます。
テスト自動化ツールでは、最初に操作を記録し、シナリオを作成する必要がありますが、1度作成してしまえば、あとは実行するだけで人手をかけずに繰り返しテストを実施することが可能です。これにより、「メイン機能だけ」などと限定することなく、システム全体を対象としたリグレッションテストを実施でき、品質向上につながります。
また、テスト自動化ツールの効果をより高めるには、検証をどこまで自動化できるかが鍵となります。目視での確認には工数がかかりますし、どうしてもミスや見落としが出てしまうもの。リグレッションテストでは、基本的に「前回実施時から変更されていないこと」を確認しますが、「画面表示を確認するだけでよいか」「ログやDBまで確認する必要があるか」「出力されるファイルを確認するか」など、対象となる範囲はシステムによって異なります。これらを漏れなくチェックするためにも、できるだけ自動化することが重要です。ツールによって自動検証機能で対応できる内容が異なるため、なにをどこまで検証できるのか、選定時に確認することをお勧めします。
テスト自動化ツール活用の注意点
テスト自動化ツールを活用するにあたっては、注意が必要な点もあります。
例えば、自動検証をおこなう場合、タイムスタンプなど表示内容が毎回必ず変わる要素があると、「前回と同じかどうか」を検証しても正しく判定できないケースがあります。「該当要素のみ除外して比較する」などの対応が求められ、ツールでどこまで対応できるのか、事前に検討するとよいでしょう。
もう1つ注意したいのが、シナリオのメンテナンスです。上記でも述べたとおり、リグレッションテストではシステムの改修内容をテスト項目(シナリオ)に反映させる(メンテナンス)必要があります。特に、ノンコーディングツールなどでは、少し変わっただけでもイチからシナリオを作り直すしかない(操作を記録し直すしかない)ものもあり、これではメンテナンスの負担が大きくなります。シナリオの部分的な変更が可能かなど、メンテナンス性も注意したいポイントです。
リグレッションテストを自動化するならお勧めしたい「ATgo」とは
画面の新旧比較など豊富な機能を搭載し、自動検証をサポート
リグレッションテストの自動化を実現するツールとして注目したいのが、国産のWebアプリケーション向けUIテスト自動化ツール「ATgo」です。Windows、Mac OS、Android、iOSに対応し、主なブラウザを網羅、様々な環境でのUIテストを自動で実行できます。さらに、自動検証機能が充実しており、アサーション・画面の新旧比較・HTMLに加え、DB・ログなどWeb上の表示だけに留まらない広範囲の検証が可能です。一部の項目のみ除外して比較する機能も搭載しているので、「タイムスタンプ以外を比較」などの検証にも対応します。
また、シナリオ作成はノンコーディング/コーディングのどちらにも対応。ノンコーディングでも「シナリオの途中から記録し直す」ことができるほか、コーディングでは変更個所のみをピンポイントで調整することも可能で、シナリオメンテナンスの効率化をサポートします。
主要なテスト自動化ツールと比較して、ライセンスコストを抑えて導入できる点も魅力です。使い方がシンプルでわかりやすいほか、国産ツールのため、画面やマニュアル、サポートはもちろんすべて日本語なので、学習コストを抑えて、短期間でシナリオ作成・実行・検証まで使いこなせるようになります。
ベンダと密に連携し、ATgoの活用を徹底サポート
NRIでは、「ATgo」の販売代理店として、導入からDevOpsソリューション「aslead DevOps」との連携といったCI/CDへの組み込みまでトータルにサポートします。また、ベンダである六元素情報システム株式会社と密に連携し、新機能追加などの要望、不具合報告などに細かく対応することで、製品へのスピーディな反映、バージョンアップにつなげています。
対象システムの規模や要件のヒアリングに基づく、テスト自動化の適正判断や、テスト実行環境の提供なども対応。テスト自動化をトータルにサポートします。