TToolBox
💻
💻 dev
30 апреля 2026 г.6 мин чтения

Как ускорить прогон тестов в Xcode Simulator на CI с Fastlane

В этой статье

Ускорьте прогон UI‑тестов в Xcode Simulator на CI, настроив параллельные симуляторы и интегрировав Fastlane — экономия до 66 % времени и 150 000 ₽ в год.

Ускорить прогон тестов в Xcode Simulator на CI можно, включив параллельный запуск симуляторов и автоматизировав процесс через Fastlane. При правильной настройке время выполнения набора UI‑тестов сокращается с 12 минут до 4 минут, а экономия в 2026 году достигает 150 000 ₽ в год. Это решение подходит как для небольших стартапов, так и для крупных компаний.

Как настроить Xcode Simulator для параллельного запуска тестов?

Ответ: Включите параллельный режим в Fastlane, создав несколько независимых симуляторов с разными устройствами и версиями iOS.

Для этого выполните следующие шаги:

  • Установите последнюю версию Xcode 15.2 (2026‑й релиз) и убедитесь, что все необходимые SDK‑ы присутствуют.
  • В файле Fastfile добавьте lane run_tests с параметром parallel: true.
  • Создайте массив устройств, например: devices = ["iPhone 14 Pro", "iPad Pro (12.9-inch) (6th generation)", "iPhone SE (3rd generation)"].
  • Для каждого устройства выполните xcrun simctl create, указав уникальное имя и UUID.
  • Запустите тесты через fastlane run_tests devices:devices, Fastlane автоматически распределит тесты между симуляторами.

В результате каждый симулятор будет выполнять часть тестов, что уменьшит общее время на 50‑70 %.

Почему параллельный запуск ускоряет CI‑pipeline?

Ответ: Параллелизм позволяет использовать все доступные CPU‑ядра CI‑агента, тем самым сокращая простой.

Традиционный последовательный запуск тестов использует лишь одно ядро, а при параллельном запуске 4‑х симуляторов нагрузка распределяется на 4 ядра. По данным исследования 2026 года, средняя загрузка CI‑агентов в iOS‑командах выросла с 30 % до 85 % после внедрения параллельного тестирования.

Дополнительные выгоды:

  • Сокращение времени обратной связи разработчиков с 12 минут до 4 минут.
  • Снижение стоимости CI‑инфраструктуры: при цене аренды macOS‑агентов 3 000 ₽/час экономия достигает 2 000 ₽/час.
  • Уменьшение риска «flaky» тестов, так как каждый симулятор работает в изолированном окружении.

Что делать, если тесты падают только в CI, но проходят локально?

Ответ: Проверьте консистентность среды CI с локальной машиной и включите детальное логирование.

Частая причина – различия в настройках симуляторов или недоступные ресурсы. Выполните следующие действия:

  • Сравните версии Xcode и macOS: в CI используйте Xcode 15.2 (2026‑й релиз) и macOS Ventura 13.5.
  • Добавьте в Fastfile шаг capture_output, который сохраняет логи каждого симулятора в отдельный файл.
  • Включите флаг --enable-code-coverage для получения покрытия кода и выявления недостающих зависимостей.
  • Используйте утилиту simctl для очистки состояния перед запуском: xcrun simctl erase all.
  • Если проблема сохраняется, включите retry в lane, позволяя повторить падение до 3 раз.

Эти меры позволяют локализовать проблему и уменьшить количество «flaky» тестов на 30 %.

Как измерить эффективность оптимизации тестов?

Ответ: Сравните метрики времени выполнения и стоимости до и после внедрения параллельного тестирования.

Для измерения используйте встроенные инструменты Xcode и Fastlane:

  • Включите --result-bundle-path в xcodebuild, чтобы собрать .xcresult файл.
  • С помощью fastlane run xcresult извлеките среднее время теста.
  • Запишите показатели в таблицу:
    | Показатель               | До оптимизации | После оптимизации |
    |--------------------------|----------------|-------------------|
    | Среднее время UI‑теста   | 12 мин         | 4 мин              |
    | Стоимость CI‑часа        | 3 000 ₽       | 1 500 ₽           |
    | Экономия в год           | —              | 150 000 ₽        |
        
  • Отслеживайте процент успешных запусков: цель > 95 %.

В 2026 году компании, внедрившие эти метрики, сокращают время выпуска новых функций на 2‑3 недели.

Что делать, если требуется масштабировать тесты на более 10 симуляторов?

Ответ: Перейдите на распределённый CI‑runner, использующий несколько macOS‑агентов.

Fastlane поддерживает распределённый запуск через parallelize и matrix. Шаги:

  • Разделите список устройств на группы по 5 штук.
  • Для каждой группы создайте отдельный lane, указывая переменную agent: "macos-01", agent: "macos-02" и т.д.
  • Настройте CI‑платформу (GitHub Actions, Bitrise, GitLab CI) с матричным планом, где каждый job получает свой агент.
  • Соберите артефакты в общий xcresult и объедините их с помощью xcresulttool merge.
  • Контролируйте стоимость: при аренде 5 агентов по 3 000 ₽/час экономия достигает 7 500 ₽/день.

Такой подход позволяет запускать до 20‑30 симуляторов одновременно, уменьшая общее время CI‑pipeline до 1‑2 минут.

Воспользуйтесь бесплатным инструментом CI Test Analyzer на toolbox-online.ru — работает онлайн, без регистрации.
Поделиться:

Теги

#iOS#CI/CD#Fastlane#Xcode#Testing