E2Eテスト いーつーいーてすと
E2EテストエンドツーエンドテストPlaywrightCypressブラウザ自動化ユーザーシナリオ
E2Eテストって何をテストするの?
簡単に言うとこんな感じ!
E2Eテストは「ユーザーが実際にやる操作を自動でシミュレートする」テストだよ!「ログインして→商品を選んで→カートに入れて→購入する」という一連の流れをブラウザで自動実行して、全部うまく動くか確認するんだ。最もリアルだけど遅くてコストが高い。
E2Eテストとは
E2Eテスト(End-to-End Test:エンドツーエンドテスト) とは、アプリケーションをユーザーの視点から最初(入力)から最後(結果)まで一気通貫でテストする手法です。
ブラウザを実際に操作するように自動実行し、ユーザーが実際に行う操作シナリオが期待通りに動くかを検証します。フロントエンド・バックエンド・DB・外部API全体が統合された状態でのテストです。
主なE2Eテストフレームワーク
| フレームワーク | 特徴 |
|---|---|
| Playwright | Microsoft開発。マルチブラウザ対応・速い |
| Cypress | デベロッパー体験が良い・デバッグしやすい |
| Selenium | 歴史的に最も普及。多言語対応 |
| Puppeteer | Headless Chrome専用。Google開発 |
E2Eテストの書き方例(Playwright)
import { test, expect } from '@playwright/test';
test('ユーザーがログインできる', async ({ page }) => {
await page.goto('/login');
await page.fill('[name=email]', 'user@example.com');
await page.fill('[name=password]', 'password123');
await page.click('[type=submit]');
await expect(page).toHaveURL('/dashboard');
});
E2Eテストの注意点
- 実行が遅い:ブラウザを起動するため1テストに数秒〜数十秒かかる
- 不安定になりやすい:タイミング依存のテスト(フレーキーテスト)が出やすい
- 少数のハッピーパスに絞る:全シナリオをE2Eで書くのは非現実的
歴史と背景
- Selenium(2004年):ブラウザ自動化の元祖
- Cypress(2014年)・Playwright(2020年):モダンなE2Eフレームワークの登場でDXが向上
- 現在:AI利用のテスト自動生成・自己修復テストが注目されている
関連用語
- 統合テスト — E2Eの手前の結合レベルのテスト
- ユニットテスト — テストピラミッドの基礎
- テストカバレッジ — E2Eでのカバレッジ
- CI/CDパイプライン — E2Eテストをパイプラインに組み込む
- ユーザー受入テスト — E2Eテストと重なる人手のテスト