$30 off During Our Annual Pro Sale. View Details »

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

Kyohei Kato
February 18, 2019

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

Kyohei Kato

February 18, 2019
Tweet

More Decks by Kyohei Kato

Other Decks in Technology

Transcript

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

    View Slide

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

    アプリで UI テストなどを担当 
    ‣ おすすめは M:tG

    View Slide

  3. アジェンダ
    •Appium in Android における仕組み
    ‣ UIAutomator 概要
    ‣ UIAutomator Driver
    •Espresso Driver 紹介
    ‣ UIAutomator との比較
    ‣ 実際どうなのか
    •おまけ
    ‣ Project Nitrogen
    !3
    3

    View Slide

  4. Appium

    View Slide

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

    View Slide

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

    View Slide

  7. View Slide

  8. UIAutomator × Appium
    •UIAutomator Driver として存在
    •現在 Android のデフォルト Driver
    !8
    8

    View Slide

  9. ςετର৅BQL
    6*"VUPNBUPS4FSWFSBQL
    "OESPJE5FTUBQL

    UIAutomator Driver

    View Slide

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

    10
    6J"VUPNBUJPOUBLF4DSFFOTIPU

    "QQJVN4FSWFS
    XEIVC
    TFTTJPOTFTTJPO@JE
    TUBUVT

    View Slide

  11. UIAutomator × Appium
    •Pros
    ‣ 自身のアプリに限らず操作を行う事が可能
    • ブラックボックスな自動UIテストを組むことが可能
    • テキストを利用した操作から Resource ID まで
    •Cons
    ‣ テスト対象のアプリの操作が難しい
    • ネットワーク通信待ち合わせのためスリープ
    !11
    11

    View Slide

  12. Espresso Driver

    View Slide

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

    13
    6J"VUPNBUJPOUBLF4DSFFOTIPU

    "QQJVN4FSWFS
    XEIVC
    TFTTJPOTFTTJPO@JE
    TUBUVT

    View Slide

  14. &TQSFTTP4FSWFS
    ESJWFSTBWF@TDSFFOTIPU
    3VCZ

    XEIVC
    TFTTJPOTFTTJPO@JE
    TUBUVT
    Espresso Driver
    XEIVC
    TFTTJPOTFTTJPO@JE
    TUBUVT

    View Slide

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

    View Slide

  16. Espresso × Appium
    •Pros
    ‣ アプリの Context にアクセス可能に
    ‣ IdlingResource によってスリープによる待ち合わせが不要
    ‣ UIAutomator と同様にブラックボックスに記述できる!
    •Cons
    ‣ Espresso ができること以外はできない
    ‣ Debug ビルドのみ対応
    16

    View Slide

  17. 実際どうなのか
    •実際に Driver を置き換えることでどうなるのか
    ‣ 不必要なスリープの減少
    • シナリオ簡潔さ向上
    ‣ 既存の View 探索以外の手法
    ‣ Driver の指定を変更するだけで便利
    17

    View Slide

  18. Appium Ruby Client
    •Capability の automationName を切り替えるだけ?
    •appium_lib では Espresso Driver への切り替えが
    シュッとできない
    •appium_lib_core を直接利用

    View Slide

  19. まとめ
    •appium-espresso-driver はいいぞ
    ‣ 互換性もだいたいあるぞ
    •UIAutomator から抜け出してシナリオ洗練させていくぞ
    19

    View Slide

  20. Project Nitrogen

    View Slide

  21. Project Nitrogen
    •Write once, run everywhere

    View Slide

  22. View Slide

  23. Espresso(Robolectric) Driver
    •Robolectric (JVM) 上で実行
    •Capability によって切替可能に
    •対象アプリの実装が必要となるので、

    既存アプリのテストケースとしてサーバを実装

    View Slide

  24. Espresso(Robolectric) Driver
    •シュッとできなかった
    ‣ JUnit の別スレッドで Robolectric が動かない

    https://github.com/robolectric/robolectric/issues/
    3829

    View Slide