Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Firebase Test Lab 5つのtips

Ryosuke Horie
September 28, 2016

Firebase Test Lab 5つのtips

iQON
https://play.google.com/store/apps/details?id=jp.vasily.iqon&hl=ja

関連資料

Firebase Test LabでのAndroidアプリのテストをCLIから実行する
http://qiita.com/Horie1024/items/ba387e1861e12fdca0b6

CircleCIからFirebase Test Labでのテストを実行する
http://qiita.com/Horie1024/items/3c22b67634deb0dd4645

Ryosuke Horie

September 28, 2016
Tweet

More Decks by Ryosuke Horie

Other Decks in Programming

Transcript

  1. Firebase(Test(Lab
    5ͭͷ"ps
    @Horie1024
    2016/9/28(potato-ps(#33
    ©"VASILY,"Inc.,"2016 1

    View Slide

  2. About&Me
    • Ryosuke)Horie)@Horie1024
    • →)ͷௗͷΞΠίϯͰ͢
    • VASILY,)Inc.
    • Android)Developer
    • iQONͱ͍͏ΞϓϦΛ։ൃ͍ͯ͠·͢ɻ
    ©"VASILY,"Inc.,"2016 2

    View Slide

  3. ൃදͷྲྀΕ
    • Firebse(Test(Labͱ͸ʁ(
    • -ps঺հ
    ©"VASILY,"Inc.,"2016 3

    View Slide

  4. Firebase(Test(Labͱ͸ʁ
    ©"VASILY,"Inc.,"2016 4

    View Slide

  5. Firebase(Test(Lab
    • Google'I/O'2016ͰFirebaseͷҰػೳͱͯ͠ެ։
    • چCloud'Test'Lab
    • Ϋϥ΢υϕʔεͷAndroidΞϓϦͷςετج൫
    • Googleͷσʔληϯλʔ্ͰՔಇ͢Δ୺຤ͰςετΛ࣮ߦ
    ©"VASILY,"Inc.,"2016 5

    View Slide

  6. ར༻ํ๏
    • FirebaseͷϓϩδΣΫτΛ࡞੒
    • ՝ۚ
    • BlazeϓϥϯΛબ୒
    • ࠨΧϥϜͷϝχϡʔ͔Βར༻Մೳ,
    ©"VASILY,"Inc.,"2016 6

    View Slide

  7. ࣮ߦՄೳͳςετ
    • Roboςετ
    • ςετίʔυෆཁͳE2Eςετ
    • ΞϓϦͷUIߏ଄Λղੳɾ୳ࡧ͠Ϣʔβʔͷૢ࡞ΛγϛϡϨʔτ
    • Instrumenta1onςετ
    • Espresso
    • Robo1um
    • UI3Automator32.0
    ©"VASILY,"Inc.,"2016 7

    View Slide

  8. ςετͷ࣮ߦํ๏
    • Web%UI(Firebase%console)
    • Android%Studio
    • CLI
    • Pre;launch%report(RoboςετͷΈ)
    • Play΁ͷα,%βͰͷAPKΞοϓϩʔυ࣌ʹࣗಈ࣮ߦ
    ©"VASILY,"Inc.,"2016 8

    View Slide

  9. ςετ݁Ռͷ֬ೝ
    • ϩά
    • εΫϦʔϯγϣοτ
    • ಈը
    • Cloud'Storageʹอଘ
    ©"VASILY,"Inc.,"2016 9

    View Slide

  10. !psͷ঺հ
    ©"VASILY,"Inc.,"2016 10

    View Slide

  11. 1.#Roboςετͷڍಈ
    ©"VASILY,"Inc.,"2016 11

    View Slide

  12. Roboςετͷڍಈ
    • Roboςετ͸Monkey*testͱԿ͕ҧ͏ͷ͔ʁ
    • ࣗಈͰγϛϡϨʔτ͞ΕΔૢ࡞͸ςετ࣮ߦຖʹҟͳΔͷ͔ʁ
    ©"VASILY,"Inc.,"2016 12

    View Slide

  13. Roboςετͷڍಈ
    • Monkey(testͱ͸ڍಈ͕ҟͳΔ
    • ࣮ߦͷ౓ʹϥϯμϜͳૢ࡞͕ߦΘΕΔΘ͚Ͱ͸ͳ͍
    • RoboςετͰγϛϡϨʔτ͞ΕΔૢ࡞ʹ͸࠶ݱੑ͕͋Δ
    • σόΠεͷઃఆ౳ͷύϥϝʔλ͕ಉ͡ͳΒ͹ৗʹಉ͡
    ©"VASILY,"Inc.,"2016 13

    View Slide

  14. 2.#RoboςετͰͷೝূॲཧ
    ©"VASILY,"Inc.,"2016 14

    View Slide

  15. RoboςετͰͷೝূॲཧ
    • Roboςετ͸αΠϯΠϯ΍ϩάΠϯը
    ໘ΛಥഁͰ͖ͳ͍
    • ೝূʹGoogleΞΧ΢ϯτΛ࢖༻͔ͭ௥
    ՃͷΞΫγϣϯΛཁٻ͠ͳ͍ͳΒಥഁ
    Մೳ
    ©"VASILY,"Inc.,"2016 15

    View Slide

  16. RoboςετͰͷೝূॲཧ
    • System(PropertyͰΞϓϦ͕TestLabͰ࣮ߦத͔Λ൑ผ
    • TestLabͷ৔߹ͷΈαΠϯΠϯɺϩάΠϯΛεΩοϓͳͲՄೳ
    String testLabSetting =
    Settings.System.getString(context.getContentResolver(), "firebase.test.lab");
    if ("true".equals(testLabSetting)) {
    // Test LabͰͷ࣮ߦதʹߦ͏ॲཧ
    }
    ©"VASILY,"Inc.,"2016 16

    View Slide

  17. 3.#CLI͔Βͷ࣮ߦ
    ©"VASILY,"Inc.,"2016 17

    View Slide

  18. CLOUD&SDKΛΠϯετʔϧ
    • h#ps:/
    /cloud.google.com/sdk/
    • gcloudίϚϯυϥΠϯπʔϧΛ࢖༻
    ©"VASILY,"Inc.,"2016 18

    View Slide

  19. Roboςετͷ࣮ߦ
    $ gcloud beta test android run \
    --type robo \
    --app app-debug-unaligned.apk \
    --device-ids Nexus5 \
    --os-version-ids 21 \
    --locales ja_JP \
    --orientations portrait \
    --timeout 90s
    ©"VASILY,"Inc.,"2016 19

    View Slide

  20. Instrumenta*onςετͷ࣮ߦ
    $ gcloud beta test android run \
    --type instrumentation \
    --app app-debug-unaligned.apk \
    --test app-debug-test-unaligned.apk \
    --device-ids Nexus5 \
    --os-version-ids 21 \
    --locales ja_JP \
    --orientations portrait
    ©"VASILY,"Inc.,"2016 20

    View Slide

  21. 4.#ςετઃఆͷ؅ཧ
    ©"VASILY,"Inc.,"2016 21

    View Slide

  22. ςετઃఆͷ؅ཧ
    • ͜ͷ··ͩͱಡΈʹ͍͘
    $ gcloud beta test android run \
    --type robo \
    --app app-debug-unaligned.apk \
    --device-ids Nexus5 \
    --os-version-ids 21 \
    --locales ja_JP \
    --orientations portrait \
    --timeout 90s
    ©"VASILY,"Inc.,"2016 22

    View Slide

  23. YAMLͰ؅ཧ
    robo-test:
    type: robo
    app: app-debug-unaligned.apk
    device-ids: Nexus5
    os-version-ids: 21
    locales: ja_JP
    orientations: portrait
    timeout: 90s
    ©"VASILY,"Inc.,"2016 23

    View Slide

  24. YAMLͰ؅ཧͨ͠৚݅Λࢦఆ࣮ͯ͠ߦ
    • ৚݅ͷ੾Γସ͑΋؆୯
    $ gcloud beta test android run test_settings.yaml:robo-test
    ©"VASILY,"Inc.,"2016 24

    View Slide

  25. 5.#CIγεςϜͱͷ࿈ܞ
    ©"VASILY,"Inc.,"2016 25

    View Slide

  26. CIγεςϜ͔ΒTest'LabΛ࣮ߦ͢Δʹ͸ʁ
    • ඞཁͳAPIͷ༗ޮԽ
    • CIͷϏϧυͰͷgcloudπʔϧͷೝূ
    • gcloudπʔϧͰͷςετ࣮ߦ
    ©"VASILY,"Inc.,"2016 26

    View Slide

  27. ඞཁͳAPIͷ༗ޮԽ
    • GCPͷAPIϚωʔδϟʔ͔Β༗ޮԽ
    • Google+Cloud+Tes0ng+API
    • Cloud+Tool+Results+API
    ©"VASILY,"Inc.,"2016 27

    View Slide

  28. gcloudπʔϧͷೝূ
    • αʔϏεΞΧ΢ϯτͷ࡞੒
    • GCPͷAPIϚωʔδϟʔ'→'ೝূ৘ใ
    • FirebaseͷϓϩδΣΫτ໊Λબ୒
    • αʔϏεΞΧ΢ϯτ࡞੒
    • ΞΧ΢ϯτΩʔΛJSONͰμ΢ϯϩʔ
    υ
    ©"VASILY,"Inc.,"2016 28

    View Slide

  29. gcloudπʔϧͷೝূ
    • ΞΧ΢ϯτΩʔΛbase64Τϯίʔυ͠؀ڥม਺ʹొ࿥
    $ base64
    ©"VASILY,"Inc.,"2016 29

    View Slide

  30. gcloudπʔϧͷೝূ
    • CIͰͷϏϧυதʹσίʔυ͠ϑΝΠϧʹॻ͖ग़͠
    $ echo $CLIENT_SECRET | base64 --decode > ${HOME}/client-secret.json
    ©"VASILY,"Inc.,"2016 30

    View Slide

  31. gcloudπʔϧͷೝূ
    • client(secret.jsonΛ࢖༻͠ೝূ
    $ gcloud auth activate-service-account --key-file ${HOME}/client-secret.json
    ©"VASILY,"Inc.,"2016 31

    View Slide

  32. gcloudπʔϧͰͷςετ࣮ߦ
    • CircleCIͰͷྫ
    test:
    override:
    - ./gradlew assembleDebug
    - echo "y" | sudo /opt/google-cloud-sdk/bin/gcloud beta test android run test_settings.yaml:robo-test
    ©"VASILY,"Inc.,"2016 32

    View Slide

  33. ͋Γ͕ͱ͏͍͟͝·ͨ͠
    ©"VASILY,"Inc.,"2016 33

    View Slide