Slide 1

Slide 1 text

͋ͳ͕ͨUIςετͰධՁ͍ͨ͠ͷ͸ ɹ ԿͰ͔͢ʁ

Slide 2

Slide 2 text

ࣗݾ঺հ ! ۄ৓৴ޛ iOS Engineer Testing/CIɾCD/HomeKit/IoT Organized try!Swift Tokyo 2019 Hosting Roppongi.swift

Slide 3

Slide 3 text

PEAKS͞Μ͔ΒʮiOSςετશॻʯΛग़͢͜ͱʹͳΓ·ͨ͠

Slide 4

Slide 4 text

Ͱ͸ɺ࢝Ί·͢

Slide 5

Slide 5 text

ఆٛʹϒϨΛײͨ͡ࣄ͸ͳ͍Ͱ͔͢ʁ

Slide 6

Slide 6 text

*ςετ

Slide 7

Slide 7 text

*ςετ γεςϜςετ/౷߹ςετ/݁߹ςετ/࿈݁ςετ/֎෦݁߹ς ετ/಺෦݁߹ςετ/ΠϯςάϨʔγϣϯςετ/֎෦ςετ/಺ ෦ςετ/ػೳςετ/E2Eςετ/Ϣχοτςετ/୯ମςετ/ε τϨεςετ/ಈతςετ/੩తςετ/ϗϫΠτϘοΫεςετ/ ϒϥοΫϘοΫεςετ/Ϣʔβʔςετ/डೖςετ/UIςετ/ ୳ࡧతςετ/ಉ஋Ϋϥεςετ/ڥք஋ςετ/σγδϣϯςʔ ϒϧςετ/૊Έ߹Θͤςετ/ঢ়ଶભҠςετ/σʔλϑϩʔς ετ/ΞυϗοΫςετ/ABςετ/ϦάϨογϣϯςετ/ճؼς

Slide 8

Slide 8 text

ςετʹؔΘΔ༻ޠ ςετٕ๏/ςετܭը/ςετ߲໨/ςετΞΠςϜ/ςετγφ ϦΦ/ςετεΟʔτ/ςετϨϕϧ/ςετϓϩηε/ςετ؍఺/ ςετઃܭ/ςετ෼ੳ/ςετ޻ఔ/ςετΧόϨοδ/ςετ ϕʔε/ελϒ/ϞοΫ/ςετμϒϧ/SUT/όά/ෆ۩߹/ܽؕ/ނ ো/ϑΥʔϧτ/ςεςΟϯά/νΣοΩϯά/ඇػೳςετ/ςετ λΠϓ/ςετۦಈ։ൃ/TDD/ςετϋʔωε/.....

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

༨ஊ: JSTQBͱ͔΍ͬͯΈΔͱָ͍͠Α http://jstqb.jp

Slide 11

Slide 11 text

ؓ࿩ٳ୊

Slide 12

Slide 12 text

ςετϐϥϛου • UI • Service • Unit

Slide 13

Slide 13 text

UIςετ΍Γ͍ͨਓ

Slide 14

Slide 14 text

UIςετͱ͸ͳΜͩΖ ͏ʁ • XCUITestΛ࢖༻ͯ͠ߦ͏ςετ͸શ ͯUIςετʁ • UIʹϑΥʔΧεͨ͠ςετΛߦ͏ς ετʁ

Slide 15

Slide 15 text

UIςετͱ͸ͳΜͩΖ ͏ʁ • UIʹϑΥʔΧεͨ͠ςετΛߦ͏ς ετʁ

Slide 16

Slide 16 text

UIςετͱ͸ͳΜͩΖ ͏ʁ • UIʹϑΥʔΧεͨ͠ςετΛߦ͏ς ετʁ • ධՁ͍ͨ͠ͷ͕ը໘ɾUIίϯϙʔ ωϯτͳͲʹͷΈͰ͋Ε͹ϓϨθ ϯςʔγϣϯ૚ʹର͢Δ୯ମɾ݁ ߹ςετ

Slide 17

Slide 17 text

UIςετͱ͸ͳΜͩΖ ͏ʁ • ্ͷ૚ʹߦ͘΄Ͳෳࡶ౓ɾ݁߹౓͕ ૿Ճ

Slide 18

Slide 18 text

UIʹର͢Δςετͱ͍͏ΑΓ UIΛ൐ͬͨςετ

Slide 19

Slide 19 text

UIΛ൐͏ςετͱ͸ • E2Eςετ • ϒϩʔυελοΫςετ • γεςϜςετ • ૯߹ςετ

Slide 20

Slide 20 text

͜͜·ͰUIςετͷೝࣝ߹Θͤ

Slide 21

Slide 21 text

ԿΛςετ͍ͨ͠ͷ͔࠶ͼࢥ͍ग़ͯ͠ΈΔ

Slide 22

Slide 22 text

ԿΛςετ͍ͨ͠ͷ͔࠶ͼࢥ͍ग़ͯ͠ΈΔ 1. UIʹରͯ͠ςετΛ͍ͨ͠ 2. UIΛ൐͏ςετΛ͍ͨ͠

Slide 23

Slide 23 text

▶︎1. UIʹରͯ͠ςετΛ ͍ͨ͠

Slide 24

Slide 24 text

XCUITestͰͳ͚Ε͹ग़དྷͳ͍ࣄ͔ʁ • ViewͷαΠζ΍ͦͷ্ʹࡌͬͯΔίϯϙʔωϯτͷҐஔͳͲ ͸ϢχοτςετͰ΋ςετՄೳ • εΫϦʔϯγϣοτͳͲʹΑΔը૾ͰͷධՁ • iOSSnapshotTestcase https://github.com/uber/ios-snapshot-test-case

Slide 25

Slide 25 text

▶︎2. UIΛ൐͏ςετΛ͠ ͍ͨ

Slide 26

Slide 26 text

༷ʑͳཁҼ͕ςετΛͮ͠Β͘͢Δ • ΞϓϦ಺෦ͷঢ়ଶมԽ • ֎෦γεςϜͱͷ࿈ܞ

Slide 27

Slide 27 text

ΞϓϦ಺෦ͷঢ়ଶมԽΛ੍ޚ͢Δ launchArguments΍launchEnvironmentΛ࢖ͬͯىಈ࣌ʹঢ়ଶ ͷ੍ޚΛߦ͏ let app = XCUIApplication() app.launchArguments.append("loggedIn") app.launchArguments.append(contentsOf: ["-key", "abc111222333"]) app.launchArguments.append(contentsOf: ["-skipLogin", "YES"]) app.launchEnvironment["TestMode"] = "UITest"

Slide 28

Slide 28 text

֎෦γεςϜͱͷ࿈ܞ ֎෦γεςϜͷ෦෼ΛϞοΫ·ͨ͸ελϒͯ͠ಈ࡞ͤ͞Δ • Embassy • SBTUITestTunnel • Wiremock

Slide 29

Slide 29 text

⚠ ɹ ͜ΕΒͷํ๏ΛऔΔࣄͰϢʔβͷૢ࡞͔Β͸ԕ͔͟Γ·͢

Slide 30

Slide 30 text

༻๏༰ྔΛकͬͯਖ਼͘͠ޮՌతͰ͋ΔςετΛ໨ࢦ͠·͠ΐ͏ɻ

Slide 31

Slide 31 text

UIςετ͍ͭ΍Δͷʁ • جຊతʹϢχοτςετͳͲͷςετϐϥϛουͷԼ૚͔Β ੵΈ্͛ͯߦ͘ͷ͕͍͍ • ↑Λཧղ্ͨ͠ͰUIςετͰΧόʔ͢Δͷ΋ѱͰ͸ͳ͍ • ϨΨγʔίʔυͷ৔߹ɺϢχοτςετͷͨΊʹϦϑΝΫ λϦϯά͕ඞਢʹͳΔ͕UIςετ͸Կͱ͔͔͚Δ৔߹΋͋ Δ

Slide 32

Slide 32 text

·ͱΊ • UIςετͳͲͷݴ༿͸ఆ͕ٛϒϨ͕ͪͳͷͰ࣠Λ࡞Ζ͏ • ఆٛʹଊΘΕΔඞཁ͸ͳ͍ɺجຊΛԡ্͑ͨ͞ͰͷΞϨϯδ ͸΍ͬͯ΋͍͍ͱࢥ͏Αʁ • ޮՌతͩͱࢥ͑͹ࢼͯ͠ΈΕ͹͍͍͠ɺτϥΠΞϯυΤϥʔ ͯ͠վળ͍͖ͯ͠·͠ΐ͏

Slide 33

Slide 33 text

Ҏ্