Предисловие:
Этот курс создан для того, чтобы 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:
- реализовать метод:
- создание скриншота всего экрана
- создание скриншота отдельного элемента
- написать 1 снэпшот тест с полным скриншотом экрана и 1 с снэпшотом определенного элемента
Полезные материалы:
Урок 2
Цель: научиться внедрять мок сервер в свой проект
- выбрать библиотеку для реализации мок сервера:
- пишем любой тест с использованием моков
Полезные материалы:
Урок 3
Цель: научиться работать с ранерами и паралелить прохождение тестов
- распаралелить автотесты в xcode
- выбрать раннер по душе:
- написать скрипт для запуска тестов по:
- схеме
- тест плану
- без компиляции проекта на основе существующей derived data
- распаралелить автотесты используя CLI
Полезные материалы:
Урок 4
Цель: научиться работать с CI запускать тесты удаленно на билд агенте
- выбираем ci на своё усмотрение:
- создаем билд агент
- на основании скриптов из прошлых уроков, создаем pipeline с запуском тестов
Полезные материалы: