Skip to content

Latest commit

 

History

History
227 lines (165 loc) · 15.2 KB

README.md

File metadata and controls

227 lines (165 loc) · 15.2 KB

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

Этот курс создан для того, чтобы 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

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

Полезная информация:

Урок 2

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

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

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

Урок 3

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

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

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

Урок 4

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

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

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

Урок 5

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

  1. написать явную задержку
  2. написать неявную задержку используя:
    • XCTNSPredicateExpectation
    • XCTWaiter
    • XCTDarwinNotificationExpectation*
    • XCTNSNotificationExpectation*
    • XCTKVOExpectation*

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

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

Урок 6

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

  1. создать папку для pages и tests
  2. создать базовые классы: CommonPage и CommonTest и вынести туда общую логику
  3. создать page для каждого экрана
  4. прописать в каждом page, объекты и методы взаимодействия с ними

Полезная информация:

Урок 7

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

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

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

Advanced

Урок 1

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

  1. выбрать библиотеку для Snapshot testing:
  2. реализовать метод:
    • создание скриншота всего экрана
    • создание скриншота отдельного элемента
  3. написать 1 снэпшот тест с полным скриншотом экрана и 1 с снэпшотом определенного элемента

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

Урок 2

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

  1. выбрать библиотеку для реализации мок сервера:
  2. пишем любой тест с использованием моков

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

Урок 3

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

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

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

Урок 4

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

  1. выбираем ci на своё усмотрение:
  2. создаем билд агент
  3. на основании скриптов из прошлых уроков, создаем pipeline с запуском тестов

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