第2回Selenium勉強会に参加してきました④「クックパッドアプリの開発を支援するAppiumの話」

スライド

20141018 selenium appium_cookpad

発表者

  • 松尾和昭さん
  • クックパッド株式会社
  • テストエンジニア

会場アンケート

参加者の構成について

  • テストエンジニア…少数
  • 開発者…多数
  • マネージャ…なし(?)

Appiumを知っている人?

半数強が知っていた

経緯

  • Appiumに関するブログ記事を書いたら、声をかけられた


iOSアプリデザインリニューアルの舞台裏の舞台裏 - クックパッド開発者ブログ

Appiumとは


appium/appium · GitHub

アプリをテストするということ

  • アプリではMVCモデルが採用しづらい

今まで

  • 描画テストをする場合、SDK+専用ビルドが必要だった
    • リリースビルドと別物

Appniumを導入すると

  • リリースビルドでテストが可能に

Appiumは色々な言語に対応

  • Appniumは様々な言語でのビルドをスマートフォンに適した形でアプリを操作するだけ
  • クックパッドではRuby + RSpec + Turnupで実際に行っている

Appiumの良い点

  • リリースビルドのテストが可能
  • 多彩なツールとの組み合わせが可能
    • Appniumはあくまでもアプリ操作部分のみ
  • 黒魔術を使う必要がない
    • OSの追従もしやすい

Appiumの良くない点

  • 実例が少ない
  • テスト実行に時間がかかる
  • 環境構築が手間
    • 社内に広めにくい

Appiumの活用事例

  • iOSアプリで実施中
    • UI修正も頻繁
  • テストレベルはモバイル部分のみ
  • 以下の段階全ての工程で利用中
    • 企画段階(master branch)
    • 開発段階(master branch)
    • 検証段階(release branch)

テストケース

  • 以下の2つに絞って実施中
    • 画面遷移の部分
    • レイアウト崩れのチェック
  • 100テストケース/1capability
  • 1capabilityあたりにかかるテスト時間は1時間

工夫した点

変化に追従できるように責務を分離した

  • シナリオ部分…シナリオ自体の変更のみ
  • 実装部分…Appniumの実装変更に対応
  • Appnium部分…iOS対応などの変更に対応

Appniumに任せるべきところ

  • 機械が実行可能な部分
    • タップなど
  • 人が忘れがちなシナリオ部分

シナリオの統合や作り替え

  • 状態依存は行わせない
  • 複数の操作を1つのシナリオで内包できるものは内包してテストケース削減
  • 他の手段が見つかったシナリオは削除、もしくは操作を限定

成果

  • 検証期間中のタスク内容の変化
  • 致命的な不具合の検出
  • リリースされた後に、クラッシュを検知する頻度が減少した

これからの課題

  • iOS8対応
  • 他のアプリへの展開

Q&A

テスト環境は実機?シミュレータ?

  • シミュレータ。実機にしない理由は面倒だから。

ロケーターはどのように取得している?

  • findはXPathごしなので、完全一致では使わないようにしている