E2Eテストとは
「E2E」は「エンドツーエンド」の略で、その名の通り、システムをユーザー視点で、「端から端まで」テストします。
ユーザーが行いうる操作のシナリオに沿って、ユーザー視点でプロダクトをシミュレーションするのが特徴です。アプリケーションの各コンポーネント(フロントエンド、バックエンド、DBなど)が統合した状態でテストを行うことによって、ユーザーの手元に届くプロダクトの挙動を把握することができるため、非常に信頼性の高いテスト手法です。
多くの場合、テスト自体を自動化して行うことが多いですが、人が手動でテストをすることもあります。手動でテストするのは手間がかかるので、自動化した方がコストが低いように思えますが、システムが複雑化するほど、メンテナンスにコストがかかるため、適切な範囲で実施することが重要です。
E2E以外の「テスト」
ソフトウェアプロダクトのテストには、E2Eの他にも様々な種類があります。ここでは、その概要を確認します。
- ユニットテスト
ユニットテストは、テストの最小単位で、個々のコードの正しさをテストします。
- インテグレーションテスト
複数のユニットが連携する部分のテストです。このテストによって、コンポーネント間の相互作用を確認します。
- システムテスト
システム全体のテストです。E2Eテストと似ているように感じますが、システムテストは、技術仕様書や設計書に基づいて行われ、機能要件と非機能要件の双方をテストします。
- 受け入れテスト
プロダクトの発注者によるテストです。ここでは、ビジネス要件や契約条件を満たしているかどうかを、プロダクトを導入する側がテストします。受け入れテストも、E2Eと似ているような気がしますが、E2Eは開発者もユーザーもテストを実施する可能性があるのに対し、受け入れテストは、実際のユーザー、つまり発注者によるテストであるという点が、大きな違いです。
Playwrightとは
私が関わっているプロダクトではPlaywrightを利用しています。
Playwrightとは、Microsoftが開発した、E2Eテストを自動で行うためのオープンソースのライブラリです。
“Any browser • Any platform • One API” つまり「あらゆるブラウザ、あらゆるプラットフォーム、1つのAPI」というキャッチコピーを掲げており、複数のブラウザやプラットフォームにおけるE2Eテストを、Playwright1つで行うことができます。具体的には、以下のブラウザ・プラットフォームに対応しています。
- ブラウザ
- Chromium
- WebKit
- Firefox
- プラットフォーム
- Windows
- Linux
- macOS
また、ローカルでもCIでもテスト可能で、ブラウザはヘッドレスでもヘッド付きでもテスト可能です。
また、API対応言語は以下の通りです。
- TypeScript
- JavaScript
- Python
- .NET
- Java
E2Eテストを行うためのツールには、Playwrightの他にも、Selenium・Puppeteer・Cypressなどがあります。