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

What's New in Testing!!!

What's New in Testing!!!

This document is a brief summary of the contents announced at WWDC 2017.

Shingo Tamaki

July 19, 2017
Tweet

More Decks by Shingo Tamaki

Other Decks in Technology

Transcript

  1. What's New in
    Testing!!!

    View Slide

  2. ࣗݾ঺հ

    View Slide

  3. ࣗݾ঺հ
    ۄ৓৴ޛ
    iOS Engineer!
    ޷͖ͳframework͸HomeKitͱXCTestͰ͢
    झຯ"
    ిࢠ޻࡞⚡
    ےτϨ$
    ΨδΣοτ%

    View Slide

  4. Enhancements

    View Slide

  5. xcodebuild
    • CoreSimulator
    • Prallel testing

    View Slide

  6. ͜Ε·ͰͷγϛϡϨʔλଟॏىಈ
    Xcode8.3·Ͱ͸Simulator.appͰͷىಈͰଟॏىಈΛαϙʔτ͠
    ͍ͯͳ͔ͬͨɻ
    FBSimulatorControllͳͲΛ࢖͍CoreSimulatorΛ௚઀ىಈͤ͞
    Δํ๏͕͕͋ͬͨɺެࣜʹͦΕΛαϙʔτͨ͠ܗɻ
    FBSimulatorControl
    https://github.com/facebook/FBSimulatorControl

    View Slide

  7. FBSimulatorControl

    View Slide

  8. ͦͷଞͷଟॏγϛϡϨʔλଟॏىಈϥΠϒϥϦ
    FBSimulatorControlΑΓ΋࠶࣮ߦͳͲػೳ͕ଟ͍ͷͰXcode9Ҏ
    ߱΋࢖ΘΕͦ͏
    bluepill
    https://github.com/linkedin/bluepill

    View Slide

  9. ؓ࿩ٳ୊

    View Slide

  10. Localization
    ςετ࣌ͷLanguage/Localࢦఆ͕ՄೳʹͳΓ·ͨ͠ɻ

    View Slide

  11. Xcode Server
    XcodeʹXcode Serverͷػೳ͕͖ͭ·ͨ͠ɻ

    View Slide

  12. Block-based test teardown

    View Slide

  13. Async Testing
    ඇಉظͷ୯ମͱςετʹ͍ͭͯ͸͜Ε·ͰXCTExpectationΛ
    ࢖͍ͬͯ·ͨ͠ɻ

    View Slide

  14. Limitations
    • λΠϜΞ΢τͷ৔߹ඞࣦͣഊͱͯ͠ѻΘΕͯ͠·͍·͢ɻ
    • ΢ΣΠτॲཧ͕ඞཁͱͳΔ
    • ΤϥʔͷݪҼ͕ಛఆͮ͠Β͍
    • ωετͨ͠΢ΤΠτॲཧ͕ग़དྷͳ͍

    View Slide

  15. XCTWaiter
    • XCTWaiterͱͯ͠΢ΣΠτॲཧʹؔ͢Δ෦෼͕XCTestCase͔
    Β෼཭͠·ͨ͠ɻ
    • ର৅ͱͳΔexpectationΛ໌ࣔతʹෳ਺Ͱ͖ΔΑ͏ʹͳΓ·͠
    ͨɻ
    • XCTWaiterʹ߹ΘͤͯDelegateΫϥε΋ఆٛ͞Ε·ͨ͠
    • Returns XCTWaiter.Result

    View Slide

  16. XCTWaiter

    View Slide

  17. XCTWaiter

    View Slide

  18. XCTWaiter.Result
    XCWaiter.Result͕ఆٛ͞Εɺ࣮ߦ݁Ռͱͯ͠ҎԼͷΑ͏ͳ΋ͷ
    ͕ఆٛ͞Ε͍ͯ·͢ɻ
    • completed
    • timedOut
    • incorrectOrder
    • invertedFulfillment
    • interrupted

    View Slide

  19. XCTTestExpectation
    XCTWaiterʹ߹ΘͤͯXCTTestExpectation΋֦ு͞Ε·ͨ͠ɻ
    (Xcode8.3Ͱ௥Ճ)
    • ΠχγϟϥΠβ͕͖ͭ·ͨ͠
    • expectationDescriptionͰDescriptionͷมߋ͕ग़དྷΔ
    Α͏ʹͳΓ·ͨ͠ɻ
    • expectedFulfillmentCountͷઃఆʹΑͬͯɺfulfill()ͷճ਺ʹ
    ΑΔࢦఆ͕ग़དྷΔΑ͏ʹͳΓ·ͨ͠ɻͭ·Γ

    View Slide

  20. XCTTestExpectation
    • isInvertedϓϩύςΟʹΑͬͯςετͷ੒ޭ/ࣦഊΛٯస͞
    ͤΔ͜ͱ͕ग़དྷ·͢ɻ͜ΕͰλΠϜΞ΢τͰ΋੒ޭͱ͢Δ͜
    ͱ͕Ͱ͖·͢Ͷɻ
    • wait(for:timeout:enforceOrder:)ͷΑ͏ʹexpectationͷ
    ׬ྃॱΛࢦఆ͢Δ͜ͱ͕Ͱ͖·͢

    View Slide

  21. XCTWaiterDelegate
    • nestedWaiter(_:wasInterruptedByTimedOutWaiter:)
    • waiter(_:didTimeoutWithUnfulfilledExpectations:)
    • waiter(_:didFulfillInvertedExpectation:)

    waiter(_:fulfillmentDidViolateOrderingConstraintsFor:requir
    edExpectation:)

    View Slide

  22. Multi-app Testing

    View Slide

  23. Multi-app Testing
    UI Testing͸͜Ε·Ͱ1ͭͷΞϓϦέʔγϣϯʹରͯ͠ߦ͏΋ͷ
    Ͱͨ͠ɺ͔͠͠Xcode9͔Βىಈର৅ͷΞϓϦΛࢦఆ͢ΔࣄͰෳ
    ਺ΞϓϦͷىಈ͕UI TestingͰߦ͑ΔΑ͏ʹͳΓ·ͨ͠ɻ

    View Slide

  24. XCUIApplication
    • New initializer
    • init(bundleIdentifier: String)Ͱର৅ΞϓϦͷ
    BundleIDΛࢦఆ
    • init(url: URL)΋௥Ճ͞Ε·͕ͨ͠MacOSͷΈͳͷͰઆ
    ໌লུ(ௐ΂ͯͳ͍)

    View Slide

  25. XCUIApplication
    • Activate
    • ΞϓϦ͸launch()Ͱىಈ͠·͕͢ɺෳ਺ΞϓϦΛίϯτ
    ϩʔϧ͢Δࡍɺactivate()Λ࢖͏͜ͱʹΑͬͯΞϓϦͷ
    ੾Γସ͑Λߦ͍·͢ɻ
    • State property
    • ෳ਺ͷΞϓϦΛ੾Γସ͑ͨΓ͢Δ͜ͱΛ૝ఆ͢Δʹ͋ͨ
    ΓɺΞϓϦͷঢ়ଶΛఆٛͨ͠ϓϩύςΟ͕௥Ճ͞Ε·ͨ͠

    View Slide

  26. XCUIApplication

    View Slide

  27. UI Testing performance

    View Slide

  28. FirstMatch API
    firstMatchΛ࢖͏͜ͱͰͰUIElementͷݕࡧʹஔ͍ͯ࠷ॳʹݟ
    ͚ͭͨ࣌఺ͰݕࡧΛൈ͚Δࣄ͕ग़དྷΔΑ͏ʹͳΓ·ͨ͠ɻ

    View Slide

  29. FirstMatch API
    ౰વͰ͕͢ɺۃྗཁૉΛߜΔ৚݅͸ࡉ͔͍ํ͕ྑ͍Ͱ͢ɻ

    View Slide

  30. Activities, attachments, and
    screenshots

    View Slide

  31. Activities
    ςετͷखॱΛϒϩοΫͰแΜͰ໊લΛ͚ͭΔ͜ͱ͕ग़དྷΔΑ
    ͏ʹͳΓ·ͨ͠ɻ

    View Slide

  32. ͜Ε·Ͱͷςετ

    View Slide

  33. ͜Ε·Ͱͷςετ

    View Slide

  34. ͜Ε͔Βͷςετ

    View Slide

  35. ࣮ߦϩά͔Βݟͨҧ͍
    ࡉ͔ͳखॱͰ͸ͳ͘γφϦΦͱͯ͠Θ͔Γ΍͍͢ܗʹ

    View Slide

  36. Attachment
    ςετ࣌ʹ௥Ճͷϩά΍ΠϝʔδͳͲΛ࢒͢͜ͱ͕Ͱ͖ΔΑ͏
    ʹͳΓ·ͨ͠ɻ

    View Slide

  37. Screenshots
    ͜Ε·ͰͷࣗಈεΫϦʔϯγϣοτͰ͸ͳ͘ɺద੾ͳλΠϛϯ
    άͰεΫϦʔϯγϣοτΛࡱΕΔΑ͏ʹͳΓ·ͨ͠ɻ

    View Slide

  38. Screenshots

    View Slide

  39. Attachment Lifetime Policies
    εΫϦʔϯγϣοτ΍Ξλονϝϯτ͸ςετ׬ྃ࣌ʹ࡟আ͢
    ΔͳͲͷઃఆ΋ՄೳʹͳΓ·͢ɻ

    View Slide

  40. https://
    developer.apple.com
    /videos/play/
    wwdc2017/409/

    View Slide

  41. Ҏ্

    View Slide