SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

アプリケーション開発の最新トレンド

E2Eテスト自動化ツールの最新トレンド──Playwright? ノーコード? Seleniumから多極化の時代へ!

新トレンド1:Seleniumに代わるコード型ツールの台頭

 1つ目のトレンドは、Seleniumに代わる新しいコード型のブラウザテストツールの台頭です。

 Seleniumは多くのユーザーの支持を集めましたが、「インストール手順が複雑(現在は改善されています)」「コマンドが冗長」「テストに必要な機能が不十分で、他ツールとの組み合わせやユーザー側での作り込みが必要」など、テストに使う上での課題も残っていました。Seleniumは「汎用ブラウザ操作ライブラリ」かつ「Web標準規格」だったため、テスト特化の機能やWeb標準ではないものは採用できなかったことも、課題の解決を難しく(または遅く)していました。

 こうした状況を背景に、標準化にこだわらず、インストールがシンプルで、テストに役立つ様々な機能を搭載したブラウザテストツールが2018年前後から登場してきました。それが、JavaScriptベースのエンジンを使うことでシンプルさと利便性を実現した「Cypress」Chrome DevTools Protocol(CDP)を積極的に活用し高機能性を実現した「Puppeteer」テストを容易にする数々の便利な機能を盛り込みクロスブラウザテストにも対応した「Playwright」です。

 それぞれの概要・特徴を以下の表にまとめます。 表中の「対応デスクトップブラウザ」で()がついているものは、正式サポートされていない、または厳密にはサポートされていると言えないものです。詳細は各ツールの解説内に記載しています。

コード型ツール
Selenium Cypress Puppeteer Playwright
公開年(バージョン1) 2009年以前 2017年 2018年 2020年
対応デスクトップブラウザ Chrome Firefox Edge Safari Chrome Firefox Edge (Safari) Chrome (Firefox) (Edge) Chrome Firefox Edge (Safari)
テストフレームワーク同梱 x x
操作記録によるスクリプト生成

 JavaScript関連技術に関するアンケート調査「State of JavaScript 2022」のTestingの項目のアンケート結果によれば、2022年の時点でCypress、Puppeteerの利用率(Usage)はSeleniumと同じか上回っており、継続意向(Retention)はCypress、Puppeteer、PlaywrightともSeleniumを大きく上回っています。

Testingライブラリの利用率(Usage)ランキング
Testingライブラリの利用率(Usage)ランキング
Testingライブラリの継続意向(Retention)ランキング
Testingライブラリの継続意向(Retention)ランキング

 JavaScript開発者に対するアンケートなので偏りはあり、実際のところSeleniumは今でもブラウザテストの有力な選択肢ですが、Selenium一強では無くなってきていることがうかがえます。

 以下に各ツールの特徴を簡単にまとめました。検索エンジンを使えば様々な方の書いた比較記事が見つかりますので、興味を持った方はぜひ調べてみてください。使い勝手や利用者の評判など、多くのことがわかります。

Cypress

 Cypressは、Cypress社が主導して開発が進められているオープンソースのテストフレームワークで、一部の機能は有料です。

 最大の特徴は、他のツールのようにブラウザの外側から自動操作をするのではなく、Webページと同じコンテキストにJavaScriptロジックを挿入しそれを使って自動操作を行うことです。この仕組みによって、利便性の高い様々な機能を実現している一方、「複数タブ・ウィンドウにまたがるテストができない」「複数ドメインにまたがるテストができない」など、この仕組みゆえの制約もあります(実はSeleniumも初期のバージョンは同様の方式だったのですが、複数ドメインなどの問題を解決するために外側から操作する方式に変わった歴史があります)。

 また、Cypress AppのGUIからテストを実行すれば、「タイムトラベル」の機能を使ってテスト時のDOMの状況などを詳細に調べることができ、Cypress Cloud(旧Cypress Dashboard)を使えばテストの並列実行やテスト結果の詳細な統計情報も取得できます。Cypress Cloudは本格的に利用する場合は有料プランを検討した方がよいですが、Sorry CypressなどのOSSで代替することも可能です。

 Cypress Studioによる操作の自動記録とSafariテスト(WebKitで代用)はExperimentalで、まだ正式版ではありません。

Puppeteer

 Puppeteerは、Googleが主導して開発が進められているオープンソースのブラウザ操作自動化ツールです。当初はChromeでのみ利用可能で、Chromeでしか使えないChrome DevTools Protocolの機能を積極的に利用することで、全ブラウザにおける標準化を意識したSeleniumではサポートできなかった様々な機能を提供しました(現在はSeleniumでもBiDirectional APIで同様のことが可能)。

 FirefoxのサポートはExperimental、Edgeでも動作しましたが正式版ではないようです。ChromeのDevToolsの機能を使えばブラウザ操作の記録も可能ですが、生成されたスクリプトはあまり精度が高くなさそうでした。

Playwright

 Playwrightは、Microsoftが主導して開発が進められているオープンソースのテストフレームワークです。

 Puppeteerの初期の開発メンバーがその後Playwrightの開発チームに移り開発を進めていることもあって、Puppeteerから多くのコンセプトを引き継いでおり、Puppeteerよりも多くのブラウザをサポートしていることで魅力的な選択肢となっています。

 操作の自動記録はもちろんのこと、Auto Waiting・ビジュアルリグレッションテスト(画像差分比較テスト)・UIモードによる高度なデバッギング・Trace viewerなど機能も充実しており、さらに細かいコマンドも洗練&充実しています。

 SafariのテストはWebKitで代用する形です。

次のページ
新トレンド2:ノーコード型SaaSの登場

この記事は参考になりましたか?

アプリケーション開発の最新トレンド連載記事一覧

もっと読む

この記事の著者

伊藤 望(株式会社MagicPod)(イトウ ノゾミ)

 ノーコードテスト自動化プラットフォームを運営する株式会社MagicPodのCEO。 「日本Seleniumユーザーコミュニティ」設立、「Selenium実践入門」執筆、国際カンファレンス講演、「SeleniumConf」日本初開催など、長年テスト自動化の普及に努めてきた、日本におけるテスト自動化の...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/18289 2023/09/25 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー