2022.12.20
【第1回】:E2Eテスト自動化のメリット
ITサービスの市場規模は拡大の一途をたどっており、市場競争も激化しています。絶え間のない市場の変化のなかで競合他社に対して優位性を築くために、昨今の開発・QA現場では「高品質なE2Eテストの実現」が重要なテーマの1つとなっています。
E2E(End to End:エンドツーエンド)テストとは、あらゆる構成要素を組み込んだ状態で、テスト対象システム全体の品質を保証する手法です。UI操作をともなうことから「UIテスト」と呼ばれる場合もありますが、バックエンドとの通信などもテスト観点に含まれるため、より上位の概念といえます。
たとえば、Webシステムの場合はユーザーと同じように画面を操作すること、つまり「利用者の観点に立ったWebブラウザの操作により、システム全体が一貫して想定通りに動作しているかを確認すること」を指します。個別の機能を検証する単体テストなどと異なり、ネットワークやファイル、データベースへのアクセスなども含まれます。それまでのテストでは検出できない、外部との通信が発生することで正しく動作しない、といった不具合もE2Eテストであれば検出可能です。
一般に、画面デザインの変更などによって、今まで成功していたテストが失敗してしまう場合もあります。プログラムの修正や環境のバージョンアップの際にも、その都度テストに修正を行う必要があるため、従来のE2Eテスト実施には多大な工数がかかっていました。しかし、その分テストにより得られる成果も大きく、不具合の流出を抑止できることはもちろん、ユーザー体験(UX)の向上も期待できます。
開発現場において大半のE2Eテストは、テスト仕様書をベースに手動で行われており、テスト工数の削減は大きな課題となっていました。広範囲にわたるE2Eテストのテストケースを、テスターがすべて手動で行うことは困難であり、効率的ではありません。スピード感の求められる現代の開発においては、高品質なE2Eテストを実現するために「自動化」が不可欠である一方、自動化のハードルは高く、多くの開発・QA現場では手動テストに甘んじているのが現実です。
今回のADOC TESLABブログでは、E2Eの自動テストを実現するにあたり把握すべきメリットや課題、解決策に関して、連載で解説します。第1回となる本記事では、E2Eテストを自動化するメリットについてお伝えします。
E2Eテストの自動化が品質保証にもたらすメリット
手動のE2Eテストは、往々にして開発・QA現場のボトルネックとなります。E2Eテストの自動化は、手動テストの問題を解消し、サービス品質を向上させるうえで有力なアプローチです。ここでは、E2Eテストの自動化が品質保証にもたらす3つのメリットに関して、順番に解説します。
メリット1:テスト実施のハードルを下げられる
E2Eテストの実施にあたり、対象システムの稼働に関わる全てのコンポーネント・レイヤーを組み込んだ環境の構築が不可欠です。各種サーバーの構築・接続・設定は当然のこと、クライアントとなるパソコンやモバイル端末の調達・設定も欠かせません。実施に向けての準備作業は多くの負担をともなうだけでなく、E2Eテストに精通したQAエンジニアなくして実現は困難です。
また、各デバイス間の通信などを含むテストケースを手動で実施する場合、テスターには細かい操作タイミングや複雑な操作手順が求められます。現実には実施できない、あるいは実施できても妥当性に乏しいテスト結果となり、費やしたコスト以上の成果が得られないというケースも珍しくありません。
一方、適切なテクノロジーによりE2Eテストを自動化することで、実施のハードルを下げることが可能です。リモート操作に対応したテスト自動化ツールを用いれば、多くのデバイスをともなう環境構築・テスト実行の大部分を省力化できます。また、自動生成されるテストスクリプトにより細かい操作タイミングや複雑な操作手順を表現することで、テスターの技量や経験に委ねられないテスト実施が可能となります。
メリット2:幅広いテスト観点をカバー
フロントエンド・バックエンドの不整合や高負荷によるサーバー障害など、システムの動作を妨げる要素は多岐にわたります。これら全てをE2Eテストで確実に検出するためには、広範にわたるテスト観点をカバーできるテストケースが必要となります。結果としてテストケースは膨大なものとなり、手動のE2Eテストで全てを実行することは、現実的には困難です。
一方、人力では不可能といえる網羅的なテストケースを自動生成しつつ、テスト設計・実行を並行する「探索的テスト」に対応したテスト自動化ツールを採用することで、必要かつ十分なテストを効果的に実施できます。ユーザビリティや対負荷性などの非機能要件に着目したテスト観点も、自動でテストケースに落とし込むことで、テスト実行だけでなくテスト設計も自動化され、テスト担当者の負担軽減はもちろんカバレッジの飛躍的な向上にもつながります。
メリット3:継続的な工数削減が可能
昨今の主流であるアジャイル開発の場合、短い開発サイクルの中でE2Eテストを繰り返すこととなります。このとき、開発サイクルが進むたびにテストケース数は増大します。ブラウザやフレームワークのバージョン更新が従来の動作に影響するといった事情により、既存のテストケースを廃止できない場合があるためです。1サイクルの負担が大きい手動のE2Eテストでは、継続的な工数の浪費が避けられません。
また、ブラウザやOSの更新といった環境のアップデートにも、細心の注意が求められます。手動テストの実施後にテスト環境へ不備が判明した場合、多大な手戻りが生じることに。さらには、手動テストにおいてはテストを通すために場当たり的な対応が行われることも散見され、この場合、テストの成果物は再利用性の低いものとなります。結果として、次期サイクル以降にも冗長な作業が発生することも少なくありません。
一方、E2Eテストを自動化することで継続的な工数削減が可能となります。適切なテスト自動化ツールにより生成したテストケースなどの成果物は、大部分を次期サイクルへ流用できるため、以降の開発サイクルで生じる保守作業が最小限で済みます。また、AIなどを用いた高度なテクノロジーを採用すれば、過去のテスト結果から得られるインサイト(洞察)を蓄積・活用でき、開発を進めるたびに自動テストの精度を向上することが可能です。
E2Eの自動テストを実現するうえでの課題とは?
今回は、ソフトウェアのテストに費やす時間を短縮し、開発と保守にかかるコストを削減するために、E2Eテストを自動化するメリットについてお伝えしました。
利用者の視点からアプリケーションのワークフローを検証し、不具合の流出リスクを最小化するうえで、高品質なE2Eテストの実現は重要なテーマです。しかしながら、リリースサイクルの短い昨今の開発現場において、E2Eテストに費やせる工数には制約があります。そのため、高品質なE2Eテストを効率的・継続的に実現するにあたっては、自動化に早期に取り組むことが、有効な選択肢であることは間違いありません。
また、E2Eの自動テストを実現するにあたっては、以下について検討していくことが重要です。
- E2Eテストの自動化に向けての課題
- E2Eテスト自動化の解決策とケース
次回は、E2Eテストの自動化に向けての課題をご紹介します。
- 2023.2.9
- 【第3回】:自動化の解決策と適用ケース