Slide 1

Slide 1 text

✔ UI Testing in XCode7 Google I/O & WWDCใࠂձ@Fablic @horimislime

Slide 2

Slide 2 text

ࣗݾ঺հ & ࿩͢͜ͱ • ɹ @horimislime • ɹ גࣜձࣾτϨλ • XCode7Ͱ௥Ճ͞ΕͨUI Testingͷ࿩Ͱ͢

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

΍ͬͯΔ͜ͱ • BtoBࣄۀɻக໋తόά ≒ ܖ໿ղফ • ςετ΍Ζ͏ → KIFಋೖ΁ (WWDCલ) • UI Testingొ৔

Slide 5

Slide 5 text

UI TestingͰԿ͕มΘΔ͔ʁ • جຊతʹ͸KIFͱࣅ͍ͯΔ • γϯϓϧͳAPIɻᙱ͍ͱ͜Ζʹख͕ಧ͖ͦ͏ • UI RecordingɾScreenShotͷࣗಈࡱӨ

Slide 6

Slide 6 text

func testReserve() { // tester.tapViewWithAccessibilityLabel("৽ن༧໿") XCUIApplication().buttons["৽ن༧໿"].tap() }

Slide 7

Slide 7 text

ίʔυ͸”جຊ”खॻ͖ෆཁ • UI RecordingͰSimulatorૢ࡞ɾίʔυੜ੒ • ViewͷAccessibilityLabelࢦఆ͕”΄΅”ෆཁ

Slide 8

Slide 8 text

ίʔυ͸”جຊ”खॻ͖ෆཁ • UI RecordingͰSimulatorૢ࡞ɾίʔυੜ੒ • ViewͷAccessibilityLabelࢦఆ͕”΄΅”ෆཁ

Slide 9

Slide 9 text

͋͘·Ͱɺجຊతʹ͸ • AccessibilityLabelͷઃఆ͸ਪ঑͞ΕͯΔ • Label͕ແ͍ͱݫ͍͠έʔε΋ XCUIApplication().childrenMatchingType(.Window).elementAtIndex(0) .childrenMatchingType(.Unknown).elementAtIndex(0) .childrenMatchingType(.Unknown).elementAtIndex(0) .childrenMatchingType(.Unknown).elementAtIndex(0) .childrenMatchingType(.Unknown).elementAtIndex(0) .childrenMatchingType(.Unknown).elementAtIndex(1) .childrenMatchingType(.Unknown).elementAtIndex(0) .childrenMatchingType(.Button).elementAtIndex(0).tap()

Slide 10

Slide 10 text

ScreenShotͷࣗಈࡱӨ • tap()ͳͲUIૢ࡞લʹը໘ΛࡱӨͯ͘͠ΕΔ

Slide 11

Slide 11 text

xcodebuildͰ΋ $ xcodebuild 
 -workspace Toreta.xcworkspace 
 -scheme "Toreta UI Tests" 
 -destination 'platform=iOS Simulator,name=iPad Air 2,OS=9.0' 
 -derivedDataPath './output' test

Slide 12

Slide 12 text

ίʔυ্ͰࡱӨ͸΋͏ཁΒͳ͍ʁ • Snapshot TestingΈ͍ͨͳࣄ͚ͨ͠Ε͹ݫ͍͠ • ը૾ϑΝΠϧ໊ͷࢦఆ͕Ͱ͖ͳ͍… • ςετຖʹը໘ͷࡱӨ͍͚ͨͩ͠ͳΒ

Slide 13

Slide 13 text

ݸਓతʹخ͍͠ͱ͜Ζ • Simulatorͷىಈɾఀࢭ͕ίʔυ্ͰՄೳʹ • ࠔͬͯͨ͜ͱ
 - TOPը໘ˠઃఆը໘΁ͷભҠΛςετ
 - TOPը໘ˠ͓஌Βͤը໘΁ͷભҠΛςετ • ςετ։࢝࣌͸ΞϓϦىಈ௚ޙͷঢ়ଶʹ

Slide 14

Slide 14 text

override func setUp() { … XCUIApplication().launch() } override func tearDown() { … XCUIApplication().terminate() }

Slide 15

Slide 15 text

Simulator੍ޚ͕ॊೈʹ • ςετ։࢝࣌͸ΞϓϦ্ཱͪ͛ͨ௚ޙͷঢ়ଶ • tearDown()ͰTOP΁໭Δॲཧ͕ෆཁʹ • Simulatorͷىಈ৚݅΋ࢦఆՄೳ

Slide 16

Slide 16 text

override func setUp() { super.setUp() let app = XCUIApplication() app.launch() }

Slide 17

Slide 17 text

override func setUp() { super.setUp() let app = XCUIApplication() app.launchArguments += ["-AppleLanguages (English)"] app.launch() }

Slide 18

Slide 18 text

͜ΕΒΛ౿·͑ͯ • ৽نͰॻ͘UI Testʹ͸࢖ͬͯ΋͍͍͔΋ • ෳ਺ݴޠͰͷςετ͸AccessibilityLabelඞਢ
 - XCUIApplication().buttons[“ઃఆ”].tap() // Fail!! • KIFͰॻ͍ͨςετίʔυɺϓϥΠεϨε

Slide 19

Slide 19 text

·ͱΊ • XCode7͔ΒUIͷࣗಈςετ͕ڧԽ • FluentͳAPIɺSimulator΋ॊೈʹૢ࡞Մ • UI RecordingͰಋೖ΋ΧδϡΞϧʹ