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

UI Testing in Xcode 7 - CocoaHeads Chicago, October 2015

UI Testing in Xcode 7 - CocoaHeads Chicago, October 2015

Initial look at UI testing in Xcode 7, both in general and specifically with XCUI tests and KIF tests.

NOTE: If you attended this talk, you'll see I updated the slide where I talked about trying to launch tests from the static setUp() method. Here's a video of me trying to make that work and the hilarisad result: https://www.youtube.com/watch?v=pR0iRf_2j7k

Ellen Shapiro
PRO

October 14, 2015
Tweet

More Decks by Ellen Shapiro

Other Decks in Technology

Transcript

  1. UI TESTING IN XCODE 7
    COCOAHEADS CHICAGO | OCTOBER 2015
    BY ELLEN SHAPIRO
    VOKAL.IO | JUSTHUM.COM | @DESIGNATEDNERD

    View Slide

  2. IF I DIDN'T KNOW THE DEVELOPERS WERE
    EUROPEAN,
    I'D SAY THIS NEW DECKSET THEME WAS DESIGNED BY A
    PACKERS FAN

    View Slide

  3. TESTING TESTING 123

    View Slide

  4. View Slide

  5. UI TESTING
    VS.
    UNIT TESTING

    View Slide

  6. UNIT TESTING:
    TEST EACH PIECE INDIVIDUALLY

    View Slide

  7. INTEGRATION TESTING:
    TEST HOW ALL THE PIECES WORK TOGETHER

    View Slide

  8. UI TESTING:
    TEST HOW ALL THE PIECES WORK TOGETHER
    FOR THE USER

    View Slide

  9. USERS GIVE EXACTLY
    ZERO FUCKS
    HOW WELL YOUR APP WORKS UNDER THE HOOD IF IT DOESN'T DO
    WHAT THEY NEED IT TO DO

    View Slide

  10. GENERAL
    IOS UI TESTING
    CONCEPTS

    View Slide

  11. TEST THE HAPPY PATH
    AND THE KNOWN BAD PATH

    View Slide

  12. ACCESSIBILITY

    View Slide

  13. YOUR COMPUTER
    IS BLIND

    View Slide

  14. SEE WHAT YOUR COMPUTER SEES
    (AND BLIND USERS WILL HEAR)

    View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. THE NEW HOTNESS:
    XCUI TESTING

    View Slide

  19. XCUI: WHAT IS?
    > Added by Apple as part of Xcode 7 + iOS 9
    > Takes Javascript out of UIAutomation
    > Allows you to record actions
    > Automatically refactors code as you record*
    *-SORT OF

    View Slide

  20. XCUI: HOW WORK?
    > Builds queries against views
    > Finds elements using those queries
    > Element requests are evaluated on-demand
    > Test runs in separate process than your app

    View Slide

  21. .value VS. .label

    View Slide

  22. XCUI DEMO

    View Slide

  23. XCUI VS. KIF

    View Slide

  24. KIF: WHAT IS?
    > "Keep It Functional"
    > Built and open-sourced by Square
    > Huge, gnarly codebase, but it's open-source
    > Runs anywhere XCTest does (iOS 7+)

    View Slide

  25. KIF: HOW WORK?
    > Uses private methods to tap and swipe through the app
    > Runs in the same process as your app
    > YOU reset your your UI before each test

    View Slide

  26. KIF DEMO

    View Slide

  27. STUPID
    XCUI TRICKS*
    *AS OF XCODE 7.0.1

    View Slide

  28. View Slide

  29. APP MUST RELAUNCH FROM SCRATCH
    EVERY. SINGLE. TEST.

    View Slide

  30. View Slide

  31. TURN OFF THE
    ACCESSIBILITY INSPECTOR
    BEFORE USING UI RECORDING

    View Slide

  32. SCROLLING
    SADS

    View Slide

  33. View Slide

  34. HARD-CODED STRINGS ARE
    EEEEVERYWHERE
    AND GETTING RID OF THEM IS STUPIDER THAN USUAL

    View Slide

  35. View Slide

  36. View Slide

  37. View Slide

  38. View Slide

  39. !

    View Slide

  40. CENTRALIZE
    YOUR TEST CODE

    View Slide

  41. OBLIGATORY SUMMARY SLIDE
    > UI Testing helps make sure all the pieces of your app
    are working together
    > Accessibility labels != accessibility identifiers
    > XCUI testing still has some significant holes
    > tap things to get a shortcut to what they are in code
    > Don't repeat yourself applies to tests too!

    View Slide

  42. LINKS
    > Demo app: https://github.com/designatednerd/
    GoCubs
    > Xcode UI Testing WWDC Session: https://
    developer.apple.com/videos/play/
    wwdc2015-406/
    > UI Testing Gotchas from Big Nerd Ranch: https://
    www.bignerdranch.com/blog/ui-testing-in-
    xcode-7-part-1-ui-testing-gotchas/

    View Slide