What do you want to test with UI Test v2

What do you want to test with UI Test v2

I spoke it at Hakata Test Night

Db5cf21a75ebe2484b95ea9dec5f573b?s=128

Shingo Tamaki

January 24, 2020
Tweet

Transcript

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

  2. ࣗݾ঺հ ! ۄ৓৴ޛ Work as iOS Engineer & Manager for

    Origami Organize try!Swift Tokyo 2020 co-auther of iOSςετશॻ
  3. ݴ༿ͷఆٛʹϒϨΛײͨ͡ࣄ͸ͳ͍Ͱ͔͢ʁ

  4. ͳΜͪΌΒςετ

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

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

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

  9. ؓ࿩ٳ୊

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    "GY0Za15PERfECTF00D" app.launchEnvironment["DidAgreeTos"] ɹɹɹ= "1"
  25. ΞϓϦ಺෦ͷঢ়ଶมԽΛ੍ޚ͢Δ খωλ XCUIApplicationͷextensionͰݻ༗ͷઃఆΛΈ΍͘͢͢Δ let app = XCUIApplication() app.uitest() .isLoggedIn() .didAgreeTos()

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

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

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

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

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

  31. Ҏ্