В iOS-приложении «Авито» есть куча UI-тестов — вы наверняка это уже знаете, ведь мы о них постоянно говорим.
Это позволяет нам выпускать релизы раз в неделю, а каждые две недели мы проводим регрессионное тестирование с ручными проверками.
Между ними выпускается приложение, которое тестируется только нашими UI и модульными тестами.
Для поддержки такого масштаба автотестирования мы написали программу запуска тестов Emcee, которая может масштабироваться по ширине физических машин.
Это доступно в нашем репозитории Github.
Что с нашими тестами?
Количество тестов в приложении Авито постоянно растёт. Сейчас там больше всего — 1500 штук — быстрых компонентных UI-тестов.Они сочетают в себе интерактивность тестов XCUI со скоростью модульных тестов.
По сути, это изолированные экраны, но с интерактивными тестами их работы.
Мы запускаем тесты пользовательского интерфейса для каждого запроса на включение в двух версиях iOS — самой старой поддерживаемой и самой новой.
То есть реально запускается 3000 тестов.
Но мы уже год отказались от XCUI-тестов на пул-реквестах: они завязаны на бэкенде (сквозные), а он любит жить своей жизнью.
В момент запуска может обновиться СУБД или выкатиться новые версии сервисов, которые всё ломают. Однако тесты XCUI запускаются при выпуске, а также каждый вечер, а отчеты доставляются команде утром.
Таких тестов осталось около 600. Даже если представить, что каждый компонентный тест длится в среднем 3 секунды, то 3000 х 3 даст 9000 секунд. А это 2,5 часа.
Однако наша тестовая сборка занимает около 15 минут.
Бегун-испытатель, ведущий
Скорость сборки достигается с помощью нашего бегун-тестировщик .Он:
- Управляет симуляторами на нашей ферме компьютеров Apple.
- Организует очередь тестов.
- Пишет аналитику по выполнению тестов в Grafana.
- Выполняет необходимое количество перезапусков.
- Запускает тесты только там, где они могут пройти.
Например, только на компьютерах с установленным симулятором и необходимой версией Xcode.
- Выделяет максимально возможные ресурсы для выполнения набора тестов в зависимости от приоритета.
- Интегрирует результаты тестовых запусков в нашу инфраструктуру: систему хранения тестов и отчетности.
Точные цифры
Наши компонентные тесты на PR длятся в общей сложности 6 часов: по крайней мере, столько времени потребуется для их запуска одному минивэну с одним симулятором.Фактически сборка происходит за 15 минут. Наши 600 комплексных тестов XCUI занимают в общей сложности 41 час.
Они работают на четырех разных версиях iOS, и фактически все распараллеливается и выполняется за 50 минут.
Что вам нужно, чтобы начать использовать Emcee дома
Нужный:- Желание понимать новое.
Мы проделали большую работу, чтобы сделать все проще для вас.
- Компьютеры Mac. Мы используем Mac mini, потому что их можно каким-то образом разместить в стойке.
Но вы также можете использовать ноутбуки, если у вас есть свободные.
Вы также можете арендовать технику Apple у поставщиков.
- Ваше iOS-приложение с тестами.
Кому подходит ведущий?
Смело попробуйте Emcee, если:- Если вы хотите сократить время вывода вашего приложения на рынок, вы полагаетесь на автоматизированные тесты.
- Тесты начинают отнимать значительное количество времени из-за регрессий и запросов на включение, и теперь вы ищете способ их ускорить.
- Вы хотите практически полностью уйти от ручного тестирования и понимаете, что тестов вам понадобится много, но не можете найти инструмент для их запуска.
- Люблю крутые технологии и хочу сотрудничать с инженерами Авито.
Что говорят те, кто уже пользуется Emcee
«Мы обязательно запускаем тесты пользовательского интерфейса при объединении функциональной ветки с основной веткой или по запросу.Когда у нас было около 150 тестов, их прогон занимал около 10 минут на одном мини.
В нашем случае это нормально.
Когда количество тестов увеличилось до 500+, время выполнения увеличилось до 30-35 минут. Мы поняли, что этого времени достаточно, чтобы получить обратную связь о состоянии приложения.
Мы рассматривали варианты перехода в облако для более быстрого проведения тестов, но стоимость поднятия экземпляров MacOS подтолкнула нас к поиску альтернатив.
В итоге мы пришли к ведущему с Авито: ставим ферму из 5 машин, на которых запускаем 5 симуляторов.
В результате время тестового запуска сократилось до 10-12 минут».
Антон из Болта
«Когда мы начали активно внедрять UI-тесты для ускорения регрессионного тестирования, мы столкнулись с тем, что их выполнение занимает довольно много времени.В какой-то момент запуск тестов стал занимать полтора часа! Emcee позволил распараллелить тесты на нескольких Mac mini и значительно сократить время выполнения».
Евгений из ivi
«Проект автотестирования iOS стартовал в условиях, когда приложение уже разрослось и регрессия была узким местом релизов.Они выпускали приложение не чаще раза в месяц и тонули в волнах регресса.
Для проведения тестов я хотел построить надежную собственную инфраструктуру на основе коробочного решения и желательно с открытым исходным кодом.
Мы нашли только один такой инструмент — Emcee. Пришлось немного повозиться с реализацией, но настроишь один раз, а дальше все работает как часы.
Просто берите, подключайте новые ноды и измеряйте ускорение запуска тестов.
Сейчас у нас около 800 e2e-тестов iOS, которые выполняются за 2-3 часа.
Наш цикл релизов сократился с 4-5 недель до 2, и тестировщикам стало гораздо проще выделять время на дополнительные действия в виде улучшения процессов и разработки тестовой документации».
Андрей из Space307
Мы готовы поддержать вас
Мы готовы уделить время и поддержать вас с внедрением, настроить запуск тестов и получение результатов, дать советы по организации тестовой фермы.Постучите в нашу дверь на специальной целевой странице или в телеграмме.
Теги: #Разработка для iOS #с открытым исходным кодом #Тестирование мобильных приложений #разработка для iOS #тестирование пользовательского интерфейса #юнит-тестирование #emcee
-
Батурин Пафнутий Сергеевич.
19 Oct, 24 -
Uwp – Выпуск 240
19 Oct, 24 -
Субстики №75
19 Oct, 24 -
Тиддливики - Все В Одном
19 Oct, 24