イベントレポート '25/2月開催 とことんDevOps勉強会「E2Eテスト自動化入門」
今回のとことんDevOps勉強会は「今E2Eテスト自動化入門」と題して、日本仮想化技術の石本が講師として登壇しました。
E2E(End-to-End)テストとは、ソフトウェアやシステム全体のフローを検証し、エンドユーザーが期待通りに操作できるかを確認するテスト手法です。システム開発に関わる方にとって、テストは避けて通れないプロセスの一つです。テストには単体テストや結合テスト、UIテストなどさまざまな種類がありますが、今回は UIテスト をテーマに勉強会を開催しました。
勉強会では、実際にデモを交えながら説明を行いました。これからE2Eテストを始めたい方や、基本を学びたい方にとって役立つ内容となっています。見逃した方は、アーカイブ動画や発表資料も公開しておりますので、ぜひご覧ください。
セミナー動画
発表資料
Q&Aまとめ
E2Eテストの導入タイミングと最適な開始時期
質問
E2E(End-to-End)テストは、開発プロジェクトの進行状況や目的に応じて適切なタイミングで導入することが重要です。一般的には、以下のようなタイミングで取り組むのが望ましいです。
回答
E2Eテストを始めるタイミングは、基本的な機能ができて仕様変更が落ち着いた頃がちょうどいいです。開発の初期から無理にやろうとすると、変更が多くてメンテナンスが大変になりがちなので、安定してからのほうがスムーズです。
また、CI/CDを導入するタイミングで一緒に組み込むのもおすすめ。自動テストがあると、リリース前のチェックが楽になって安心してデプロイできます。手動での確認が増えてきて「そろそろ大変だな」と感じたら、自動化を考えるタイミングかもしれません。特に、ログインや決済などユーザーにとって重要なフローが固まったら、E2Eテストを作ることでミスを減らし、品質をキープできます。
PlaywrightとSeleniumの違いは?どこが良くなったの?
質問
Playwrightは、Seliniumに比べて、どのように良くなったのでしょうか?
回答
PlaywrightはSeleniumと比べて、ページの読み込みを待つ処理が自動で行われるので、テストの安定性が高く、タイミング調整に悩まされることが少なくなりました。また、複数のブラウザを簡単に切り替えてテストできるのも便利なポイントです。
さらに、ネットワークのリクエストを操作したり、シングルページアプリケーション(SPA)にも強い設計になっているため、最新のWebアプリとの相性がいいと言われています。
Playwrightとノーコード・ローコードツールの違いは?
質問
AutifyやMagicPodと言ったノーコード、ローコードと比較した場合に、Playwrightとの位置づけの違いは、「コーディングが必要だけど、細かい制御ができる」と言う認識で合っているでしょうか?
回答
はい、その認識でほぼ合っています!Playwrightはコードを書く必要がありますが、その分、細かい制御ができて自由度が高いのが特徴です。特に、複雑なテストシナリオやカスタマイズが必要な場合には強みを発揮します。
一方で、AutifyやMagicPodのようなノーコード・ローコードのツールは、プログラミングの知識がなくても使える手軽さが魅力です。UI操作でテストを作成できるため、エンジニアでなくてもテストを実施でき、導入のハードルが低いのがメリットです。ただし、細かい制御が難しく、特殊な動作や複雑な分岐がある場合には対応しづらいこともあります。
つまり、手軽さを重視するならノーコード・ローコードツール、細かい制御やカスタマイズ性を求めるならPlaywrightという位置づけになります。チームのスキルセットやテストの目的に応じて、どちらを選ぶか決めるのが良さそうですね。
E2Eテストは専門の担当者が書くべき?それとも分担すべき?
質問
E2Eテストは誰かが専門に書くべきなのか、みんなで分担すべきなのか悩みます
回答
E2Eテストを誰が書くかは、チームの体制や開発の進め方によって変わります。専門の担当者がいるとテストの品質が安定しやすく、メンテナンスもしやすいですが、その人に依存しすぎると属人化のリスクがあります。
一方で、チーム全体で分担すれば負担が分散され、テストの知識が広まるので、誰でも対応しやすくなるメリットがあります。ただし、テストの設計やルールを統一しないと、バラバラなコードになり、かえって管理が大変になることも。
理想的なのは、基本的なルールを決めた上で、みんなで協力しながら進めることです。テストの設計や戦略を専門の担当者がリードしつつ、開発者も自分が担当した機能のテストを書くようにすると、バランスよく運用できると思います。
AIでテストを自動生成できる?
質問
AIでテストを生成したりできますか?
回答
はい、最近はAIを使ってE2Eテストを自動生成することも可能になっています!例えば、AutifyやMagicPodのようなノーコードツールはAIを活用してテストシナリオを自動で作成・修正してくれますし、GitHub CopilotのようなAIコード補助ツールを使えば、PlaywrightやSeleniumのテストコードを効率よく書くこともできます。
ただし、完全に自動で正確なテストを作るのはまだ難しく、最終的には人のチェックや調整が必要になります。AIを活用しながら、必要な部分は手動で補いテストコードを作成していくやり方も珍しくはなくなりそうですね。
E2Eテストのデータ管理、どうするのがベスト?
質問
E2Eテストはどういうタイミングで行うのが適していますか。リリース前や、大きな機能追加などを行った時か、頻繁にやるべきか
コンテナアプリのテストの質問をしたものです。開発環境のDB等にデータを毎回作るのに時間がかかることが多く、E2Eテスト用のデータをE2Eテスト用のDBに入れてテストしたいです。本番環境DBはコンテナではないです。固定のテスト用の環境を立てていると課金されるので、E2Eテストを実施する時だけ、環境を作りたいと考えています
回答
E2Eテストでは、毎回データを準備するのに時間がかかることが多いですが、テスト用のDBを用意して効率的に管理することで、開発環境の負担を減らせます。
テスト時だけ環境を作る場合、テスト用のDBコンテナを起動し、テストデータを投入する方法が有効です。例えば、Docker Composeを使って、Playwright・アプリケーションサーバ・テスト用DBを一時的に立ち上げ、テスト完了後に環境を削除すれば、コストを抑えつつ運用できます。
また、データの準備時間を短縮するために、あらかじめスナップショットを作成しておき、テスト前にリストアする方法や、最低限のデータ投入スクリプトを用意する方法も有効かもしれませんね。