Espresso Driver を用いた Appium テストとその仕組み

024ce2681fa10ce9c1d8aa707d376d72?s=47 ksfee684
February 18, 2019

Espresso Driver を用いた Appium テストとその仕組み

024ce2681fa10ce9c1d8aa707d376d72?s=128

ksfee684

February 18, 2019
Tweet

Transcript

  1. Espresso Driver を用いた Appium テストとその仕組み 1 Cookpad.apk #2

  2. 自己紹介 •加藤 恭平 (ksfee684) ‣ 技術部品質向上グループ ‣ レシピサービスの Android 


    アプリで UI テストなどを担当  ‣ おすすめは M:tG
  3. アジェンダ •Appium in Android における仕組み ‣ UIAutomator 概要 ‣ UIAutomator

    Driver •Espresso Driver 紹介 ‣ UIAutomator との比較 ‣ 実際どうなのか •おまけ ‣ Project Nitrogen !3 3
  4. Appium

  5. Appium •モバイル端末向け自動テスト ツール ‣HTTP Server (Node) ‣Android, iOS, Windows, macOS

  6. UIAutomator •UI テスティングフレームワーク ‣ Accessibility Service を利用 ‣ アプリを越えて端末操作や情報取得が可能 ‣

    e.g. UI Automator Viewer 6
  7. None
  8. UIAutomator × Appium •UIAutomator Driver として存在 •現在 Android のデフォルト Driver

    !8 8
  9. ςετର৅BQL 6*"VUPNBUPS4FSWFSBQL "OESPJE5FTUBQL UIAutomator Driver

  10. UIAutomator Driver 6*"VUPNBUPS4FSWFS XEIVC TFTTJPOTFTTJPO@JE TUBUVT ESJWFSTBWF@TDSFFOTIPU 3VCZ 10 6J"VUPNBUJPOUBLF4DSFFOTIPU

    "QQJVN4FSWFS XEIVC TFTTJPOTFTTJPO@JE TUBUVT
  11. UIAutomator × Appium •Pros ‣ 自身のアプリに限らず操作を行う事が可能 • ブラックボックスな自動UIテストを組むことが可能 • テキストを利用した操作から

    Resource ID まで •Cons ‣ テスト対象のアプリの操作が難しい • ネットワーク通信待ち合わせのためスリープ !11 11
  12. Espresso Driver

  13. UIAutomator Driver 6*"VUPNBUPS4FSWFS XEIVC TFTTJPOTFTTJPO@JE TUBUVT ESJWFSTBWF@TDSFFOTIPU 3VCZ 13 6J"VUPNBUJPOUBLF4DSFFOTIPU

    "QQJVN4FSWFS XEIVC TFTTJPOTFTTJPO@JE TUBUVT
  14. &TQSFTTP4FSWFS ESJWFSTBWF@TDSFFOTIPU 3VCZ XEIVC TFTTJPOTFTTJPO@JE TUBUVT Espresso Driver XEIVC TFTTJPOTFTTJPO@JE

    TUBUVT
  15. Espresso Driver •appium-espresso-driver ‣ Espresso を Driver として利用 ‣ 対象アプリの署名を書き換え

  16. Espresso × Appium •Pros ‣ アプリの Context にアクセス可能に ‣ IdlingResource

    によってスリープによる待ち合わせが不要 ‣ UIAutomator と同様にブラックボックスに記述できる! •Cons ‣ Espresso ができること以外はできない ‣ Debug ビルドのみ対応 16
  17. 実際どうなのか •実際に Driver を置き換えることでどうなるのか ‣ 不必要なスリープの減少 • シナリオ簡潔さ向上 ‣ 既存の

    View 探索以外の手法 ‣ Driver の指定を変更するだけで便利 17
  18. Appium Ruby Client •Capability の automationName を切り替えるだけ? •appium_lib では Espresso

    Driver への切り替えが シュッとできない •appium_lib_core を直接利用
  19. まとめ •appium-espresso-driver はいいぞ ‣ 互換性もだいたいあるぞ •UIAutomator から抜け出してシナリオ洗練させていくぞ 19

  20. Project Nitrogen

  21. Project Nitrogen •Write once, run everywhere

  22. None
  23. Espresso(Robolectric) Driver •Robolectric (JVM) 上で実行 •Capability によって切替可能に •対象アプリの実装が必要となるので、
 既存アプリのテストケースとしてサーバを実装

  24. Espresso(Robolectric) Driver •シュッとできなかった ‣ JUnit の別スレッドで Robolectric が動かない
 https://github.com/robolectric/robolectric/issues/ 3829