Slide 1

Slide 1 text

ςετࣗಈԽπʔϧ   UI  Automator  2.0   ͰมΘͬͨ͜ͱ 2015.7.20   @sumio_tym  (TOYAMA  Sumio) Android  Bazaar  and  Conference  2015  Summer

Slide 2

Slide 2 text

ࣗݾ঺հ •  ࢯ໊:  ֎ࢁ७ੜ(TOYAMA  Sumio)   @sumio_tym  (twitter),  @sumio  (github)   •  ॴଐ:  NTTιϑτ΢ΣΞגࣜձࣾ   •  ۀ຿಺༰:   – ࣾ಺Androidؔ࿈ϓϩδΣΫτٕज़ࢧԉ   •  ϓϥΠϕʔτ:   – STAR(ςετࣗಈԽݚڀձ)   – @IT࿈ࡌ   ʮεϚϗ޲͚ແྉγεςϜςετࣗಈԽπʔϧʯ   uiautomator/AppiumͷճΛॻ͖·ͨ͠   •  http://www.atmarkit.co.jp/ait/kw/smapho_testtool.html   2  

Slide 3

Slide 3 text

•  Android  SDKඪ४ͷUIςετࣗಈԽπʔϧ   http://goo.gl/E5DH9y  (developer.android.com)   •  apk͕खݩʹແͯ͘΋ૢ࡞Ͱ͖Δ   – ΞϓϦʹ·͕ͨͬͨૢ࡞΋OK!   – ϓϦΠϯΞϓϦ΋OK!   •  uiautomator:  Android  4.1ΑΓ୺຤ʹόϯυϧ   •  UI  Automator  2.0  (ݱ࣌఺ͷ࠷৽൛͸2.1.1)   – 2015.3  Android  Testing  Support  Libraryͱͯ͠ൃද   https://plus.google.com/+AndroidDevelopers/posts/WCWANrPkRxg   – Android  4.3Ҏ্ରԠ   3   UI  Automatorͬͯ?

Slide 4

Slide 4 text

͓࿩͢͠Δ͜ͱ UI  Automator  2.xͷ৽ػೳɾ   uiautomator͔ΒมΘͬͨ఺Λɺ   ࣌ؒͷڐ͢ݶΓ঺հ͠·͢! 4  

Slide 5

Slide 5 text

ΞδΣϯμ •  Android  Studio/GradleରԠ   •  ΞʔΩςΫνϟͷมߋ   •  APIͷมߋ   •  ςΩετೖྗAPIͷଟݴޠରԠ   5  

Slide 6

Slide 6 text

•  Android  Studio/GradleରԠ   •  ΞʔΩςΫνϟͷมߋ   •  APIͷมߋ   •  ςΩετೖྗAPIͷଟݴޠରԠ   6  

Slide 7

Slide 7 text

Android  StudioɾGradleରԠ(1/2) 7   uiautomator UI  Automator  2.0 Ϗϧυ ant   (build.xmlΛఏڙ) gradle IDE ओʹEclipse Android  Studio ֎෦Jarͷ   ར༻ º (build.xmlͷ੍ݶ) ˓ gradleͷdependencies ςετ ίʔυ ର৅ΞϓϦͱ͸ ಠཱ ର৅ΞϓϦͱϖΞ   (src/androidTest/ʹอଘ) ΃ΞҎ֎ͷΞϓϦ΋ૢ࡞Ͱ͖·͢

Slide 8

Slide 8 text

Android  StudioɾGradleରԠ(2/2) 8   android { ... defaultConfig {
 ...
 testInstrumentationRunner \ "android.support.test.runner.AndroidJUnitRunner" }
 } dependencies {
 androidTestCompile 'com.android.support.test:runner:0.3'
 androidTestCompile \ 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
 } buildscript {
 dependencies {
 classpath 'com.android.tools.build:gradle:1.2.3'
 }
 }

Slide 9

Slide 9 text

•  Android  Studio/GradleରԠ   •  ΞʔΩςΫνϟͷมߋ   •  APIͷมߋ   •  ςΩετೖྗAPIͷଟݴޠରԠ   9  

Slide 10

Slide 10 text

uiautomator UI  Automator  2.0 am   ίϚϯυ ˓ ΞϓϦىಈOK º 1FSNJTTJPOͳ͠ Context ΞΫηε º ˓ PackageManagerΛ࢖ͬͯ ΞϓϦΛىಈ͢Δ͜ͱ΋Մೳ ΞʔΩςΫνϟมߋ 10   •  Instrumentation  Testͱͯ͠ಈ࡞͢ΔΑ͏ʹͳͬͨ   // ࣄલʹActivityManager#killBackgroundProcesses() // Ͱର৅ΞϓϦΛڧ੍ऴྃ͢ΔͱΑΓ࣮֬ɻ Context context = InstrumentationRegistry.getContext(); final Intent intent = context.getPackageManager() .getLaunchIntentForPackage(ىಈ͍ͨ͠ΞϓϦͷύοέʔδ); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); context.startActivity(intent);

Slide 11

Slide 11 text

•  Android  Studio/GradleରԠ   •  ΞʔΩςΫνϟͷมߋ   •  APIͷมߋ   •  ςΩετೖྗAPIͷଟݴޠରԠ   11  

Slide 12

Slide 12 text

uiautomator UI  Automator  2.0 ݕࡧ৚݅Λද͢Ϋϥε UiSelector UiSelector UI෦඼ͷݕࡧํ๏ APIͷมߋ(1/3) 12   •  UiObject:  Ҏલ͔Β͋ΔΫϥε   Instrumentation inst; inst = InstrumentationRegistry.getInstrumentation(); UiDevice dev = UiDevice.getInstance(inst); // dev.findObject(<ݕࡧ৚݅>).ΞΫγϣϯ dev.findObject(new UiSelector().text("OK")).click(); // new UiObject(<ݕࡧ৚݅>).ΞΫγϣϯ new UiObject(new UiSelector().text("OK")).click();

Slide 13

Slide 13 text

uiautomator UI  Automator  2.0 ݕࡧ৚݅Λද͢Ϋϥε — BySelector, By UI෦඼ͷݕࡧํ๏ — APIͷมߋ(2/3) 13   •  UiObject2:  ৽͍͠Ϋϥε   Instrumentation inst; inst = InstrumentationRegistry.getInstrumentation(); UiDevice dev = UiDevice.getInstance(inst); // dev.findObject(<ݕࡧ৚݅>).ΞΫγϣϯ dev.findObject(By.text("OK")).click();

Slide 14

Slide 14 text

UiObject UiObject2 ݕࡧλΠϛϯά ΞΫγϣϯ click()
 ͳͲ ݺͼग़࣌͠ findObject()
 ݺͼग़࣌͠ ը໘֎ͷUI෦඼ εΫϩʔϧΞ΢τͨ͠ ෦඼΋ݕࡧ0, UiScrollable ʔ ৚݅Λຬͨ͢·Ͱ ΢ΣΠτ ݶΒΕͨ৚݅ͷΈ clickAndWaitForWind ow() ༷ʑͳ৚݅ΛࢦఆͰ͖Δ clickAndWait(৚݅) ҆ఆੑ ≤"1* ˚ ςΩετೖྗલʹ ϑΥʔΧεҠಈ͕ඞཁ º ۭཝͷEditText΁ͷςΩ ετೖྗෆՄ /1&ൃੜ ҆ఆੑ ≥"1* ˓ ˓ APIͷมߋ(3/3) 14   •  UiObject  vs  UiObject2

Slide 15

Slide 15 text

•  Android  Studio/GradleରԠ   •  ΞʔΩςΫνϟͷมߋ   •  APIͷมߋ   •  ςΩετೖྗAPIͷଟݴޠରԠ   15  

Slide 16

Slide 16 text

ςΩετೖྗAPIͷଟݴޠରԠ 16   uiautomator UI  Automator  2.0 EditTextͷΫϦΞ   (୺຤ϩέʔϧ:  ӳޠ) ˓ ˓ EditTextͷΫϦΞ   (୺຤ϩέʔϧ:  ӳޠҎ֎) º ˓ ඇASCIIจࣈೖྗ(㱡  API  19) º º ඇASCIIจࣈೖྗ(㱢API  21) º ˓ UnicodeจࣈΛೖྗͰ͖ΔπʔϧΛެ։͍ͯ͠·͢ɻ͝ར༻͍ͩ͘͞!   https://github.com/sumio/uiautomator-­‐unicode-­‐input-­‐helper  

Slide 17

Slide 17 text

·ͱΊ ৽͍͠UI  Automator͸   – Gradle/Android  StudioରԠʹͳΓ·ͨ͠   – ΑΓॊೈʹ࢖͑ΔAPI͕௥Ճ͞Ε·ͨ͠   – ೔ຊޠ͕ೖྗͰ͖ΔΑ͏ʹͳΓ·ͨ͠ (LollipopҎ্ͷΈ)   – ͨͩ͠ɺLollipopະຬͩͱগ͠ෆ҆ఆ     LollipopҎ্Ͱ࢖͏ʹ͸͓͢͢Ί!   17  

Slide 18

Slide 18 text

ࢀߟURL •  GoogleʹΑΔαϯϓϧίʔυ   –  https://github.com/googlesamples/android-­‐testing/tree/master/ uiautomator/BasicSample   •  ެࣜυΩϡϝϯτ   –  http://developer.android.com/tools/testing-­‐support-­‐library/index.html   –  http://developer.android.com/training/testing/ui-­‐testing/uiautomator-­‐ testing.html   •  APIϦϑΝϨϯε   –  http://developer.android.com/reference/android/support/test/package-­‐ summary.html   18