こんにちは、ナイトレイインターン生の保科です。
Wantedlyをご覧の方に、ナイトレイのエンジニアがどのようなことをしているか知っていただきたく、Qiitaに公開している記事をストーリーに載せています。
今回はエンジニアの船津さんの記事です。
少しでも私たちに興味を持ってくれた方は下に表示される募集記事もご覧ください↓↓
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などがあります。