2014-12-06
この記事はSelenium/Appium Advent Calendar 2014の7日目の記事です。 Appiumについてだらっと記事を書こうと思っていたのですが、思いのほか他の人のレベルが高くて、震えが止まりません。。。
かといって高度なネタは到底書けないので、SeleniumとAppiumと組み合わせてスクリーンショットベースでのテスト管理サービス「Applitools Eyes」を使ってみた記事を書いてみます。
Applitools Eyes http://applitools.com/
Appiumでテストを書いている時に、あくまでスクリーンショットベースで合否を確認したいということはありませんか? どの要素が正しく表示されている/いないで判断できれば良いのですが、レイアウトの崩れなど、機械的に判断するのが難しいこともあると思います。
そこでテスト中にスクリーンショットを大量に取って確認することになりますが、実際画像を一枚一枚確認するのは大変です。 また、合否を判断するのが開発者/テスターではなく、プロダクト責任者やデザイナーなど、PCを扱うのが得意でない人にとっては、大量の画像ファイルを確認する自体が結構な重労働です。 そうして、テストの度に生成される大量の画像ファイルは、いつしかディスクの肥やしに…なんてことも(`;ω;´)
そこで、Selenium/Appiumを拡張するSDKを提供して、スクリーンショットベースでのテストケースを管理するサービスが「Applitools Eyes」です。
開発元に直接ご相談くださいとのことです
試しに、AppiumでiOSアプリをテストすることを想定して、Applitools EyesのSDKを組み込んで実行してみました。 基本的にチュートリアルの通りです(;^ω^)
まず最初に、Applitoolsの無料会員になって、API Keyを入手しておく必要があります。 メールアドレスとパスワードを登録してログインできるようになったら、「Test Result」からテスト管理用のダッシュボードを開きます。 画面右上のプロフィールから「My API Key」を選択すると、画面上にAPI Keyが表示されますので、コピペしておきます。
今回はRubyでテストコードを書いて試してみますので、事前に必要なgemをインストールしておきます。
Applitools EyesのSDKはgemに登録されていますので、gem install eyes_selenium
で一発でインストールできます(•̀ᴗ•́)و ̑̑
$ gem install selenium-webdriver
$ gem install eyes_selenium
ここで、テストコードを書いてみます。
appium_applitools_eyes_example.rb
というファイルを作って、チュートリアルをベースに下記のコードを書いてみました。
チュートリアルのコードではDeviceNameが抜けていて失敗したので、今回はiPhone Simulatarを指定して、Appiumのテストアプリを実行するようになっています。
7行目のeyes.api_key
でAPI Keyを入れてますので、自分の環境で試すときはここを先ほどコピーしたAPI Keyに書き換えてください。
では実際にAppiumサーバを立てて、テストを実行してみます!
$ appium &
$ ruby appium_applitools_eyes_example.rb
Appiumのテスト自体は、いつもどおりに実行が終わります。 テストが終わったら、Applitools Eyesのダッシュボードも戻ってみてください。 スクリーンショットが自動的に送信されて、テスト結果として登録されています!
テスト結果のスクリーンショットは、動画のように自動再生することもできますし、一枚ずつ確認することも出来ます。 それぞれのテストには「Accept(受け入れテストOK)」と「Reject(受け入れテストNG)」が選択できるようになっています。 例えば深夜にCIからテストを自動実行しておいてApplitools eyesに結果を送信しておいて、 次の日にデザイナーやプロダクトオーナーがダッシュボード上でざっとチェックして、受け入れテストの合否を判断して開発者にフィードバックするイメージです。
オープンソースでないのが残念ですが、無料でも一日3回はフルに実行して保存してもらえると思えば、面白いサービスではないでしょうか(´ェ`)
明日はokitanさんです!どうぞ宜しくお願い致します!!!