Automation-Mobile-Testing
ios-automation-course

Программа обучения iOS автоматизации

Last updated Feb 17, 2026
64
Stars
14
Forks
0
Issues
0
Stars/day
Attention Score
15
Language breakdown
No language data available.
Files click to expand
README

Предисловие:

Этот курс создан для того, чтобы Manual QA поняли, как писать ui-тесты на iOS.

Есть мнение, что если человек что-то понял, он автоматически научился. Не достаточно пройти 1 курс, который хорошо всё объясняет, и ты сразу можешь делать всё то, о чём там говорится. Чтобы человек научился что-то делать, он должен тренироваться - то есть что-то делать. “Читать” или “Слушать” - это не “делать”.

Если хочешь научиться автоматизировать, нужно как можно чаще: писать и дебажить автотесты. Но просто делать тоже не достаточно. Нужно делать правильно, получая обратную связь. И будет круто, если у вас получится найти ментора, который поможет вам в этом

Требования к участникам программы:

  • Xcode версии ≥ 12
  • Знание Swift на базовом уровне(SwiftBook / книжка Усова)
  • Знание Git на базовом уровне(checkout, merge, rebase, revert, git workflow, branch)
  • Пройти курс Raywenderlich: iOS and SwiftUI for Beginners
  • Свой проект для покрытия автотестами

Beginner

Урок 1

Цель: научить работать с github

  • создать аккаунт на github;
  • настроить ssh ключ;
  • добавить проект в удаленный репозиторий, созданный в рамках прохождения курса “iOS and SwiftUI for Beginners”, либо добавьте свой проект;
  • отвести ветку, в которой будете выполнять задания.
Полезная информация:

Урок 2

Цель: научить работать с локаторами: проставлять, находить и хранить их

  • проставить accessibilityidentifier в:
- storyboard - viewController - content(SwiftUI)
  • найти accessibilityidentifier в объектах при помощи:
- accessibility Inspector - debug view hierarchy - console(debugDescription) - test recorder
  • создать enum для хранения локаторов
Полезные материалы:

Урок 3

Цель: научить взаимодействовать с ui-элементами в автотестах

  • создать методы нажатия на элементы, которые нажимают по:
- accessibilityidentifier - индексу элемента - координатам - по определенному лейблу в элементе(использовать NSPredicate)
  • создать метод закрытия алерта
  • создать метод нажатия на кнопку “назад” в Navigation bar
  • создать ассерты на:
- элемент выделен - placeholder в textField равен текстовому значению - элемент отображается на экране

Полезные материалы:

Урок 4

Цель: научиться работать с жизненным циклом приложения во время прогона тестов

  • открыть при старте приложения Safari
  • добавить launch argument и environment
  • сбросить любой пирмишен перед стартом приложения
  • использовать все методы жизненного цикла(setUp, tearDown и.т.д)
Полезные материалы:

Урок 5

Цель: научиться использовать задержки

  • написать явную задержку
  • написать неявную задержку используя:
- XCTNSPredicateExpectation - XCTWaiter - XCTDarwinNotificationExpectation* - XCTNSNotificationExpectation* - XCTKVOExpectation*
Задачка со звездочкой: эти классы редко используются в задержках, но знакомство с ними может быть сильно полезным

Полезные материалы:

Урок 6

Цель: Научиться работать с патернами POM(Page object model) и DRY(Don’t repeat yourself)

  • создать папку для pages и tests
  • создать базовые классы: CommonPage и CommonTest и вынести туда общую логику
  • создать page для каждого экрана
  • прописать в каждом page, объекты и методы взаимодействия с ними
Полезная информация:

Урок 7

Цель: написать ui-тесты и сгруппировать их

  • покрыть ui-тестами каждый экран приложения не менее 2 тестов на экран.
  • создать тест план для группировки тестов:
- из таргета с тестами - пустой тест план и наполнить его тестами
  • изменить конфигурацию тест плана
- переопределить launch arguments и launch environment для тестов - измените геолокацию, регион и язык для тестов
  • создать несколько настроек для тест плана(например: настройки для регрессионого прогона, для прогона на испанском языке и.т.д)
Полезные материалы:

Advanced

Урок 1

Цель: научиться работать с Snapshot testing

  • выбрать библиотеку для Snapshot testing:
- https://github.com/uber/ios-snapshot-test-case - https://github.com/pointfreeco/swift-snapshot-testing
  • реализовать метод:
- создание скриншота всего экрана - создание скриншота отдельного элемента
  • написать 1 снэпшот тест с полным скриншотом экрана и 1 с снэпшотом определенного элемента
Полезные материалы:

Урок 2

Цель: научиться внедрять мок сервер в свой проект

  • выбрать библиотеку для реализации мок сервера:
- https://github.com/tinkoff-mobile-tech/TinkoffMockStrapping - https://github.com/httpswift/swifter - https://github.com/envoy/Embassy - https://github.com/Subito-it/SBTUITestTunnel
  • пишем любой тест с использованием моков
Полезные материалы:

Урок 3

Цель: научиться работать с ранерами и паралелить прохождение тестов

  • распаралелить автотесты в xcode
  • выбрать раннер по душе:
- fastlane - marathon - Emcee
  • написать скрипт для запуска тестов по:
- схеме - тест плану - без компиляции проекта на основе существующей derived data - распаралелить автотесты используя CLI

Полезные материалы:

Урок 4

Цель: научиться работать с CI запускать тесты удаленно на билд агенте

  • выбираем ci на своё усмотрение:
- Jenkins - GitLab
  • создаем билд агент
  • на основании скриптов из прошлых уроков, создаем pipeline с запуском тестов
Полезные материалы:
🔗 More in this category

© 2026 GitRepoTrend · Automation-Mobile-Testing/ios-automation-course · Updated daily from GitHub