Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

ࣗݾ঺հ ! ۄ৓৴ޛ Work as iOS Engineer & Manager for Origami Organize try!Swift Tokyo 2020 co-auther of iOSςετશॻ

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

ͳΜͪΌΒςετ

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

ؓ࿩ٳ୊

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

▶︎1. UIʹϑΥʔΧεͨ͠ ςετΛ͍ͨ͠

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

ΞϓϦ಺෦ͷঢ়ଶมԽΛ੍ޚ͢Δ launchArguments΍launchEnvironmentΛ࢖ͬͯىಈ࣌ʹঢ়ଶ ͷ੍ޚΛߦ͏ let app = XCUIApplication() app.launchArguments.append("UITest") app.launchEnvironment["GyozaAccessToken"] = "GY0Za15PERfECTF00D" app.launchEnvironment["DidAgreeTos"] ɹɹɹ= "1"

Slide 25

Slide 25 text

ΞϓϦ಺෦ͷঢ়ଶมԽΛ੍ޚ͢Δ খωλ XCUIApplicationͷextensionͰݻ༗ͷઃఆΛΈ΍͘͢͢Δ let app = XCUIApplication() app.uitest() .isLoggedIn() .didAgreeTos() .launch()

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

UIςετ͍ͭ΍Δͷʁ • ݪଇͱͯ͠ϢχοτςετͳͲͷςετϐϥϛουͷԼ૚͔ ΒੵΈ্͛ͯߦ͘ํ͕๬·͍͠ʢROI͕ߴ͍ʣ • ↑Λཧղ্ͨ͠ͰUIςετͰΧόʔ͢Δͷ΋ѱͰ͸ͳ͍ɻ ϦϑΝΫλϦϯάલͷϨΨγʔίʔυΛUIςετʹΑͬͯ ୲อ্ͨ͠ͰɺϦϑΝΫλϦϯάޙʹϢχοτςετΛॻ ͘

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

Ҏ্