BLOG.tass.io

SeleniumやAppiumと組み合わせる「Applitools Eyes」というサービスを使ってみたよ

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」です。

価格

無料ユーザ(無期限)

  • 週に25回までのデータ保存が可能。
    一日3回+αはテストケースを実行して、結果の保存ができる計算です。
  • 同時に実行可能なテスト数=1つ
  • データ保持期間=1ヶ月
    保存したスクリーンショットは1ヶ月は保存してくれます。合否が判断できたテストのスクリーンショットをもう要らない事が多いと思いますので、充分かなと思います。

PROユーザ

  • 1ユーザにつき、週に1,000回までのデータ保存が可能。
  • 同時に実行可能なテスト数=1ユーザにつき1つ
  • データ保持期間=1年
  • Eメールでのサポート
  • チームコラボレーション機能が利用可能

Enterpriseユーザ

開発元に直接ご相談くださいとのことです

チュートリアル

試しに、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さんです!どうぞ宜しくお願い致します!!!


Michael Kuroneko

Written by Michael Kuroneko. Follow me on twitter, github.