新規会員登録再開のお知らせ

新規会員登録を9月14日9:30より再開いたしました。ログアウト状態になっている方はお手数ですが再度ログインをお願いいたします。

  • 2026/10/02 07:10 掲載

E2Eテストとは何か? CI/CDで失敗しないための基礎、仕組み・種類・自動化を徹底解説

会員(無料)になると、いいね!でマイページに保存できます。
開発の自動化が進み、テスト結果も自動で「成功」と表示されるのが当たり前になった。しかし、その成功表示の裏で、本来走るはずのE2Eテストがそもそも起動していなかったとしたらどうだろうか。E2Eテストとは、ユーザーの操作に近い形でシステムを端から端まで確かめるテストのこと。単体・結合テストとの違いやCI/CDへの組み込み方、代表的なツール、そして自動化に潜む落とし穴までを基礎から整理する。
E2Eテストとは何か? CI/CDで失敗しないための基礎、仕組み・種類・自動化を徹底解説の画像
AIの登場により、E2Eテストの考え方も変わってきた

E2Eテストとは何か?「通ったのに本番で壊れる」に備える

 開発チームがテストを自動化し、画面には毎回「成功」の表示が並ぶ。ところが後から調べると、本来走るはずだったE2Eテストそのものが一度も起動していなかった。こうした事態は、自動化を進めた開発現場ほど起こり得る。

 たとえば、開発基盤として広く使われるGitHub Actionsには、自動処理が発生させたイベントでは別のワークフローを起動しない仕様がある。公式ドキュメントによると、リポジトリ用の認証トークン「GITHUB_TOKEN」を使った操作で発生したイベントは、一部の例外を除き新しいワークフローを作らない。処理が無限に連鎖するのを防ぐための仕組みだという。したがって設定を誤れば、後続のテストが静かに動かない状態が生まれ得るわけだ。

 では、そもそもE2Eテストとは何か。E2EはEnd-to-End(端から端まで)の略で、実際のユーザー操作に近い形で、統合されたシステムを最初から最後まで確認するテストを指す。米IBMは、アプリケーションのワークフロー全体を始めから終わりまで検証する手法だと説明している。

 ECサイトで考えると分かりやすい。ログインし、商品を探してカートに入れ、購入手続きを経て決済が完了する。E2Eテストは、この一連の流れを1本のシナリオとして通しで動かし、途中で画面が止まったり金額がずれたりしないかを確かめる。どこからどこまでを1本にするかは、ユーザーが目的を達成するまでを単位に考えると整理しやすい。

画像
【画像付き記事全文はこちら】
ECサイトでE2Eテストが検証する範囲のイメージ
(出典:本文をもとに作成)

 なお、単体テスト、結合テスト、システムテスト、E2Eテストの呼び方や範囲は、組織や開発プロセスによって多少異なる。本稿では、実際のユーザー操作に近い形で、統合されたシステムを端から端まで検証するテストをE2Eとする。
編集部おすすめ動画

単体・結合テストと何が違う? テストの全体像を整理

 E2Eの位置付けをつかむには、ほかのテストと並べてみるとよい。単体テストは、関数やクラスといったプログラムの「部品」が1つずつ正しく動くかを確かめる。次の結合テストは、部品同士や、アプリとデータベースなどの「つながり」を確認するものだ。

 これに対し、E2Eテストが見るのは一連の利用体験が成立するかどうか。個々の部品が正しくても、組み合わせた結果、画面遷移の途中でボタンが押せなかったり、決済処理への受け渡しで止まったりすることはある。そうした利用者目線の不具合を拾えるのが、E2Eの強みである。

 とはいえ、全部をE2Eにすればよいわけではない。代表的な考え方に「テストピラミッド」がある。マイク・コーン氏が著書『Succeeding with Agile』で示したもので、細かく速いテストを土台に数多く用意し、粒度の大きいテストほど数を絞るという発想だ。この考え方を解説した記事は、E2Eテストは不安定になりやすく、予期せぬ理由で失敗しがちだと指摘する。一方で、ピラミッドの呼び名や形を厳密に守る必要はないとも述べている。

 また、米グーグルのテストブログでは、2015年に単体70%、結合20%、E2E10%という配分が目安として示された。もっとも、これも1つの考え方であり、どのシステムにも当てはまる正解ではない。

画像
米グーグルが示したテスト配分の目安
(出典:Google Testing Blogをもとに作成)

 つまり、E2Eは単体・結合テストより優れているわけでも、劣っているわけでもない。原因を素早く特定しやすい下位のテストと、利用者目線で全体を確かめるE2Eを組み合わせ、役割を分担させることが重要になる。

CI/CDにE2Eテストをどう組み込む? 自動化の流れ

 E2Eテストの価値が高まるのは、CI/CDと組み合わせたときだ。CI/CDは、コードの統合からテスト、リリースまでを継続的に自動化する開発手法を指す。人手で毎回E2Eを実行するのは負担が大きいため、変更のたびに自動で走らせる仕組みに組み込む考え方が広がっている。

 典型的な流れはこうだ。開発者がコードを変更すると、まずビルド(プログラムを実行できる形にまとめる作業)が行われ、単体テストや結合テストが走る。それらを通過した後にE2Eテストを実行し、問題がなければ本番環境などへデプロイ(配置)する。速いテストを先に回し、時間のかかるE2Eを後段に置くことで、問題を早い段階で見つけやすくなる。

画像
CI/CDの中でのE2Eテストの位置と実行タイミング
(出典:本文をもとに作成)

 E2Eを走らせるタイミングも1つではない。プルリクエスト(変更の取り込み依頼)の段階では、重要な流れに絞った軽いE2Eで素早く確認する。メインのブランチへのマージ後やデプロイ前には、より広い範囲を回して最終確認に使う。さらにデプロイ後、本番に近い環境で主要な流れだけを確かめる運用もある。

 代表的なツールとしては、Playwright、Cypress、Seleniumの3つがよく挙がる。米マイクロソフトが開発するPlaywrightは、Chromium、WebKit、Firefoxに対応し、Node.jsやPython、Java、.NETで使える。CypressはJavaScriptとTypeScriptでテストを書き、アプリと同じブラウザ内で実行される点が特徴だという。一方、Seleniumは、2004年にソートワークスで生まれた老舗。W3C標準のWebDriverを実装し、多くの言語と主要ブラウザで同じコードを動かせるとしている。

E2Eは万能ではない、自動化に潜む4つの落とし穴

 ただし、自動化すれば安心というわけではない。最初の落とし穴は、テストを書いたのにそもそも起動していないことだ。冒頭の例に加え、GitHub Actionsの公式ドキュメントは、条件によってスキップされたジョブが「成功」として扱われ、必須のチェックでもマージを止めないと明記している。テストが成功したことと、予定したテストが実行されたことは同じではない。

画像
自動化されたテストの流れにも、見落としやすい落とし穴が潜む

 2つ目は、同じコードなのに成功したり失敗したりする「Flaky Test(不安定なテスト)」だ。グーグルは2016年、全テスト実行の約1.5%がFlakyな結果を示し、テストの約16%に何らかの不安定さがあると公表した。こうした失敗が続くと、開発者は本物の不具合まで見過ごしやすくなる。Playwrightのように、再実行で成功したテストを「flaky」として区別するツールもある。

 3つ目は、E2Eを増やしすぎてCI/CDそのものが遅くなる問題である。E2Eは実際にブラウザを動かすため、1本あたりの時間が長くなりやすい。Playwrightのシャーディング機能のように、テストを分割して並行実行する工夫はあるが、数を増やせば待ち時間とコストも膨らむ。

 4つ目は、外部サービスやテストデータへの依存だ。決済や認証など外部のサービスが止まったり、前のテストが残したデータで状態が変わったりすると、アプリに問題がなくてもE2Eは失敗する。Playwrightは通信を差し替える「モック」機能を備え、外部の影響を切り離す手段を用意している。

 E2Eは、ユーザー視点で一連の動作を確かめる有力な方法の1つにすぎない。すべてをE2E化するのではなく、購入や申し込みなど止まると影響の大きいユーザーフローを選び、ほかのテストと組み合わせて守る。そのうえで、テストが本当に動いたかまで見届けることが、自動化を形骸化させない鍵となる。

Googleで見つけやすく

評価する

いいね!でぜひ著者を応援してください

  • 0

会員(無料)になると、いいね!でマイページに保存できます。

共有する

  • 0

  • 0

  • 0

  • 0

  • 0

関連タグ タグをフォローすると最新情報が表示されます
あなたの投稿

    PR

    PR

    PR

処理に失敗しました

投稿したコメントを
削除しますか?

あなたの投稿コメント編集

通報

このコメントについて、
問題の詳細をお知らせください。

ビジネス+ITルール違反についてはこちらをご覧ください。

通報

報告が完了しました

コメントを投稿することにより自身の基本情報が
本メディアサイトに公開されます

基本情報公開時のサンプル画像
報告が完了しました

「」さんのブロックを解除しますか?

ブロックを解除するとお互いにフォローすることができるようになります。

ブロック

さんはあなたをフォローしたりあなたのコメントにいいねできなくなります。また、さんからの通知は表示されなくなります。

さんをブロックしますか?

ブロック

ブロックが完了しました

ブロック解除

ブロック解除が完了しました

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

ユーザーをフォローすることにより自身の基本情報が
お相手に公開されます

基本情報公開時のサンプル画像