Upgrade to Pro — share decks privately, control downloads, hide ads and more …

What do you want to test with UI Test

What do you want to test with UI Test

I considered about what a UI test is.

Shingo Tamaki

March 31, 2019
Tweet

More Decks by Shingo Tamaki

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. Ͱ͸ɺ࢝Ί·͢

    View Slide

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

    View Slide

  6. *ςετ

    View Slide

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

    View Slide

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

    View Slide

  9. View Slide

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

    View Slide

  11. ؓ࿩ٳ୊

    View Slide

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

    View Slide

  13. UIςετ΍Γ͍ͨਓ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  27. ΞϓϦ಺෦ͷঢ়ଶมԽΛ੍ޚ͢Δ
    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"

    View Slide

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

    View Slide


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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  33. Ҏ্

    View Slide