エンドツーエンド(E2E)テストでは、アプリケーションのワークフローをを始めから終わりまで調査し、全体的な機能を確認します。E2Eテストのベスト・プラクティスには、慎重な範囲の定義、実際のシナリオの使用、効果的なテストの作成、部門間のコラボレーション、オートメーションの力のフル活用などがあります。
利用可能なさまざまな種類のソフトウェア・テストの中で、E2Eは多くの点で最も包括的なテスト方法を提供します。「アプリケーションは意図したとおりに動作しますか?」という核心的な質問に対して、単に「はい」または「いいえ」という限定的な答え(一部の「ブラックボックス」形式のテストのように)を返すだけではありません。
E2Eは、アプリケーションの性能をより詳細に可視化することで、この重要な質問に対するより包括的で細部にまで行き届いた答えを提供します。
しかし、こうした新たな視点を取り入れることには代償が伴います。E2Eテストを非常に包括的で価値のあるものにしている要素自体が、このテストを他のタイプのテストに比べて時間がかかり、より煩雑なものにもしています。E2Eテストがその結果を出すには、長い時間がかかります。同時に、プロセスを監督する人々に代わって、より多くの関与と忍耐も必要になります。
そのため、E2Eテストのベスト・プラクティスに従うことがさらに重要になります。E2Eテストの実装を通じて、E2Eテストの使用を遅らせがちな多数の要件を軽減することができます。また、懸念はスピードだけではありません。ここに概説されているベスト・プラクティスは、E2Eテストで生成されたデータの有効性を高め、最終的にはテスト・プロセス全体の価値を高めることができます。
IBMニュースレター
AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。
ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。
E2Eテストを実行するための最適な方法について知る前に、まずその主なメリットを確認して、このタイプのテストがご自身のニーズに最適であるかどうかを確かめててください。E2Eは次のような特定の利点によって、ユーザーを支援します。
すべての種類の組織がE2Eテストに適しているわけではありませんが、ここに記載されている業種は確実にその傾向があることが証明されています。
そのいくつかは、今日存在する最も重要で安全な情報を扱っています。
テスト担当者は、細心の注意を払って患者の機密データを扱う必要があります。E2Eテストは、患者データが安全に使用され、完全に規制遵守の範囲内で使用されることを確認することで、医療従事者がその目的を達成する上で活用できます。
オンライン請求書支払い、ユーザーログイン手順、電子送金など、金融テクノロジー(フィンテック)の主要な運用コンポーネントにおいて、組織はE2Eテストを継続的に利用しています。
E2Eテストから大きなメリットを得られる業種・業務の 1 つは電子商取引であり、オンライン・マーケティングで使用される購入プロセス全体を検証できます。
E2Eテストにより、テスターはサイトの入り口でのユーザー通知、コンテンツ共有、ユーザー登録などの機能を評価できます。
クラウドベースのアプリは、一貫したレベルの表示品質とユーザー・インタラクションを維持しながら、さまざまなサービス上で実行する必要があります。E2Eテストにより、クラウド・アプリがさまざまなサービスで機能できるようになります。
E2Eテストのベスト・プラクティスは大きく7つの領域に分類でき、それぞれの領域にはいくつかの個別のステップが含まれます。
この最初のステップは主に概念上のものであり、集中的なテスト計画が含まれます。E2Eテストは主にユーザー・エクスペリエンスに関するものであり、ユーザー・エクスペリエンスが、このテスト・プロセス全体における論理的な開始点であることに留意してください。
このアプリケーションの潜在的なユーザーの立場を想定し、ユーザーの視点から考察してみましょう。ユーザーが、ユーザー・エクスペリエンスに期待することは何でしょうか。ユーザーごとに期待する内容に大きな違いがある可能性は高いでしょうか。どのユーザー・ジャーニーが最も重要で、最も頻繁に選択されるのはどのようなものでしょうか。
このような質問をすることで、ユーザーの期待や、このアプリケーションに関連付けられる通常の機能やワークフローを把握しやすくなります。
まず、重要度が高いワークフローを指定します。このステップには、ログインやチェックアウト(eコマース・アプリケーションの場合)、主要な統合など、よく使用されるプロセスが含まれます。これらのプロセスは、システムの安定性を確保する上で最大の役割を果たし、運用の整合性にとって不可欠であると考えられています。
E2Eテストのこの領域では、このアプリにおいて最悪のユーザー・シナリオを検討することをお勧めします。システム関連のアプリ障害が、ユーザーに最も深刻な影響や混乱をもたらす可能性のある状況を予測する必要があります。テスターはしばしばリスク・ベースのテストを使用して、性能を最適化し、潜在的な問題を回避するためにアプリにどのような機能を新たに追加できるかを判断します。
「完璧」という言葉は適切ではないかもしれません。ここで実際に完璧を達成することは不可能かもしれません。しかし、可能な限り最善のテスト・ケースを作成することは可能です。これは、テスト・ケースがE2Eテストに関する領域において通貨のように機能するため、非常に重要です。テスト・ケースは、E2Eテストを可能にする実装ツールです。そのため、適切な設計が重要です。
ステップ1でユーザーのニーズと要件について把握した内容を使用して、テスト・ケースの作成を開始します。賢明なテスターは、網羅性を突き詰め、通常のアプリケーションの動作中に発生する可能性のあるユーザーとのやり取りをすべて捕捉しようとします。
テスターは、フロントエンド、バックエンド、データベース、アプリケーション・プログラミング・インターフェース(API)など、関連するすべての個別のコンポーネントに関係するさまざまな使用シナリオの概要を示すテスト・シナリオを作成します。可能であれば、より複雑なワークフローの焦点をさらに絞って、テスト・ケースの処理と実行を容易にすることが推奨されます。
複数のテスト・ケースを扱う場合があるため、テスト・ケースの管理も同様に重要です。これらすべてを整理するには、すべてのテスト・ケース(およびそれらを整理して保持するテスト・スイート)を慎重に管理することが重要です。
これは、テスト・ケースを簡単に識別できるようにし、そのタイトルを明確に理解できるようにすることを意味します。同様に、前提条件も明確にする必要があります。テスト・ケースでは、テストの実行に必要なリソースと、そのテストで期待される結果を概説する必要があります。
これは二重表現のように聞こえるかもしれませんが、少し考えてみましょう。ステップ2は重要ですが、そのテスト・ケースを格納するための安全で適切なテスト環境がなければ疑問点が残ります。テスト環境は、アプリケーションが通常使用される本番環境を精巧に模倣する必要があり、テストに非常に適している必要があります。
したがって、テスト環境には、同様のタイプのサービス構成、データベース・スキーマ、およびAPIテストで使用するAPIキーが含まれている必要があります。同様に、テスト環境には、ハードウェア指向、ソフトウェア・ベース、ネットワーク関連など、必要なコンポーネントがすべて含まれている必要があります。本番環境にあるコンポーネントは、テスト環境にも含める必要があります。
ここで、テスト・ケースで使用しているデータについて注意点があります。テスト・プロセスでここまで到達し、すべての予期せぬ事態に対応したと考えるのは簡単です。安定性を示し、実際の状況で遭遇する可能性のあるものに近似したテスト・データを組み込んでいない場合、その考えは実際とは異なる可能性があります。
高品質なデータを取得するには、機密データが削除された以前の本番データを再利用できる可能性があります。それとは別の可能性として、データの特性を模倣する合成データがあります。
最後に、テストが完了したら、確立された分解メカニズムを使用してデータを収集・分析し、新しい設定方法で再テストできるようにします。
有意義なテスト・ケースを開発する作業が完了したので、それらを呼び出し、繰り返し使用できるようにします。
オートメーションを導入すると、任意の数のプログラムされたフレームワークに割り当てることで、複数のテスト・ケースの日常的な実行を管理できる変革的な能力を獲得できます。
テスト自動化は、回帰テストの際に特に便利です。回帰テストでは、自動化により手動テストに比べて大幅な時間の節約と生産性の向上が実現します。SeleniumのようなE2Eテスト・フレームワークはWebアプリケーションを自動化できますが、Appiumのようなフレームワークはモバイル・アプリケーションのテスト実行を合理化および自動化するように設計されています。
また、シンプルなテストと同様に簡単なテスト保守を提供するように設計されたローコードテクノロジーとAI搭載機能を使用するテスト・オートメーション・ツール(Katalonなど)もあります。
組織のE2Eテストの力を拡張するために、先進的な企業はテスト自動化を継続的インテグレーション/継続的デリバリー(CI/CD)パイプラインに統合しようとしています。このような組織がE2Eテストをプロセスで定期的に行う一部とすると、テストの自動実行、より効率的なテストの実行、迫り来る性能の問題の早期検知などのメリットが得られます。
E2Eテストは、通常非常に手間と時間がかかることを考えると、厳密に隔離された業務であることは安心できる要素です。ただし、次の事実を見るとそうとも言えません。E2Eテストが定期的に行われるプロセスである場合にのみ、テスターはE2Eテストから最大限のメリットを得ることができます。
テストとそれに関連するメトリクスは、常に監視およびレビューして、時間の経過に伴う関連性を維持する必要があります。状況は大きく、突然変化する可能性があり、ユーザーの行動も同じように偶発的な影響を受けます。以前は大きな実用性があったテスト・ケースが不安定になり、価値を発揮できなくなる可能性があります。このようなテストでは、不正確な結果を出したり、関連する保守コストを増加させたりしないように、即時対応が必要になります。
組織が従うテスト・ストラテジーには、追跡されたプロセスが含まれる必要があります。この方法により、テスターは、テスト・ケースが関連性があり価値がある状態を維持しているか、それとも新しいテスト・ケースに置き換える必要があるかどうかを判断できます。
確かに、E2Eテストにはできて、他の形式のソフトウェア・テストにはできないことがあります。他の選択肢としては、アプリケーションが生み出すユーザー・エクスペリエンスの品質に重みを付けたり、アプリケーションの最初から最後までのパフォーマンス全体を評価したりすることができます。
しかし、E2Eテストは価値があるものですが、どの組織にとってもテストにおける唯一のストラテジーとするべきではありません。他のテストにも独自の価値があるため、他のタイプのテストを実行することも必要です。
単体テストと統合テストは、重要度の低い多くのエラーを処理するのに非常に役立ちます。また、E2Eテストほど範囲が大きくないため、通常は少ないリソースで迅速に実施できます。
単体テストと統合テストを使用する理由はもう1つあります。エッジ・ケースと例外テスト(通常の運用を超えた特徴を示すケース)を扱う場合は、アプローチが異なることがあります。このような場合、単体テストや統合テストのテスト・プロセスは、E2Eテストよりも適しています。
通常のアプリケーションの安全管理の一環として、定期的なE2Eテストを推進することが非常に重要であることについては、上記にて説明した通りです。E2Eテストのもう1つの重要な側面は、テストが1人の担当スタッフだけでできるものではないことです。少なくとも部分的に関与できるチーム・メンバーが多ければ多いほど、テスト・プロセス全体の正常性は向上します。
そこで、開発チーム、QA、または他の事業単位で働いているかどうかに関係なく、チームメンバー同士が連携する意識を育む必要があります。このプロセスの重要な一部として、すべてのチーム・メンバーとその他の利害関係者がテストの対象範囲に関連する重要な事実や開発について報告できるように、コミュニケーションの強化をサポートします。
同様に、テスターは開発したテスト・ケースを文書化し、特定のテストの性質と関連する問題について慎重に言及する必要があります。このような透明性と明確性は、E2Eテストに関するチーム目標を推進する上で大いに役立ちます。
以前から言われていることではありますが(この記事でも先述)、大切なことなので繰り返します。効果的なE2Eテストを実施するには、サービスを提供する対象となるオーディエンスについて留意する必要があります。
ユーザーと同じ思考を共有するようなイメージを持ちましょう。ユーザーはアプリケーションに何を期待しているでしょうか。ユーザーはどのような方法でこのアプリに関与する可能性があるでしょうか。それを特定できるかどうかはお客様の取り組みにかかっています。テスト・ケースを作成する際は、そのユーザーの考え方を理解する必要があります。
さらに、さまざまなブラウザーでアプリをテストし、どのブラウザーであってもアプリケーションがスムーズに動作することを確認することも賢明です。最近では、さまざまなブラウザーや操作エクスペリエンスを使用されているため、このステップは必須です。
E2Eテストの主な目的の1つは、どこでどのように使用されているかに関係なく、アプリがうまく機能することを確認することです。E2Eテストは、クロスプラットフォームの互換性を保証するために必要な広範かつ関連性が高いシステム・テストを実行する上で、十分な範囲と包括性を備えています。
エラーのないユーザー・エクスペリエンスを実現するには、優れた実行が必要です。幸いなことに、E2Eテストはその複雑なタスクをサポートするだけにとどまりません。
Javaアプリケーションを開発および配信するためのフルマネージドのシングルテナント・サービス。
DevOpsソフトウェアとツールを使用して、複数のデバイスや環境でクラウドネイティブ・アプリケーションを構築、デプロイ、管理します。
クラウド・アプリケーション開発は、一度構築すれば、迅速に反復し、どこにでもデプロイできます。