「E2Eテスト(エンドツーエンドテスト)」は、システムのリリース前に必ず実施すべき重要なテストです。
E2Eテストを実施することで、ユーザーの視点に立ってシステム全体の品質を検証し、リリース前に問題や不具合を見つけ解消することができます。
今回はE2Eテストとは何か、観点やメリット・デメリットなど基本をまとめてお伝えします。E2Eテストを自動化できるツールも紹介しますので、ぜひ参考にしてみてください。
- もくじ
1.E2Eテストとは
E2Eテストとは、システム全体としての動作がユーザー視点で問題ないか検証するテスト手法です。
E2Eは「End to End(エンドツーエンド)」の略で、システムの端から端までを通して実施するため、このように呼ばれます。
E2Eテストでは、サーバーやデータベースといったシステムの構成要素を全て組み込み、できる限り本番環境に近い条件で実施することが特徴です。また、システムのユーザーが利用することを想定したシナリオに沿って、実際にシステムを操作しながら実施します。
1-1 実施する目的
E2Eテストを実施する目的は、本番環境でユーザーが直面する問題を事前に検出し、システム全体の品質を保証することです。システム全体をユーザー視点で検証することで、実際のユーザーが問題に直面するリスクを軽減できます。
E2Eテストは、舞台に例えると「最終リハーサル」のようなものです。最終リハーサルでは、脚本やキャスト、照明、音響などを本番に近い条件で確認します。これは、本番を想定した全体の動きを確認することで、万全な状態で本番を迎えるためです。
同じように、「本番に近い環境で」「全体を通して」実施することで、本番運用を万全な状態で迎えられるようにするのがE2Eテストです。
1-2 システムテストとの違い
E2Eテストと似ているテスト手法に「システムテスト」があります。システムテストとは、システム全体の挙動が要件定義に沿っているかを検証するテスト手法です。E2Eテストと同じように、構成要素を全て組み込んだシステム全体をテストします。
E2Eテストとシステムテストの違いはそれほど明確ではなく、同義に近い意味で扱われることも少なくありません。ただし、E2Eテストはユーザーシナリオに沿った確認を重視し、システムテストは要件との整合性チェックを重視する、といった見方もあります。
なお、システムテストとは何かについて詳しくは、次の記事をご一読ください。
2.E2Eテストの主な観点
E2Eテストの成果を高めるうえでは、チェックする観点を把握することが大切です。ここでは、E2Eテストの主な4つの観点を紹介します。
2-1 ユーザーシナリオとの整合性
ユーザーシナリオとの整合性は、E2Eテストにおいて欠かせない観点です。
E2Eテストは、実際にユーザーが利用することを想定したシナリオに沿って実施します。ユーザーが利用する際の流れを正確に再現できること、ユーザーの目的が達成できることが求められます。
たとえばECサイトの決済機能の場合、商品をカートに入れてから支払いを完了するまでの流れを実際に再現するシナリオが必要です。また、その際のデータの変化やシステムの応答なども、整合性が取れているかをチェックする必要があります。
2-2 システム全体の連携
E2Eテストでは、システム全体の連携が取れているかのチェックも必須です。
サーバーやデータベースなど、各構成要素間の通信タイミングや、データのやり取りなどが想定通りであるかどうかチェックします。
また、外部サービスを利用する場合は、それらとの連携動作もチェックが必要です。
たとえば、外部SNSへのシェア機能を確認する場合、対象SNSを含めた連携をチェックします。連携動作を漏れなく検証することで、システム全体としての動作を保証できます。
2-3 パフォーマンス
E2Eテストでは、パフォーマンス面も重要なチェックポイントです。パフォーマンスの問題はユーザー体験の低下につながりやすいため、チェックが欠かせません。
リクエストに対する応答速度や処理できるデータ量、サーバー負荷への耐久性などをチェックします。
たとえば、リクエストが集中した際に応答速度が著しく低下しないか、サイズの大きいデータでも正しく処理できるか、といった観点が挙げられます。多くのユーザーが利用する本番環境に近い条件で実施し、パフォーマンスへの悪影響がないかチェックしましょう。
2-4 セキュリティ
E2Eテストでは、セキュリティ観点での検証も重要となります。さまざまなユーザーが利用するシステムは、サイバー攻撃の標的にされやすいです。そのため、悪意のあるリクエストやシステムへの侵入などへのセキュリティ対策が機能するかのチェックが必要です。
たとえば、リクエスト内の不正なスクリプトが実行されないか、不正な認証情報でアクセスが成功しないか、といった検証方法が挙げられます。サイバー攻撃やユーザーの誤操作を再現することで、情報漏えいや不正アクセスを起こさないかチェックします。
3.E2Eテストを実施するメリット
E2Eテストを実施することには、大きなメリットがあります。E2Eテストを実施するメリットは、主に次の2つです。
3-1 本番環境に近い検証が可能
E2Eテストでは、本番環境に近い検証が可能です。開発環境やテスト環境では、本番環境特有の制約が再現されず、問題が顕在化しないこともあります。このような問題がリリース後に発覚すれば、対応コストは増大するでしょう。
その点、E2Eテストは実運用に近い条件で実施するため、本番環境と同様の問題を検出できる可能性があります。E2Eテストを実施することで、本番環境での動作をシミュレートでき、実運用での問題を事前に検出しやすくなります。
3-2 ユーザー視点で問題の検出が可能
E2Eテストでは、ユーザー視点で問題の検出が可能です。実際のユーザーの 操作を再現するため、ユーザーが感じる不便や不満にも気付きやすくなります。発見した改善点をシステムに反映することで、ユーザー体験の向上につながるでしょう。
たとえば決済機能のE2Eテストでは、カートへの商品追加から購入完了までの手続きをユーザーと同様に行います。この過程で、決済ボタンの位置が分かりづらい、画面遷移に時間がかかる、といった問題に気づけるでしょう。
4.E2Eテストを実施するデメリット
E2Eテストを実施することには、メリットだけでなくデメリットもあります。E2Eテストを実施するデメリットは、主に次の2つです。
4-1 テストに時間がかかりやすい
E2Eテストの実施には、多くの時間がかかりやすいと言えます。システム内のあらゆる構成要素を含むテスト環境が必要となり、テスト規模が大きくなるためです。作成・実行するテストケース数はもちろん、環境構築の手間も増えるでしょう。
特に手動テストの場合は、手順が多いユーザーシナリオの再現に時間がかかります。たとえば決済機能のE2Eテストでは、商品検索やカート追加、決済といった多くの操作をテストケースごとに行わなければなりません。テストの負荷が高く、ほかの業務に悪影響を及ぼすことも懸念されます。
4-2 テスト結果が不安定になりやすい
E2Eテストは、テスト結果が不安定になりやすいことも難点です。システム全体としてテストするため、その動作はさまざまな要素の影響を受けます。
たとえば、データベースの設定やネットワークの遅延といった条件の一部が違うだけで、テスト結果が変わるケースも少なくありません。このように、環境差異によってテスト結果に影響が出ると、本来確認したい観点のチェックに支障が生じることもあります。
5.E2Eテストの大まかな流れ
ここでは、E2Eテストの大まかな流れを紹介します。E2Eテストは、以下の3ステップに分けて進めていきましょう。
- テストの準備
- テストの実施
- テスト結果の分析
1. テストの準備
まずは、E2Eテストにあたって必要な準備を済ませましょう。
ユーザーシナリオに沿ったテストケースの作成やテスト環境の構築、テストデータやテストアカウントの作成などを行います。
テスト自動化を図る場合は、テストツールの導入や設定が必要です。手動テストの場合は、テストケースに優先順位を付けてスムーズに実施できるようにしましょう。
2. テストの実施
次に、テスト環境を用いてE2Eテストを実施します。
テストケースに記載された手順に沿ってシステムを操作し、挙動が期待値と一致するかを確認するのが基本的な流れです。
実際の画像や動画をエビデンスとして記録しておくのが望ましいといえます。期待値との差異はもちろん、違和感がある現象なども漏れなくメモしましょう。
3. テスト結果の分析
そして、E2Eテストのテスト結果を分析します。
各テストケースがNGとなった原因や、テストケース全体としてのNG傾向などを分析しましょう。
NGのテストケースについては、本当にシステム側の問題なのかの事実確認も必要です。分析の結果はレポートとして整理し、関係者に共有しましょう。
6.E2Eテストを自動化できる代表的なツール
テスト規模が大きいE2Eテストの負担を減らすためには、ツールにより自動化を図るのが効果的です。ここでは、E2Eテストを自動化できる代表的な3つのツールを紹介します。
6-1 T-DASH
出典:T-DASH
「T-DASH」は、バルテス株式会社が提供するテスト自動化ツールです。WebアプリケーションやWindowsアプリケーションの自動テストに対応しています。E2Eテストにおいては、システム画面のユーザー操作をスクリプトにより自動化できます。
T-DASHの大きな特長は、日本語のテストケースから自動化スクリプトを生成できる点です。専門的なプログラミングスキルが要求されないため、テストコードの記述に適した人材を確保できない場合でも問題ありません。
「テストコードを実装できる人材がいない」「テスト自動化の経験が少ない」といった場合は、T-DASHを活用してみましょう。
6-2 Playwright
出典:Playwright
「Playwright」は、Microsoft社が開発したE2Eテスト向けのテスト自動化フレームワークです。テストコードを記述することで、Web系のシステムにおけるブラウザ操作を自動化できます。プログラミングスキルは必要ですが、基本的に無料で利用可能です。
Playwrightは、モバイルブラウザを含む主要なブラウザや開発言語に対応しています。また、操作のタイミングを表示に合わせて調整できる「自動待機機能」といった機能が充実しているのも強みです。「テストコードを効率的に実装したい」「費用をかけずにテスト自動化したい」といった場合は、Playwrightを活用してみましょう。
なお、Playwrightとは何かについて詳しくは、次の記事を参考にしてください。
6-3 Selenium
出典:Selenium
「Selenium」は、ブラウザ操作を自動化するためのフレームワークです。システムのユーザー操作に合わせたテストコードを記述することで、E2Eテストを自動化できます。オープンソースで提供されており、基本的に無料で利用できるのが特長です。
注意点として、テストコードを記述するためのプログラミングスキルがないと、正確な自動化は難しいでしょう。「テストコードを実装できる人材がいる」「費用をかけずにテスト自動化したい」といった場合は、Seleniumを活用してみましょう。
E2Eテストの自動化について学びたい方はこちらの記事を参考にしてみてください。
まとめ
E2Eテストとは、システム全体としての動作をユーザー視点で検証するテスト手法です。
本番環境でユーザーが直面する問題を事前に検出し、システム全体の品質を保証するうえで欠かせません。ただし、E2Eテストは時間がかかり、テスト結果が不安定になる可能性があるなどのデメリットもあります。
E2Eテストの負担を軽減したい場合は、テスト自動化ツールの活用も検討しましょう。E2Eテストを実施する際には、今回の内容をぜひ参考にしてみてください。