Getting Started With Firebase Test Lab for Android
by
Ryosuke Horie
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Ge#ng&Started&With Firebase(Test(Lab(for(Android @Horie1024 2016/9/30(Android(Tes2ng(Bootcamp(#4 ©"VASILY,"Inc.,"2016 1
Slide 2
Slide 2 text
About&Me • Ryosuke)Horie)@Horie1024 • →)ͷௗͷΞΠίϯͰ͢ • VASILY,)Inc. • Android)Developer • iQONͱ͍͏ΞϓϦΛ։ൃ͍ͯ͠·͢ɻ ©"VASILY,"Inc.,"2016 2
Slide 3
Slide 3 text
©"VASILY,"Inc.,"2016 3
Slide 4
Slide 4 text
ࠓͷൃදͰΘ͔Δ͜ͱ • Firebase)Test)LabͰͷςετͷ࣮ߦํ๏ ©"VASILY,"Inc.,"2016 4
Slide 5
Slide 5 text
ൃදͷྲྀΕ • Firebase)Test)Labͱʁ • ར༻͢ΔͨΊͷ४උ • ςετͷ࣮ߦ • ςετ݁Ռͷ֬ೝ • CLIͰͷ࣮ߦͱCIγεςϜͱͷ࿈ܞ ©"VASILY,"Inc.,"2016 5
Slide 6
Slide 6 text
Firebase(Test(Labͱʁ ©"VASILY,"Inc.,"2016 6
Slide 7
Slide 7 text
Firebase(Test(Labͱʁ • Google'I/O'2016ͰFirebaseͷҰػೳͱͯ͠ެ։ • چCloud'Test'Lab • ΫϥυϕʔεͷAndroidΞϓϦͷςετج൫ • Googleͷσʔληϯλʔ্ͰՔಇ͢ΔͰςετΛ࣮ߦ ©"VASILY,"Inc.,"2016 7
Slide 8
Slide 8 text
Firebase(Test(Labͷಛ • ࣮ػͰͷςετ͕Մೳ • Googleͷσʔληϯλʔʹஔ͞Ε࣮ͨػͰςετ͕࣮ߦ • ςετίʔυෆཁͰςετ͕Մೳ • Test*Lab͕ΞϓϦΛղੳ͠Ϣʔβʔͷૢ࡞ΛγϛϡϨʔτ • ։ൃϑϩʔͷ౷߹͕༰қ • ༷ʑͳςετͷ࣮ߦํ๏Λ༻ҙ ©"VASILY,"Inc.,"2016 8
Slide 9
Slide 9 text
࣮ߦՄೳͳςετख๏ • Instrumenta+onςετ • Roboςετ ©"VASILY,"Inc.,"2016 9
Slide 10
Slide 10 text
Instrumenta*onςετ • ҎԼ3छͷϑϨʔϜϫʔΫʹରԠ • Espresso • Robo+um • UI0Automator02.0 ©"VASILY,"Inc.,"2016 10
Slide 11
Slide 11 text
Roboςετ • ςετίʔυෆཁͳE2Eςετ • ΞϓϦͷUIߏΛղੳɾ୳ࡧ • Ϣʔβʔͷૢ࡞ΛγϛϡϨʔτ ©"VASILY,"Inc.,"2016 11
Slide 12
Slide 12 text
Roboςετ • Monkey(testͱڍಈ͕ҟͳΔ • ࣮ߦͷʹϥϯμϜͳૢ࡞͕ߦΘΕΔΘ͚Ͱͳ͍ • RoboςετͰγϛϡϨʔτ͞ΕΔૢ࡞ʹ࠶ݱੑ͕͋Δ • σόΠεͷઃఆͷύϥϝʔλ͕ಉ͡ͳΒৗʹಉ͡ ©"VASILY,"Inc.,"2016 12
Slide 13
Slide 13 text
Roboςετͷ੍ݶ • ϩάΠϯɾೝূॲཧΛᷖճͰ͖ͳ͍ • UnityඇରԠ • ಠࣗͷςετεΫϦϓτͷఆٛෆՄ ©"VASILY,"Inc.,"2016 13
Slide 14
Slide 14 text
RoboςετͰͷೝূॲཧ • System(PropertyͰΞϓϦ͕TestLabͰ࣮ߦத͔Λผ • TestLabͷ߹ͷΈαΠϯΠϯɺϩάΠϯΛεΩοϓͳͲՄೳ String testLabSetting = Settings.System.getString(context.getContentResolver(), "firebase.test.lab"); if ("true".equals(testLabSetting)) { // Test LabͰͷ࣮ߦதʹߦ͏ॲཧ } ©"VASILY,"Inc.,"2016 14
Slide 15
Slide 15 text
ςετͷ࣮ߦํ๏ • Firebase)console • Android)Studio • CLI • Pre7launch)report(RoboςετͷΈ) • Playͷα,)βͰͷAPKΞοϓϩʔυ࣌ʹࣗಈ࣮ߦ ©"VASILY,"Inc.,"2016 15
Slide 16
Slide 16 text
ςετͷ࣮ߦํ๏ • Pre%launch,report • ՝ۚແ͠Ͱ༻Մ • Developer,console͔ΒΦϓτΠϯ ©"VASILY,"Inc.,"2016 16
Slide 17
Slide 17 text
ར༻͢ΔͨΊͷ४උ ©"VASILY,"Inc.,"2016 17
Slide 18
Slide 18 text
FirebaseͷϓϩδΣΫτΛ࡞ • Firebase)console͔Β࡞ ©"VASILY,"Inc.,"2016 18
Slide 19
Slide 19 text
՝ۚ • ՝ۚ • BlazeϓϥϯΛબ ©"VASILY,"Inc.,"2016 19
Slide 20
Slide 20 text
ར༻։࢝ ©"VASILY,"Inc.,"2016 20
Slide 21
Slide 21 text
ςετͷ࣮ߦ ©"VASILY,"Inc.,"2016 21
Slide 22
Slide 22 text
ςετ࣮ߦ·ͰͷྲྀΕ • Firebase)console͔Βͷ࣮ߦͷ߹ • ςετख๏ͷܾఆ • APKͷΞοϓϩʔυ • ςετ݅ͷઃఆ • ςετͷ࣮ߦ ©"VASILY,"Inc.,"2016 22
Slide 23
Slide 23 text
ςετख๏ͷܾఆ • Roboςετ%or%Instrumenta/onςετ ©"VASILY,"Inc.,"2016 23
Slide 24
Slide 24 text
APKͷΞοϓϩʔυ • Roboςετͷ߹௨ৗͷAPK ©"VASILY,"Inc.,"2016 24
Slide 25
Slide 25 text
APKͷΞοϓϩʔυ • Instrumenta+onςετͷ߹ • ௨ৗͷAPK0+0ςετAPK͕ඞཁ • ҎԼͷίϚϯυͰςετAPKΛੜ $ ./gradlew assembleDebugTest ©"VASILY,"Inc.,"2016 25
Slide 26
Slide 26 text
ςετ݅ͷઃఆ • ςετ݅ͷઃఆRoboςετɺ Instrumenta.onςετͰڞ௨ • ৄࡉઃఆʹ͕ࠩ͋Γ • ઃఆͷ֓೦͕গ͠Θ͔Γʹ͍͘ ©"VASILY,"Inc.,"2016 26
Slide 27
Slide 27 text
ςετ݅ͷઃఆʹඞཁͳ֓೦ • Test%Dimension • σόΠεɺAPIϨϕϧɺϩέʔϧɺը໘ͷ͖ͳͲ • Test%Execu/on • ༗ޮͳTest)Dimensionͷ߹ͤ • Test%Matrix • Test)Execu3onͷϦετ ©"VASILY,"Inc.,"2016 27
Slide 28
Slide 28 text
Test%Dimensionͷબྫ • σόΠε:#Nexus#4,#Nexus#5,#Nexus#7 • APIϨϕϧ:#21,#22 • ϩέʔϧ:#Japanese • ը໘ͷ͖:#ॎ͖ ©"VASILY,"Inc.,"2016 28
Slide 29
Slide 29 text
Test%Matrix • Test&Execu+on • ༗ޮͳTest&Dimensionͷ߹ͤ • Nexus&7͕APIϨϕϧ22ʹඇରԠ • Nexus&7&+&APIϨϕϧ22εΩοϓ • Test&MatrixTest&Execu+onͷϦετ • Test&Matrixʹैͬͯςετ͕࣮ߦ ©"VASILY,"Inc.,"2016 29
Slide 30
Slide 30 text
RoboςετͷΦϓγϣϯ • Timeout • Maximum+depth(࠷େਂ) • RoboςετͰͷΈબՄೳͳ߲ • Roboςετͷνϡʔχϯά͜ͷ2߲ Λௐ1 1"h$ps:/ /firebase.google.com/docs/test6lab/robo6ux6 test#configuringrobotest ©"VASILY,"Inc.,"2016 30
Slide 31
Slide 31 text
Roboςετͷ༻ޠ • Depth • ը໘ͷ֊ͷਂ͞ • Maximum-depthͰ୳ࡧͷݶΛࢦఆ • Root • ϝΠϯεΫϦʔϯ • UI-Branch • ࢬ͔Εͨ͠ը໘ભҠͷذ ©"VASILY,"Inc.,"2016 31
Slide 32
Slide 32 text
ςετͷ࣮ߦ • Test&DimensionΛબ • Լ෦ͷςετΛ։࢝ϘλϯΛΫϦοΫ ©"VASILY,"Inc.,"2016 32
Slide 33
Slide 33 text
ςετ݁Ռͷ֬ೝ ©"VASILY,"Inc.,"2016 33
Slide 34
Slide 34 text
ςετ݁Ռͷ֬ೝ • Test&Execu+onຖʹ݁ՌΛ֬ೝՄೳ • ϩά • εΫϦʔϯγϣοτ • ಈը • Cloud&Storageʹอଘ • อଘظؒςετ࣮ߦޙ90ؒ ©"VASILY,"Inc.,"2016 34
Slide 35
Slide 35 text
ςετ݁Ռͷ֬ೝ • Roboςετͷ߹ΞΫςΟϏςΟϚο ϓ͕දࣔ% ©"VASILY,"Inc.,"2016 35
Slide 36
Slide 36 text
CLIͰͷ࣮ߦͱCIγεςϜͱͷ࿈ܞ ©"VASILY,"Inc.,"2016 36
Slide 37
Slide 37 text
CLIͰͷ࣮ߦ • gcloudίϚϯυϥΠϯπʔϧΛ༻ $ gcloud beta test android run \ --type robo \ --app app-debug.apk \ --device-ids Nexus5 \ --os-version-ids 21 \ --locales ja_JP \ --orientations portrait \ --timeout 90s ©"VASILY,"Inc.,"2016 37
Slide 38
Slide 38 text
CLIͰͷ࣮ߦ • ৄࡉQiitaʹ·ͱΊ͍ͯ·͢ɻ Firebase(Test(LabͰͷAndroidΞϓϦͷςετΛCLI͔Β࣮ߦ͢Δ ©"VASILY,"Inc.,"2016 38
Slide 39
Slide 39 text
CIγεςϜͱͷ࿈ܞ • CLI͔Β࣮ߦͰ͖ΔͷͰCIͷϏϧυ͔Β࣮ߦՄೳ • CIͷϏϧυͰgcloudπʔϧ͔ΒςετΛ࣮ߦ ©"VASILY,"Inc.,"2016 39
Slide 40
Slide 40 text
CircleCIͰͷྫ 1. ίʔυͷมߋΛίϛοτ͠ϦϙδτϦʹϓογϡ 2. CircleCI͕มߋΛݕ͠ϏϧυΛ։࢝ 3. gcloudίϚϯυϥΠϯπʔϧͷઃఆɺೝূॲཧ 4. apk͓Αͼςετapkͷ࡞ 5. Firebase8Test8LabʹΑΔςετͷ࣮ߦ ©"VASILY,"Inc.,"2016 40
Slide 41
Slide 41 text
gcloudπʔϧ • CirlceCIͰσϑΥϧτͰ༻ҙ • ϓϩδΣΫτͷઃఆɺcomponentsͷupdateΛߦ͏ඞཁ͋Γ • JSONαʔϏεΞΧϯτΩʔͰͷೝূ ©"VASILY,"Inc.,"2016 41
Slide 42
Slide 42 text
CircleCIͷઃఆ • base64Τϯίʔυͨ͠JSONαʔϏεΞΧϯτΩʔΛڥมʹొ ©"VASILY,"Inc.,"2016 42
Slide 43
Slide 43 text
gcloudπʔϧͷೝূ ڥมʹొͨ͠ΩʔΛJSONϑΝΠϧʹσίʔυ $ echo $CLIENT_SECRET | base64 --decode > ${HOME}/client-secret.json ©"VASILY,"Inc.,"2016 43
Slide 44
Slide 44 text
gcloudπʔϧͷೝূ gcloud auth activate-service-accountͰೝূ $ gcloud auth activate-service-account --key-file ${HOME}/client-secret.json ©"VASILY,"Inc.,"2016 44
Slide 45
Slide 45 text
CIγεςϜͱͷ࿈ܞ • ৄࡉQiitaʹ·ͱΊ͍ͯ·͢ɻ CircleCI͔ΒFirebase,Test,LabͰͷςετΛ࣮ߦ͢Δ ©"VASILY,"Inc.,"2016 45
Slide 46
Slide 46 text
·ͱΊ • Firebase)Test)LabΛ͍࢝ΊΔͷൺֱత؆୯ • Roboςετศར͕ͩೝূॲཧͷ͕େ͖͍ • ຊ͕ແ͍ͷͰࠓޙͷՃʹظ ©"VASILY,"Inc.,"2016 46
Slide 47
Slide 47 text
࠷ޙʹ • ຊൃද༰ͷৄࡉฐࣾDeveloper)Blogʹ·ͱΊͯ͋Γ·͢ɻ • Firebase)Test)LabΛͬͨAndroidΞϓϦͷςετ ©"VASILY,"Inc.,"2016 47
Slide 48
Slide 48 text
͋Γ͕ͱ͏͍͟͝·ͨ͠ ©"VASILY,"Inc.,"2016 48