LoginSignup
78
60

More than 3 years have passed since last update.

E2E テスト自動化ツールをざっと調べたまとめ

Last updated at Posted at 2019-04-29

E2E テストの自動化に挑戦するためにツールを調べた結果をまとめました。

「Selenium、Puppeteer くらいは聞いたことがあるけど、他にも良さそうなものがないか調べておこう」という軽い気持ちで調べ始めたところ、想像していた以上に色々ありました。。。

※ Web フロントエンドの E2E テストが主な対象です。それ以外は、調べて出てきたことだけまとめています。モバイルは調査対象外です

※ E2E テストに詳しくなく、いろいろ間違いがあるかもしれません。お気付きの方はご指摘お願いします。

ざっくりググると ...

Selenium, Geb, Concordion, WebdriverIO, Nightwatch.js, Testium, Protractor, Puppeteer, jsdom, Nightmare ,Cypress.io, TestCafe, Intern, Postman, Karate, Pact, Ghost Inspector, etc ...

と、とにかくたくさん出てきました。

分類してみた

何がなんだか全然分からないので、まずは頑張って分類してみました。
ブラウザ自動化ツール カオスマップ風 - STAC2018 LT」というスライドを参考にしつつ、独自に分類しています。

  • Web フロントエンドの E2E テスト系
    • WebDriver 系
      • Selenium (Geb, Selenium WebDriver with Concordion), WebdriverIO, Nightwatch.js, Testium, Protractor
    • (ヘッドレス) ブラウザ自動化系
      • Puppeteer, jsdom, Nightmare
    • (ヘッドレス) ブラウザ自動化 + テスト系
      • Cypress.io, TestCafe, Intern
    • Chrome 拡張
      • Ghost Inspector
  • API テスト系
    • Postman, Karate, Pact

上記の「Web フロントエンドの E2E テスト系」のうち、代表的 (と思われる) ものだけざっくり紹介していきます。

WebDriver 系

Selenium

E2E テストでもっとも有名なのは Selenium だと思います。
ただ、最近はフロントエンドの非同期処理や SPA には強くないらしく、Selenium から他のツールに乗り換える話が結構あるようです。

Selenium WebDriver with Concordion

Concordion は『リーン開発の現場 カンバンによる大規模プロジェクトの運営』に書かれていたため調べてみましたが、そもそも GUI のテストツールではなく仕様整理の補助ツールのような位置付けのようでした。
ただし、FAQ によると Selenium と連携すれば E2E テストも可能なようです。

(ヘッドレス) ブラウザ自動化系

Puppeteer

Puppeteer も E2E テストのツールとしてかなり有名だと思います。
ヘッドレスで Chrome や Chromium を操作でき、画面キャプチャも簡単に取得できるようです。

参考: https://developers.google.com/web/tools/puppeteer/

(ヘッドレス) ブラウザ自動化 + テスト

Puppeteer のようなブラウザ自動化系のツールで E2E テストを行うには、Jest、Mocha、AVA といったテストツールも導入することになります。
一方で、別途テストツールを導入する必要がないものあり、その一例が Cypress.io です。

Cypress.io

調査前は Puppeteer を使っておけば大丈夫かなと思っていましたが、「E2EテストをSelenium Webdriver からCypress.io に移行した話」や、「Cypress: The future of end-to-end testing for web applications」といった、Cypress.io を押す記事も結構ありました。

また、「cypressを触ってみた」という記事によると

しかし、このcypressのすごいところは、操作のたびに(xhrリクエストがあるたびに)DOMのスナップショットをとってくれているということです。

とのことです。これはすごすぎる。。

Chrome 拡張

Ghost Inspector

Ghost Inspectorを使ってコードを書かずにE2Eテストを自動化する」の通り、Ghost Inspector は、コードを書かずにテストできるようです。

Chrome 拡張だと CI で使えないのでは ... ? と思いましたが、「Ghost Inspector を使って E2E テストしてみる」によれば CI でも使えるようです。

感想

Puppeteer でいいんじゃないかと思っていましたが、調べた結果、Cypress.io に魅力を感じました。
操作のたびにスナップショットをとってくれるのは衝撃です。まずはさわってみようと思います。

78
60
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
78
60