E2Eテストの長所と短所

E2E(エンドツーエンド) テストの目的は、ユーザー エクスペリエンスを最初から最後まで徹底的に検証することです。アプリケーションの実世界でのシナリオを検証することは必要不可欠に思えます。しかし、ときにE2Eテストの実施は複雑で面倒なものであると見なされ、開発者テストや単体テスト/結合テストと比べて、ないがしろにされがちです。しかし、課題はありますが、E2Eテストはエンドユーザーの視点からアプリケーションのワークフローを検証するために重要です。

まずは、E2Eテストの良い面から見ていきましょう。

E2Eテストの利点

E2Eテストは、範囲が広範であることから、「ブロードスタック」または「フルスタック」テストとも呼ばれます。E2Eは全体像を提供します。ここでは、E2Eテストの利点をいくつか紹介します。

  • ユーザーの視点からのテスト:単体テストが各コンポーネントを個別に検証するのに対し、E2Eテストはエンドユーザーの視点からアプリケーションを検証します。これにより、単体テストでは明らかにならない不具合を発見することができます。
  • テストカバレッジの拡大:E2Eテストは、サードパーティのコードを含め、アプリケーションのすべての依存関係が正しく連携して動作することを検証できます。
  • 本番環境で発見されるエラーの数を減らす:テストスイートにE2Eテストを追加することで、本番環境にデプロイした後に不具合が見つかる可能性を減らすことができます。

E2Eテストの欠点


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

  • 実行速度が遅い:UIを介してワークフローを検証するテストは、実行に時間がかかる場合があります。
  • 脆弱/ flaky(不安定な)テスト:E2Eテストでは、大幅なメンテナンスとトラブルシューティングが必要になる場合があります。
  • 利用可能なテスト環境の不足: 実際のシナリオに合わせてテスト環境を再構築するのは難しい場合があります。
  • デバッグがより困難:E2Eテストが失敗した場合、問題を発見して修正するために、より粒度の細かい単体テストや統合テストよりも多くの調査が必要になる可能性があります。

どれくらいのE2Eテストが必要か

E2Eテストをおこなうべきかどうか、そしてどのくらいおこなうべきかという問題に直面したとき、一般的なアプローチは、以下に示す有名な「テスト自動化ピラミッド」モデルに頼ることです。このモデルに従うと、自動テストの大部分は単体テストになります。すなわち、UIのレベルより下で実行される、小規模で迅速なテストです。中間層は、データベースサービス、API、サードパーティサービスなど、アプリケーションの複数のコンポーネントを合わせて検証するAPI/統合テストで構成されます。E2Eテストは通常、UIを介して実行されるため、ピラミッドの一番上に配置されます。

各層を数値化するために、Google社のMike Wacker氏は2015年の記事で、テスト自動化ピラミッドを70%の単体テスト、20%の統合テスト、10%の自動E2Eテストという70/20/10分割(英文)で表現しました。

しかし、テスト自動化ピラミッドが表しているのは理想的なシナリオです。すべての状況に適しているわけではありません。たとえば、単体テストを実行できない多くのサードパーティ製コンポーネントを含む複雑な ERPアプリケーションでは、ピラミッドを逆さまにして、大部分にE2Eテストを実施するのが理にかなっているかもしれません。

Raj Subrameyer氏は、ハブ・アンド・スポークに基づく、自動テストを中心としたコンテキストベースの代替モデルを提案しました。これにより、「レベル」という概念がなくなり、チームは特定のコンテキストに適したテストの種類についてより自由に考えることができます。

E2Eテストを始めるには

そこで問題となるのが、E2Eテストの課題をどうやって克服するかです。その答えのひとつは自動化です。実際、回帰テストと並んで、E2Eテストはテスト自動化のためのベストプラクティスのひとつです。

もちろん、テストの自動化自体には以下のような多くの利点があります。

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

最近の第三者機関調査では、Ranorex ユーザーの半数以上が E2E テストの自動化を報告しています。

ここでは、Ranorex Studioを使用してE2Eテストを自動化するための戦略について、お客様からのコメントをご紹介します。

E2Eテストの詳細については、「テスト自動化における 10 のベスト プラクティス #9: E2E テストの計画」を参照してください。

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

Ranorexは、多くのサードパーティー製コントロールをサポートする高性能なUIキャプチャ機能を搭載したUIテスト/E2Eテスト自動化ツールです。デスクトップアプリ、Webアプリ、モバイルアプリに対応しており、いつもの操作をするだけで、操作をキャプチャしテストの自動化をサポートします。