まだE2Eテストツールを使用した経験はそんなに長くはないのですが、
TestCafeとSeleniumWebdriverで同じテストを実装する機会があったので、
それぞれの長所と短所を簡単に挙げてみようと思います。
どんなツールがいいんだろう?という方に、選択の参考にしていただけると幸いです。
#TestCafe
TestCafe
TestCafe Studio
まずはこちら、TestCafe
今、私の中で最もホットなツールです。
クロスブラウザ対応なのにWebdriverが不要という優れものです。
まだ出回っている情報は少ないですが、APIの説明は公式ページに書いてあるのでなんとかなります。
ちゃんとCIでも動作しますし、メジャーなCIなら公式ページに連携する手順が書いてあるので、
参考になると思います。
waitがデフォルトで設定されているので、あまりに読み込みに時間がかかるものでなければ、
基本的にはタイマーなんかは考慮しなくてもサクサク動作してくれます。
###[長所]
・セットアップが楽ちん。
→node.jsがあれば、インストールするだけです。
・TestCafe Studioがあると尚便利。
→エディタ機能やレポート機能、レコード機能を備えた優秀なツールですね。
TestCafeStudioがあれば、node.jsをわざわざ準備する必要もありません。
私の場合は、自分のPCで作成したコードをTestCafeStudioで動かし、問題なければCIから起動するようにしています。
・デフォルトでwaitが考慮されており、自分で時間を変更できる。
→Seleniumと比較する際に一番大きな利点となるのは、ここでしょうか。
###[短所]
・情報が少ない
→ネットで検索してもセットアップ方法と、チュートリアル的なコードしかヒットしませんでした。
一応、公式の方でAPIの使い方とか書いてあるのでそこで確認して試しながら地道に理解していくのが(私の)現状です。
・毎回ログインからスタートする必要がある
→テストクラス毎にブラウザを起動するところから処理が始まるので、
SNSやECサイトみたいなログイン処理が必要なものについては、
毎回ログインして画面遷移していく必要があります。
・分岐やループなどの処理が組み込みづらい。
→正直まだよくわかっていません。
分岐先で異なる処理を組み込んだりしたいのですが。
#Selenium Webdriver
Selenium
続いてはこちら、AKA.自動テスト
昨今のE2Eツールの中でトップシェアと思われる、Selenium Webdriver
中にはE2Eツールはこれしか知らないと思っている人もチラホラ。
私はRubyでしか扱った事がないので、Rubyでの使用感についてになります。
###[長所]
・情報が多い
→TestCafeに比べると圧倒的な情報量を誇ります。いろんな人が記事を書いてくれていますね。
私もよく参考にさせていただきました。
・使いこなせればそれこそ自由自在に操作できるようになる(はず)
→短所の欄に記載しますが、wait処理を自動でいれてくれる機能はないので、自分で作らなければいけません。
そういった点で、使いこなせれば痒い所にもいずれは手が届きそうな印象です。
※私はまだまだ未熟なので、いたるところが痒いですが。
・対話式で動かせるのが便利
→これはRubyだけなのか?はわかりませんんが、irbで起動すれば対話式で操作できるので、
要素の指定に誤りがないかなどの確認がしやすいです。
###[短所]
・互換性問題
→SeleniumWebdriverを動かすには、SeleniumWebdriver(言語別)、対象言語の開発環境(私ならRuby)、
各ブラウザのWebdriverが必要になります。
そして、各ブラウザのWebdriverはそれぞれのブラウザベンダーが実装しているようです。
つまり、同じコードで全てのブラウザを動かせるかというと、そうではありません。
クロスブラウザテストを実装する際には、苦戦させられるポイントだと思います。
・あくまでスクレイピングツール
→これが1番のハマりどころではないでしょうか?
画面の更新、画面遷移、モーダルやポップアップの起動など、全てが一瞬で表示されるわけではありません。
むしろほとんどが多少の読み込み時間を要すると思います。
要素をクリックしてモーダルが起動するまでに1秒のラグがあるそんな時、
SeleniumWebdriverはモーダルが起動する前に要素を探し、見つからないとエラーを吐いて終了します。
特に初めて触り始めた頃は、この動作に散々苦しめられました。
・みやすいコードにするには目の色を変えてモジュールを作る必要がある。
→私の場合ですが、例えば要素をクリックする際、必ずwaitを入れるのでモジュールに合わせたものを作っておきます。
そもそも私のセンスがイケてないのかもしれませんが。
#個人的には
上記はどちらもクロスブラウザ対応ですが、準備の手間やコードの書きやすさ、見やすさ、それらの点で
TestCafeを優先して使用しています。
ちなみにどちらもCIと絡めることも可能です。
ただ、TestCafeにしてもSeleniumWebdriverにしても私はまだまだ未熟なので、その他のツールも含めて、
もっと知識をつけ、適宜適切な判断を出来るようにしていきたいですね。