TestFlight — официальная платформа Apple для распространения предрелизных сборок приложений среди тестировщиков. Позволяет разработчикам загружать бета-версии в App Store Connect, управлять доступом и собирать отзывы до публикации. По данным Apple Developer Documentation, TestFlight поддерживает до 10 000 внешних тестировщиков через публичную ссылку и до 100 внутренних — по Apple ID.
Главное
TestFlight — бета-тестовая платформа, интегрированная в App Store Connect, для распространения предрелизных сборок приложений до публикации в App Store. Разработчики загружают сборки, архивированные через Xcode, и распространяют их среди тестировщиков без необходимости распространять IPA-файлы вручную.
Apple приобрела TestFlight в 2014 году для замены Ad Hoc распространения через Provisioning Profiles. Ранее разработчики собирали UDID устройств, создавали provisioning profile и распространяли IPA через сторонние сервисы. TestFlight автоматизировал весь процесс: тестировщик устанавливает бета-приложение через TestFlight App, а разработчик управляет доступом через веб-интерфейс.
По данным WWDC 2024, TestFlight обрабатывает более 2 миллионов тестовых установок ежемесячно. Платформа поддерживает распространение на все платформы Apple, включая iOS, iPadOS, macOS, tvOS, watchOS и visionOS, что делает её единственным унифицированным инструментом бета-тестирования в экосистеме Apple.
TestFlight разделяет тестирование на два типа: Internal Testing для членов команды (до 100 участников, сборка доступна сразу после загрузки) и External Testing для внешних пользователей (до 10 000 участников, требуется проверка Beta App Review). Внутреннее тестирование не требует модерации, что делает его идеальным для быстрой проверки сборок внутри команды.
External Testing позволяет приглашать тестировщиков по email или через публичную ссылку. После прохождения Beta App Review сборка доступна для скачивания всем приглашённым. Для приложений, публикуемых впервые, External Testing обязателен согласно правилам App Store Review Guidelines.
Рабочий процесс TestFlight начинается с архивации приложения в Xcode и загрузки в App Store Connect через Organizer или Transporter. После загрузки сборка проходит автоматическую проверку на валидность и сканирование на безопасность.
Внутренние тестировщики получают уведомление о доступной сборке через TestFlight App. Они могут установить приложение и оставлять отзывы через встроенный интерфейс скриншотов и текстовых комментариев. Для внешних тестировщиков требуется одобрение Beta App Review, после которого сборка распространяется так же, как внутренняя.
TestFlight автоматически собирает метрики использования: количество установок, краш-логи, скриншоты с аннотациями и отзывы. Разработчик видит эти данные в разделе TestFlight App Store Connect. Все данные агрегируются по версиям сборок, что упрощает сравнение стабильности разных билдов.
Каждая загруженная в TestFlight сборка имеет срок действия 90 дней. После истечения срока тестировщики больше не могут установить или запустить приложение. Для продолжения тестирования необходимо загрузить новую сборку с увеличенным номером версии. Ограничение стимулирует разработчиков регулярно обновлять сборки.
При приближении даты истечения TestFlight отправляет уведомления разработчику и тестировщикам. Если новая сборка не загружена вовремя, тестирование прерывается, а участники теряют доступ к приложению до появления свежей версии.
Настройка TestFlight начинается в App Store Connect в разделе TestFlight. Для запуска требуется как минимум одна загруженная сборка приложения. Интерфейс разделён на три основных раздела: сборки, внутренние тестировщики и внешние группы.
Внутренние тестировщики добавляются по Apple ID. Каждый участник должен быть приглашён через App Store Connect с ролью, включающей доступ к тестированию. После приглашения тестировщик получает email и может установить приложение через TestFlight App на устройстве.
Для внешнего тестирования создаются группы, объединяющие тестировщиков по сценариям. Каждая группа привязывается к конкретным сборкам. Группа может иметь публичную ссылку для самостоятельного присоединения — это удобно для open-source проектов или массового бета-тестирования. По данным Apple Developer Documentation, публичная ссылка может быть отозвана в любой момент без потери доступа уже присоединившихся тестировщиков.
Загрузка сборки в TestFlight выполняется через Xcode Organizer после архивации проекта. Для загрузки требуется аккаунт в программе Apple Developer Program с правами Admin или App Manager в App Store Connect.
Перед загрузкой сборка должна быть подписана корректным Distribution Certificate и содержать Provisioning Profile с App Store дистрибуцией. Xcode автоматически настраивает подпись через Automatic Signing при активном аккаунте разработчика.
# Upload via xcrun altool (Xcode 15+ uses notarytool)
xcrun notarytool submit MyApp.ipa --apple-id "developer@example.com" --team-id "TEAMID123" --password "@keychain:AC_PASSWORD" --wait
# Upload to App Store Connect directly
xcrun altool --upload-app -f MyApp.ipa -t ios -u "developer@example.com" -p "@keychain:AC_PASSWORD"
После загрузки сборка проходит автоматическую проверку: валидация бинарника, сканирование на вредоносный код, проверка соответствия App Store Review Guidelines. Обычно проверка занимает от нескольких минут до часа. Статус отображается в App Store Connect в разделе TestFlight.
Для CI/CD (GitHub Actions, Bitrise, Jenkins) используется xcrun altool или notarytool для загрузки сборки напрямую без Xcode. Ключи аутентификации хранятся в Keychain или App Store Connect API. Fastlane предоставляет экшн upload_to_testflight для полной автоматизации процесса.
Приглашение тестировщиков в TestFlight зависит от типа тестирования. Внутренние тестировщики добавляются напрямую в App Store Connect по Apple ID и получают доступ ко всем сборкам немедленно после загрузки. Внешние тестировщики приглашаются через группы с указанием конкретных сборок.
Для внешнего тестирования требуется пройти Beta App Review — упрощённую версию App Review, проверяющую базовую функциональность и соответствие правилам. Первая внешняя сборка обычно проходит проверку за 1–2 дня, последующие — быстрее. После одобрения все тестировщики группы получают уведомление.
Публичная ссылка упрощает приглашение: разработчик публикует ссылку на сайте или в соцсетях, пользователи переходят по ней и автоматически присоединяются к тестированию. TestFlight поддерживает до 10 000 участников на внешнюю группу, а количество групп не ограничено. Для каждого приложения можно настроить несколько групп с разными сборками.
Тестировщики отправляют отзывы через TestFlight App, прикрепляя скриншоты и аннотации. Разработчик видит все отзывы в App Store Connect, сгруппированные по сборкам. Каждый отзыв содержит версию ОС, модель устройства и временную метку, что облегчает воспроизведение и устранение багов.
Публикация приложения из TestFlight в App Store не требует повторной сборки. Достаточно выбрать утверждённую бета-сборку в App Store Connect и нажать Submit for Review. Та же сборка, которая прошла бета-тестирование, отправляется на финальный App Review без перекомпиляции.
Это гарантирует, что в продакшн попадает именно та версия, которую тестировали участники, исключая риски отличий между бета- и релизной сборками. После прохождения финального App Review сборка автоматически публикуется в App Store в соответствии с заданными Availability правилами.
Перед публикацией разработчику необходимо обновить метаданные: описание версии, скриншоты для новой версии ОС и информацию об изменениях. TestFlight сборки, которые не были отправлены в App Store, автоматически удаляются через 90 дней после загрузки вместе со всеми данными тестирования.
Часто задаваемые вопросы
Автоматическая проверка обычно занимает от 5 минут до часа. Beta App Review для внешнего тестирования — от нескольких часов до 2 дней. Для повторных сборок проверка проходит быстрее, так как Apple учитывает историю предыдущих ревью.
TestFlight доступен только участникам Apple Developer Program (99$ в год). Без подписки загрузка сборок в App Store Connect невозможна. Для Ad Hoc распространения без подписки потребуется Enterprise-аккаунт или SideStore.
Ad Hoc требует сбора UDID устройств, создания Provisioning Profile и ручного распространения IPA. TestFlight автоматизирует весь процесс: разработчик загружает сборку, тестировщик устанавливает через TestFlight App без provisioning профилей и UDID.
Срок жизни сборки в TestFlight — 90 дней с момента загрузки. После истечения срока тестировщики не могут установить или запустить приложение. Для продления тестирования необходимо загрузить новую сборку с увеличенным номером версии.
TestFlight поддерживает macOS-приложения начиная с macOS 11 Big Sur. Тестировщики устанавливают бета-версию через TestFlight App на Mac. Процесс загрузки и управления не отличается от iOS-версии: архивация в Xcode, загрузка через Organizer.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также