リグレッションテストとは、システムやソフトウェアの改修後に、変更箇所と直接関係しないところへ新しい不具合が混入されていないかを確認するためのテストです。システム品質を担保するための重要なテストプロセスですが、頻繁に追加改修が発生するシステムでは、リグレッションテストが大きな作業負担となることもあります。
本記事では、リグレッションテストの目的や重要性を解説するとともに、実施時のポイントや、効率的に実施するために検討したい「テスト自動化」についても紹介します。
リグレッションテストとは?
国際的なソフトウェアテスト技術者資格の認定組織ISTQBでは、リグレッションテストを以下のように定義しています。
「修正および変更でコードの一部に対して行った変更が、同一コンポーネント、同一システム内の他コンポーネント、または他システムの振る舞いに意図せず影響を及ぼす場合がある。変更には、オペレーティングシステムやデータベース管理システムの新しいバージョンなど、環境の変更も含まれる。そのような意図しない副作用をリグレッションと呼ぶ。リグレッションテストでは、テストを実行して、そのような意図しない副作用を検出する」
引用:
ISTQBテスト技術者資格制度 Foundation Level シラバス 日本語版 Version 2018V3.1.J03
わかりやすくいうと、システム改修やバージョンアップを実施した際に、変更を加えていない箇所に不具合が混入されていないかを確認するためのテストを指します。システム改修によって、今まで正常に動いていた既存機能に新たなバグの混入・動作不良など想定外の影響がおよぼされていないかを検証するものです。
リグレッションテストは「回帰」「後戻り」などの意味を持つ英単語「regression」に由来する技術用語で、「回帰テスト」と呼ぶこともあります。
デグレ(デグレード・デグレーション)との違い
リグレッションと似た用語に「デグレ(デグレード、デグレーション)」があります。英単語「degrade」「degradation」に由来する用語で、単語の意味としてはリグレッションと同様「退化」「劣化」などを意味し、以前に修正した不具合が再発した・復活したといった悪影響が出ている状態を指して用いられます。
つまり、システム改修の副作用として、以前にはなかった不具合が混入した、以前に修正した不具合が再発したといった悪影響が出ている状態(デグレ)が生じていないかを検証するために実施するテストがリグレッションテストとなります。
リグレッションテストの目的やテスト観点、重要性
リグレッションテストは、やみくもに実施しても狙った効果を発揮できません。その実施目的や重要性を正しく理解することが大切です。
リグレッションテストの目的・テスト観点
前述のとおり、リグレッションテストの目的は、システムの改修後に改修対象外の部分に思わぬ不具合が発生していないかを確認することです。
一般的に、システムは複数のサブシステムが複雑に関係し合う構成になっています。そのため、サブシステムを結合した結果、あるサブシステムに対する修正がきっかけとなり、別のサブシステムで今まで顕在化していなかった不具合が発見されることも少なくありません。
特に、多くのサブシステムが関連し合う大規模なシステムでは、そのようなリグレッションが発生するリスクが高く、不具合をリグレッションテストで検出することは、システムの信頼性・安定性向上に不可欠です。
アジャイル開発に代表されるイテレーティブ型開発やインクリメンタル型開発を実施している場合は、頻繁に機能追加、既存機能の変更が発生します。そのため、リグレッションの発生リスクが高く、リグレッションテストの重要度はより高いといえます。
リグレッションテストを実施しない場合のリスク
日々変化する市場や顧客のニーズに合わせた「短納期」「緊急」でのシステム開発依頼に応えるため、システム開発現場によっては、工数のかかるリグレッションテストを省略もしくは最小限のみ実施することがあります。
しかし、リグレッションテストが不十分な状態では、システムリリース後に不具合が判明するリスクが残ります。例えば、画面が動かない、正しい結果が出力されないなどの事象が生じると、ユーザー部門や顧客側に影響を与える重大なトラブルにつながりかねません。深刻な不具合だった場合は、システムの信頼性を失墜させ、システム部門としての責任問題に発展するおそれもあります。
また、コスト面でのリスクも挙げられます。システム開発では、不具合を開発工程の初期段階で検出したほうが修正コストは小さくなり、後工程で発覚するほど修正コストは大きくなるのが一般的です。そのため、工数圧縮を狙ってリグレッションテストを省略したものの、検出できなかった不具合がリリース後に発覚した場合、結果的にシステム改修にかかるコストが大きく跳ね上がる可能性があります。
さらに、リリース後に不具合が発覚した際には、システム改修にかかるコストが膨大になることはもちろん、顧客のビジネスに影響を与えた場合は、補償コストが追加で発生するリスクもあるでしょう。
リグレッションテストを効果的に実施する3つのポイント
リグレッションテストの必要性は理解しているものの、リグレッションテストに大きな工数・コストをかける余裕がないシステム開発現場も多いのではないでしょうか。ここからは、リグレッションテストを必要最小限の工数・コストで実施し、最大限の効果を上げるために意識したいポイントを3つ紹介します。
①重要度・優先度から実施範囲を特定する
不具合混入のリスクを最小限に抑えるためには、改修箇所にかかわらず、すべてのシステム機能でリグレッションテストを実施する「フルリグレッションテスト」を実施するのが理想です。
しかし、システムの規模が大きくなればなるほどテストケース数は増加し、リグレッションテストにかかる工数・コストは膨大になってしまいます。費用対効果を考えると、優先度や重要度でテスト対象機能を重みづけし、優先度の高い部分から実施範囲を定めていくのが現実的です。
具体的には、以下のような観点で実施範囲を絞り込むのがよいでしょう。
・システム改修箇所との関連度の強さ
・リグレッションが発生するリスクの高さ(過去に何度も不具合が検出されている箇所など)
・リグレッションが発生した場合の影響度の大きさ(人命や金銭にかかわる機能、利用者の多い機能など)
例えばECサイトの場合、会員登録やログイン、商品選択~決済にかかわる一連の機能はビジネスのコア部分にあたるため、リグレッションテストは欠かせません。
一方で、便利機能や一部の社内担当者だけが利用する機能、代替手段がある機能ではリグレッションテストを省略するなど、影響度・重要度によってテスト範囲の取捨選択をすることが重要です。
②すべてのテスト工程でリグレッションテストを実施する
システム開発では大きく分けて単体テスト・結合テスト・統合テストという3種類のテストが実施されますが、前出のISTQBでは、すべてのテスト工程でリグレッションテストを実施することが推奨されています。かりにシステム改修によってリグレッションが発生していたとしても、早期に検出できたほうが影響は限定的で、修正にかかるコストを抑えることが可能です。
各テスト工程でリグレッションテストを実施した結果、不具合が発覚した場合は、修正後にあらためてリグレッションテストを実施しましょう。修正により今までに実施したテスト結果に変化が生じていないか、新たな不具合が生じていないかを確認します。
③テスト自動化ツールの導入で効率化する
リグレッションテストは何度も実行し、少しずつ拡充していくことが有効だとされています。ある時点では問題なく動いていた場合も、その後の修正では問題が発生するケースがあるからです。同じテストを繰り返し実行しつつ、修正内容に合わせてテスト範囲・内容を拡張することが、システムの信頼性確保につながると考えられています。
同じテストを何度も実行するというリグレッションテストの特性は「テスト自動化」と相性が良く、自動化ツールを導入することでテスト工程の生産性向上・効率化や改修の際の安心の担保にもつながりやすくなります。
一般的に、自動化ツールでは、従来手作業で実施される以下のような作業を自動化することが可能です。
・キーボードやマウスなどのパソコン操作
・画面の文字・画像・設定値の判別
・Excelなどファイルデータの読み書き
・複数アプリケーション間の連携
・条件分岐により処理やエラー判定の処理
・テストに必要なシステム・ツールの操作
繰り返し実施される単純作業や複雑な計算などは、一度テストコードを作成すると、ミスなく何度でも繰り返し実施できるため、テスト工程の効率化やコスト削減効果が期待できるでしょう。
ただし、自動化ツールは万能ではないため、導入すれば即座に効率化が実現できるものではありません。まずは自社のテスト方針・利用環境などを洗い出し、どのような作業を自動化したいのかを明確にしたうえで、最適なテスト自動化ツールを選ぶことが重要です。
リグレッションテストはシステムの信頼性・安定性向上に欠かせないテスト工程
リグレッションテストは、システム改修によって想定外の不具合が埋め込まれていないかを確認するために重要な工程です。特に頻繁に改修が発生するシステムにおいて有効なテストで、「システムの安定性・信頼性向上」「不具合の早期発見によるコスト削減」などの効果が期待できます。
繰り返し同じテストを実行するという特性から「テスト自動化」にも向いているため、ぜひ適切なツールを導入し、確実にリグレッションテストが実行できる仕組みづくりを進めてはいかがでしょうか。
現在、自動化ツールには多くの製品が存在し、特徴や搭載機能もさまざまです。導入検討時は機能面やコスト面ばかりを重視しがちですが、自動化ツールを活用し、使い続けていくためには「使い勝手」や「操作性の良さ」も欠かせない要素です。
SRAが提供する「Testablish」は、高いメンテナンス性が特徴のテスト自動化ツールです。「見たままカンタン操作」「誰でもノンプログラミング」で、専門知識がなくてもテストコードの作成が可能で、結合テスト以降のEtoEテストをサポートします。また、Testablish画面でテストケースの編集ができるため、機能追加・改修時もテストコードを1から作成し直す必要がなく、既存テストケースの再利用ができます。
1ヶ月間の無料トライアルが可能です。まずはお気軽にお試しください。
Web・GUIアプリのテスト自動化ツールなら「Testablish」
参考:
・
リグレッションテストとは?目的や観点、自動化、範囲とタイミングについて解説|Qbook
・
リグレッションテストとは?|VECTOR
・
リグレッションテストとは?デグレーションの確認は必要不可欠!|発注ラウンジ
・
リグレッションテストとは:デグレーションとの違いや範囲、自動化までを徹底解説|ECのミライを考えるメディア
・
リグレッションテスト|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典