October 12, 2019 iOS Native Test Automation with XCUITest

Stress free trial - 100% refund of full payment after first class if you are not satisfied.

Reinvent Your Career in 4 weeks!

This training is for manual testers who want:

  • make a shift in their career and become Software Development Engineer in Test
  • make higher compensation
  • feel more confident in current market

Why we are different?

  • We are not typical bootcamp. We teach through day-to-day work tasks using Agile approach. From day one you will start automating real use cases of a real startup-like iOS app. Thus you will gain real experience.
  • You will learn programming via hands-on task completion -- focusing you on programming topics that are necessary to complete your task
  • You will work in pair just like at real-world job. Pair programming is proven to be very effective and used heavily industry wide.
  • You will experience best software development practices during Bootcamp:
    • Each test case code will be committed to common GitHub repository via PullRequest. We will teach everything about Git and GitHub from scratch at first week of the bootcamp
    • Upon successful code review by instructor and your team mates, your newly written test(s) code will be validated on Jenkins CI:
      • all tests would have to pass CI
      • SwiftLint must pass -- Swift style and conventions
    • Above practices would give you a real taste of day-to-day workflow of Software Engineer
  • We will start every other session with methodical approach on how to solve most asked Interview Programming problems thus will prepare you for coding interview screening

What framework/library we will use for test automation?

Since we are going to focus on iOS, we will use XCTest and XCUITest which is part of native XCode SDK

Course outline:

  • First week we help you to dive into Swift basics of Object Oriented programming, so later you may focus on tasks rather than programming basics
  • Intro to Git and GitHub. Creating Pull Request and solving merge conflicts
  • Every other online session will be started with Coding Algorithms
  • Setup test project from scratch in XCode
  • Integrate Accessibility Identifiers in app code for testability
  • Improve test stability by cleaning up application data via AppDelegate
  • As we progress, we will refactor tests with industry best practices to make tests more resilient using Page Objects pattern by using Protocols, Extensions, Delegates, ENums and Generics
  • Intro to RestApi
  • Make tests more stable with mock sever using https://github.com/envoy/Ambassador (every company wants this skill nowadays)
  • Automating App Analytics ( number one desired test coverage by company’s executives)
  • Decorate tests with  advance features of XCUITest Library such as Async Wait, First Match API, Activities, Attachments and Screenshots
  • Setup  iOS Continuous Integration with Jenkins using Xcodebuild and Fastlane
  • Running tests in parallel in XCode
  • Simulate coding interviews, prepare resume and LinkedIn
  • 1:1 individual session on a new career strategy — how to setup personal goals and achieve them

Detailed Course Syllabus

Week 1

Intro to Swift and XCode

  • Variables
  • Datatypes
  • Operators
  • Control blocks
  • Collections
  • Functions
  • Optionals
  • Classes and Objects
  • Initializers

GitHub and GitFlow

  • Go over basic Git commands in Terminal
  • Intro to GitHub branching strategy
  • Pull Requests and Code Review
  • Resolving merge conflicts

Intro to XCUITest library 

  • Create UiTesting target
  • Automate first user scenario
  • Refactor first test
  • Meaningful assertions

Resolving GitHub Merge conflicts in-action and refactoring exiting tests

  • Why my Pull Request has two checks? UiRegression and SwiftLint
  •  Handling Location System Permission 
  • Overview on how to resolve Pull Request conflicts (in-class examples on student PRs)
  • How to work together on a single Git branch  (demo )
  • Classes and Objects in Action  — refactoring existing tests

Week 2

Intro to scalable Architecture with Page Objects

  • refactor first test with PageObjects
  • access control and encapsulation
  • polymorphism in action
  • initializers in actions
  • intro to XCode debugging
  • Optionals in action

Scale tests with Date Object, Protocols and Protocols extensions 

  • harden tests with future dates -- how to manipulate Date object
  • improve app navigation with Protocols
  • type alias and tuples

Week 3

Facebook auth with WebViews and clean up/injecting tests data

  • automate Facebook auth by using WebViews
  • clean tests data in appdelegate
  • logout before every test
  • using Activity in context for more readable test logs

Intro to backend Rest API and Mocking HTTP Traffic 

  • testing RestAPI via Charles Proxy
  • intro to Postman - Api development and testing environment
  • intro to Ambassador -- a light weight HTTP mock server
  • refactor existing tests by pointing them to network mocks

Week 4

Completion Hanglers  and Analytics automation 

  • intro to completion handlers
  • automating client analytics with Ambassador HTTP mock server

Decorate Tests with cool features of XCUITest Library  

  • Activities, Attachments and Screenshots
  • Parallel Testing -- need for speed
  • Localization testing with snapshot test -- most wanted feature of every global company
  • Running tests on RealDevice -- iPhone


Resume skills upon completion:

  • Intermediate Swift knowledge
  • Automate iOS App  regression with XCTest and XCUITest Libraries
  • Scalable test architecture -- PageObjects on steroids
  • Make test CI stable with mocking networking responses
  • Rest API testing — HTTP, JSON
  • Jenkins CI

What test automation framework and programming language are we going to use?

  • XCUITest – testing framework which is part of XCode
  • Swift – widely used Object Oriented programming language from Apple (open source)
  • CocoaPods – manages third party Libraries for iOS
  • Ambassador - Swift framework designed for UI automatic testing API mocking
  • Fastlane - is a tool for iOS developers to automate tedious tasks like generating screenshots, dealing with provisioning profiles, and releasing your application
  • Jenkins - Continuous integration server
Must Have
  • Must have Mac with minimum hardware requirements :  CPU: 2Ghz+, Intel i5+, RAM: 16Gb+
  • Must have minimum of 6 months experience as manual tester. Mobile or Web

Please register ASAP since seating is limited to 20 students only!

* Registration refund policy:
Stress free trial - 100% refund of full payment after first class if you are not satisfied. We do not refund tuition after 2nd class

Please register ASAP since seating is limited to 20 seats!

For bootcamp pricing and details

October 12Saturday12:00 PM - 5:00 PM
October 13Sunday12:00 PM - 5:00 PM
October 15Tuesday7:30 PM - 9:00 PM
October 17Thursday7:30 PM - 9:00 PM
October 21Monday7:30 PM - 9:00 PM
October 23Wednesday7:30 PM - 9:00 PM
October 26Saturday12:00 PM - 5:00 PM
October 27Sunday12:00 PM - 5:00 PM
October 29Tuesday7:30 PM - 9:00 PM
October 31Thursday7:30 PM - 9:00 PM
November 5Tuesday7:30 PM - 9:00 PM
November 7Thursday7:30 PM - 9:00 PM