E2Eテストの長所と短所

E2E(エンドツーエンド) テストの目的は、顧客の利用体験を徹底的に検証することです。
アプリケーションを利用する際の一連の動作を検証することは必要不可欠であり、E2Eテストは顧客視点からのアプリケーションのワークフローを検証する上で重要なテストと言えます。しかしながら、E2Eテストの実施が難しく面倒であるものと扱われ、開発者テストや単体テスト、結合テストと比べて、しっかりと実施されないケースも多くみられます。


本記事では、E2Eテストの長所と短所や、E2Eテストを始めるための方法ついて紹介します。

E2Eテストの長所

E2Eテストは、テスト範囲がシステム全体と広範囲であることから、「ブロードスタック」または「フルスタック」テストと呼ばれることもあります。E2Eテストはアプリケーションの全体を検証します。ここでは、E2Eテストの利点をいくつか紹介します。

  • 顧客視点からのテスト
    E2Eテストは、顧客が実際にアプリケーションを利用する時と同じ方法でテストをおこなうことで、顧客視点からのアプリケーションの検証がおこなえます。これにより、機能が期待通りに実装されているか、使い勝手は良いかなどユーザビリティが高いアプリケーション開発につなげることができます。
  • テストカバレッジの拡大
    E2Eテストは、開発アプリケーションとそのアプリケーションと繋がる他のシステムなどが正しく連携して動作することを検証できます。
  • 本番環境で発見される問題の削減
    E2Eテストは、本番環境と同等の環境でのテストをおこなうため、本番環境で見つかる問題が発見される可能性が高くなります。

E2Eテストの短所

前述したように、E2Eテストは煩雑だと思われることがあります。ここでは、E2Eテストで認識されているいくつかの欠点を紹介します。

  • 実行速度が遅い
    E2Eテストは、開発アプリケーションの画面操作をおこないワークフローを検証するためテストに時間が掛かります。また、テストを実施する前のテストの準備(テスト環境やテストデータの準備など)でも時間がかかる場合があります。
  • 脆弱/ flaky(不安定な)テスト
    E2Eテストでは、ネットワークの影響や環境が影響し、予期しない原因によりテストが不安定になる場合があります。
  • デバッグがより困難
    E2Eテストで問題が見つかった場合、粒度の細かい単体テストや統合テストよりも、原因の特定が難しく、調査に時間が掛かる可能性があります。

E2Eテストをどの程度おこなうべきか

E2Eテストをどの程度おこなうかを考えたときに、ソフトウェアテストで有名なモデルとして「テスト自動化ピラミッド」を使用する方法があります。
このモデルでは、自動化テストの大部分は単体テストになります。中間層は、データベースサービス、API、サードパーティサービスなど、アプリケーションの複数のコンポーネントを合わせて検証するAPI/統合テストで構成され、E2EテストはUIを介して実行されるため、ピラミッドの最上層に位置します。

過去(2015年)のBlog記事(英文)で、Google社のMike Wacker氏は、テスト自動化ピラミッドの各階層の自動化テストに対する割合に対して、単体テスト:70%、統合テスト:20%、E2Eテスト:10%として表現しました。しかし、このテスト自動化ピラミッドが表しているのは理想的なシナリオであり、すべての状況に適しているわけではありません。たとえば、単体テストを実行できない多くのサードパーティ製コンポーネントを含む複雑なERP(Enterprise Resource Planning)アプリケーションでは、ピラミッドを逆さまにして、大部分にE2Eテストを実施するのが理にかなっているかもしれません。

また、Raj Subrameyer氏は、自動テストをを中心としたコンテキストベースの代替モデルを提案しました。これにより、階層の概念がなくなり、開発チームは特定のコンテキストに適したテストのタイプを自由に選択することができるようになります。

E2Eテストを始めるために

E2Eテストを始めるための方法のひとつは、テスト自動化を使用することです。リグレッションテスト(回帰テスト)と並んで、E2Eテストは、自動化テストのためのベストプラクティスと言えます。テストの自動化には以下の利点があります。

  • さまざまなケースで繰り返されるテストの時間を節約できます。
  • リソースを節約できます。特に、システムがアイドル状態になる可能性のある時間外にテストをスケジューリングできます。
  • テスト結果から迅速なフィードバックが得られます。
  • 簡単に繰り返し可能なテストをおこなうことができます。
  • 本番環境でのテストを可能にします。

E2Eテストの自動化について、より深く知りたい場合はE2Eテストとは?をご参照ください。また、E2Eテストの自動化を検討されている方や、これから自動化を進めようとしている方向けに以下のホワイトペーパーをお勧めします。

E2Eテストの自動化を始めるためには、自動化テストツールが必要となります。Ranorexは、デスクトップアプリ、Webアプリ、モバイルアプリに対応したUIテスト自動化ツールです。多くのサードパーティー製コントロールなど、さまざまなテクノロジーをサポートしており、いつも通りの画面操作をするだけで操作をキャプチャし、テストシナリオを自動生成します。また、GUI上での操作となるため、メンテナンスもおこないやすく、直感的に操作できる特徴を持っています。

(この記事は、開発元 Ranorex 社 Blog 「The Pros and Cons of End-to-End Testing」2021年9月10日の記事を元にしています。)