スポンサーリンク

E2Eテストとは?単体テスト・結合テストとの違い

この記事は「Reqnroll × Playwrightで始めるE2Eテスト入門」シリーズの一部です。

E2Eテストとは?単体テスト・結合テストとの違い

ソフトウェア開発では、品質を保つためにさまざまな種類のテストが行われます。
その中でも E2Eテスト(End to Endテスト) は、システム全体の動作を確認するための重要なテストです。

本記事では次の内容を解説します。

  • E2Eテストとは何か
  • 単体テスト・結合テストとの違い
  • E2Eテストの具体例
  • E2Eテストのメリットとデメリット

これから 自動テストやE2Eテストを導入する方は参考にしてください。

E2Eテストとは

E2Eテストとは End to End(エンドツーエンド)テストの略で、
システム全体の動作を確認するテストです。

ユーザーが実際に操作する流れを再現し、アプリケーションが正しく動作するか確認します。

例えばWebアプリの場合、次のような流れをテストします。

  1. ログインページを開く
  2. IDとパスワードを入力する
  3. ログインボタンをクリックする
  4. マイページが表示される

このように ユーザー操作を最初から最後まで確認するテストがE2Eテストです。

テストの種類

ソフトウェア開発では、主に次の3種類のテストが行われます。

テスト種類テスト対象
単体テストクラス・メソッドなどの小さな単位
結合テスト複数のモジュールの連携
E2Eテストシステム全体

それぞれのテストには役割があります。

単体テストとは

単体テスト(Unit Test)は、最も小さな単位のテストです。

例えば次のようなものです。

  • クラス
  • メソッド
  • 関数

価格計算メソッド
↓
入力:100円
↓
出力:税込110円

このように 1つの処理が正しく動くかを確認するのが単体テストです。

単体テストの特徴

  • 実行が高速
  • 問題箇所を特定しやすい
  • 開発中に頻繁に実行できる

結合テストとは

結合テスト(Integration Test)は、複数のモジュールが連携して動作するか確認するテストです。

例えば次のようなケースです。

Controller
↓
Service
↓
Repository
↓
Database

これらが連携して正しく動作するかを確認します。

結合テストでは次のような内容をテストします。

  • APIの動作
  • データベースとの連携
  • 複数クラスの処理

E2Eテストの特徴

E2Eテストは、システム全体の動作を確認するテストです。

例えばWebアプリでは次のような操作を自動化します。

ブラウザを開く
↓
ページを表示
↓
ボタンをクリック
↓
フォーム入力
↓
画面遷移

このように ユーザーが実際に行う操作を再現するテストです。

単体テスト・結合テスト・E2Eテストの違い

3つのテストの違いをまとめると次のようになります。

テスト対象特徴
単体テストメソッド・クラス最も小さい単位
結合テスト複数モジュール連携を確認
E2Eテストシステム全体ユーザー操作を再現

テスト範囲のイメージ

単体テスト
   ↓
結合テスト
   ↓
E2Eテスト

下に行くほど テスト範囲が広くなります。

E2Eテストのメリット

E2Eテストには次のメリットがあります。

実際のユーザー操作を確認できる

E2Eテストでは、実際のユーザー操作に近い形でテストできます。

そのため 実運用に近い問題を発見できる可能性があります。

システム全体の問題を発見できる

単体テストや結合テストでは見つからない

  • 画面遷移の問題
  • UIの問題
  • API連携の問題

などを検出できます。

E2Eテストのデメリット

E2Eテストにはデメリットもあります。

テスト実行に時間がかかる

E2Eテストはブラウザ操作などを行うため、
単体テストに比べて実行時間が長くなります。

テストが壊れやすい

UIの変更などにより、E2Eテストが失敗することがあります。

例えば

  • ボタンID変更
  • HTML構造変更

などです。

そのため メンテナンスが必要になることがあります。

E2Eテストの自動化ツール

E2Eテストは、ツールを使って自動化することができます。

代表的なツール

  • Playwright
  • Selenium
  • Cypress

特に最近は Playwright が人気です。

Playwrightについては、以下の記事で詳しく解説しています。

Playwrightとは?Seleniumとの違いをわかりやすく解説

Reqnrollと組み合わせたE2Eテスト

E2Eテストは BDDツールと組み合わせることも可能です。

例えば Reqnroll を使うと、
自然言語に近い形でテストを書くことができます。

Feature: Login

Scenario: ログイン成功
  Given ログインページを開く
  When IDとパスワードを入力
  Then マイページが表示される

Reqnrollについては、こちらの記事で解説しています。

Reqnrollとは?SpecFlowとの違いと特徴を解説

まとめ

本記事では E2Eテストと他のテストの違いについて解説しました。

ポイント

  • E2Eテストはシステム全体をテストする
  • 単体テストはメソッド単位のテスト
  • 結合テストはモジュール連携のテスト
  • E2Eテストはユーザー操作を再現する

E2Eテストを導入することで、より実運用に近い形でシステムの品質を確認することができます。

.NET
スポンサーリンク
シェアする
trelab