Skip to content
Latchkey

end-to-end testing とは何か?

end-to-end testing は、実際のユーザーが体験するのとまったく同じように、システム全体を通じた完全なユーザージャーニーを検証します。

end-to-end (E2E) テストはテストピラミッドの頂点に位置します。unit test が部品をチェックし、integration test が接続をチェックするのに対し、E2E テストはシステム全体、front end、back end、データベースが、実際のワークフローに対して正しい結果を届けることをチェックします。

何であるか

end-to-end テストは、ユーザーがするのと同じ方法で、実際のインターフェースを通じて、すべての実際のレイヤーを横断してアプリケーションを操作し、最終結果を検証します。web アプリではこれは多くの場合、サインアップ、カートへの商品追加、checkout といったフローをクリックで通すためにブラウザを自動化することを意味します。

オンラインストア向けの E2E テストは、ブラウザを開き、サイトへ移動し、アカウントを登録し、商品を検索し、カートに追加し、テストカードで checkout を完了し、注文確認が表示されることを検証します。1 つのテストですべてのレイヤーを実行します。

トレードオフ

E2E テストは最も現実的ですが、システム全体と実際のタイミングに依存するため、最も遅く、最も高コストで、最も flakiness を起こしやすいものでもあります。UI の小さな変更が多数を壊すことがあります。だからこそテストピラミッドは、多数の unit test に対して比較的少数の E2E テストを持つことを勧めます。

CI での位置づけ

遅く、動作中のシステムを必要とするため、E2E テストは通常 pipeline の後半、unit test と integration test が合格した後に実行され、多くの場合 deploy された staging 環境に対して実行されます。チームはカバレッジを速度と flakiness とバランスさせるため、E2E スイートを小さく最も重要なジャーニーに絞って保ちます。

なぜ重要か

E2E テストは、すべてが接続されたときにのみ現れる問題を捉えます。壊れたナビゲーション、誤設定されたサービス、front end と back end の間の integration のギャップなどです。実際のユーザーに最も近い自動化された近似であり、重要経路の E2E スイートが合格することは、リリースが安全である強い証拠になります。

重要なポイント

  • E2E テストは実際のシステム全体を通じてユーザージャーニー全体を検証する。
  • 最も現実的だが、最も遅く最も flaky なテストである。
  • 少数に保ち、重要な経路に絞り、CI の後半で実行する。

関連ガイド