SauceLabsの紹介

Webの自動テストでSeleniumは便利ですが、Seleniumを実施する時に困るのはサーバーを用意する所だったりします。
普段はローカルでSeleniumStandaloneを立てて、MacならFireFoxを入れて実施したり、chrome-driverを使ったり、IEの為にVMを立てたり…と環境周りの準備が面倒。かつ、ブラウザが立ち上がった時にフォーカスを奪われたりしてストレスに…。

CIサーバーをCloudBeesに置いている弊社ではローカルのSeleniumサーバーを使うのは少し面倒…そんな時に役に立つのが SauceLabs です。



SauceLabs

今回はSauceLabsの機能を紹介します。
弊社での問題を解決するために使っているサービスはSauceLabsで、簡単に言ってしまうと Seleniumのクラウドサービスです。

ただのクラウドサービスではなく差別化として、以下の点が挙げられます。

多数の対応ブラウザバージョン


使い始めたのは8ヶ月くらい前になりますが、その時70パターンくらいだったと記憶しています。IEのバージョンが増えたり、OSが増えたり、モバイルが増えたりとしていくうちに113になってました。
今後も増えていくと予想されますし、過去のブラウザ環境を用意するのが難しかったりするのでそういう点でも便利です。

JUnitで実施する際は、@Parameterizedを使って、Capabilitiesを用意しておくと複数ブラウザの対応がより楽になります。



弊社のホームページを開いて、NowHiringに設定されている属性が正しいかを確認しています。

実行するとこのような形でブラウザ毎にテストが実行されます。

実行結果を公開する事も可能です。参考までにこれはiPadでの実行結果です。
https://saucelabs.com/tests/9a8eb9fbd02a4c3ca2344eafd27a460a

動画・静画で振り返り

「Seleniumの実行結果を見てみたら失敗してた…」という時に何が失敗だったのかassertならまだしも、予期していない所で落ちてると…
  • 再度流し直してどこで落ちるのか確認する
  • 手動でシナリオを実行して内容を確認
  • エスパーで解決
といった事が必要になったりします。
SauceLabsでは実行結果が最初から最後まで動画で保存されている、かつ要所ではscreenshotの保存もされているので、何が起きているのか結果から見つけられる可能性があります。テストの実施結果もSeleniumの操作毎に記録されているので何を行った時に失敗したかを追いやすくなっています。

マニュアルモード

実機で用意できない特異な環境を手軽に試せる環境としても SauceLabs を利用できます。Seleniumから接続しなくても各環境を試せるマニュアルモードが用意されている為、MacでIEを、WindowsではSafariを、PCでモバイルをと言った環境を気軽に試すことができます。マニュアルモードも録画されている為、実行結果を共有するのに役立ちます。
先日「SauceLabs on Mac」がリリースされました。SauceLabsのマニュアルモードをブラウザ上で動かすか、ローカルアプリとして動かすかの差ですが、そちらも使ってみると面白いかもしれません。

SauceConnect

実際のプロダクトをインターネット上に公開出来ない事情は多々あると思います。クラウド側からSeleniumがどのように接続するのかという問題が発生します。そこでSauceConnectが使えます。
SauceConnectはSauceLabsのトンネリングを行うツールです。
あたかもローカルでSauceLabsが動いているように動作させることが出来るため、http://localhost:8000/ のようなURLでもSauceLabsでテストする事ができます。


で起動して「Successful handshake with Sauce Connect server」のようなメッセージが表示されれば成功です。SauceConnect経由でテストを行いたい場合は、SeleniumサーバーのURLをローカル(ポートは4445)とSauceLabsにつなぐ時と同じようにBasic認証のURLで接続します

例:http://USER_NAME:ACCESS_KEY@localhost:4445/wd/hub

勘の良い方は気付いたかもしれないですが、実行結果はlocalhostのサーバーにアクセスしてるのがわかると思います。

CloudBeesとSauceLabs

こんな便利なSauceLabsですが、CloudBeesのサービスとして使えるようになっています。実質SauceLabsはCIで使う事が主としたサービスですので、一緒に使う事を是非お勧めします。







Leave a Reply

Popular Posts