TestFlight — це офіційний сервіс Apple для бета-тестування додатків iOS, iPadOS, watchOS і tvOS. Через TestFlight розробники поширюють передрелізні збірки серед до 10 000 зовнішніх тестувальників, збирають відгуки та звіти про збої без необхідності публікації в App Store. За даними Apple Developer Documentation, 2025, понад 80% додатків в App Store використовують TestFlight на етапі підготовки релізу.
Головне
TestFlight — це легітимний і єдиний офіційний спосіб поширення iOS-додатків для тестування без публікації в App Store. Сервіс був запущений Apple у 2014 році після придбання однойменної компанії. До появи TestFlight розробники використовували Ad Hoc дистрибуцію з обмеженням 100 пристроїв на сезон — TestFlight зняв це обмеження та спростив процес до кількох кліків.
iOS має сувору політику безпеки: додаток може бути встановлений на пристрій тільки через App Store або з використанням спеціальних сертифікатів. TestFlight вирішує проблему бета-тестування, виступаючи проксі між розробником і тестувальником: Apple перевіряє білд на базові вимоги, після чого тестувальники отримують додаток через додаток TestFlight з App Store, що не вимагає довіри до непідписаних файлів.
Існує три способи поширення iOS-додатків поза App Store: Ad Hoc (обмеження 100 пристроїв, вимагає UDID кожного пристрою), Enterprise (внутрішньокорпоративне поширення без ліміту, вимагає Enterprise-сертифіката Apple за $299/рік) і TestFlight (до 10 000 тестувальників, безкоштовно, не вимагає збору UDID). TestFlight — оптимальний вибір для бета-тестування, Ad Hoc підходить для пристрій-специфічних тестів, Enterprise — для корпоративних додатків.
Процес публікації білда через TestFlight складається з п’яти кроків: збірка в Xcode, завантаження в App Store Connect через Archive Organizer, обробка Apple, запрошення тестувальників, встановлення додатка через додаток TestFlight. Кожен крок займає від кількох хвилин до години залежно від складності проекту.
Білд має бути зібраний з distribution-сертифікатом і коректним provisioning profile. Apple перевіряє: дійсність сертифіката, відповідність bundle identifier, відсутність приватних API, коректність іконок (1024×1024) та наявність App Store іконки. Якщо білд не проходить перевірку — TestFlight показує помилку з описом проблеми.
Після завантаження білд проходить через автоматизовану перевірку Apple: статичний аналіз бінарного коду, перевірка цифрового підпису, сканування на використання приватних API та шкідливого ПЗ. Обробка займає від 15 хвилин до 2 годин для першого білда і зазвичай 15–30 хвилин для наступних. Статус обробки відображається в Activity в App Store Connect.
// Налаштування TestFlight у Swift AppDelegate
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// Перевірка: чи встановлено додаток через TestFlight
if Bundle.main.appStoreReceiptURL?.lastPathComponent
== "sandboxReceipt" {
print("Бета-версія через TestFlight")
}
return true
}
}
TestFlight поділяє тестувальників на дві групи: внутрішні (Internal Testers) і зовнішні (External Testers). Різниця — в кількості учасників, доступі до білдів і необхідності рев’ю від Apple. Правильний вибір групи прискорює процес тестування та дотримується політик App Store.
До 100 учасників зі складу команди Apple Developer Program. Для запрошення внутрішнього тестувальника достатньо додати його Apple ID в App Store Connect — він одразу отримує доступ до всіх білдів. Не потрібне рев’ю Apple. Ідеально для щоденного smoke-тестування та перевірки фіч на ранніх стадіях.
До 10 000 учасників, які не входять до команди розробки. Перший білд для зовнішніх тестувальників проходить базове рев’ю Apple (зазвичай 1–2 дні). Наступні білди зі змінами, що не зачіпають ключову функціональність, можуть проходити без повторного рев’ю. Зовнішні тестувальники запрошуються через email або публічне посилання.
| Параметр | Internal Testers | External Testers |
|---|---|---|
| Макс. кількість | 100 | 10 000 |
| Рев’ю Apple | Не потрібно | Перший білд — обов’язково |
| Запрошення | Apple ID з команди | Email / публічне посилання |
| Термін дії білда | 90 днів | 90 днів |
| Доступ до білдів | До всіх одразу | Тільки активні групи |
Завантаження білда в TestFlight виконується через Xcode, Application Loader або командний рядок за допомогою xcrun. Найпоширеніший спосіб — через Xcode Archive Organizer після створення архіву проекту. Альтернативний спосіб — автоматизація через Fastlane для CI/CD Pipeline.
Зберіть архів (Product → Archive), відкрийте Organizer, виберіть архів і натисніть Distribute App. Виберіть TestFlight як метод поширення, вкажіть сертифікат і provisioning profile. Xcode завантажить білд в App Store Connect, де він з’явиться після обробки. Весь процес займає 10–20 хвилин для першого завантаження.
Fastlane — найпопулярніший інструмент для автоматизації завантаження білдів у TestFlight. Команда fastlane pilot завантажує білд і керує тестувальниками без відкриття Xcode. Інтеграція Fastlane з CI/CD сервером дозволяє публікувати білди в TestFlight автоматично після проходження всіх тестів.
# Fastfile — завантаження білда в TestFlight
default_platform(:ios)
lane :beta do
# Отримання сертифікатів через match
match(type: "appstore")
# Збірка та підписання
build_app(
scheme: "MyApp",
export_method: "app-store",
workspace: "MyApp.xcworkspace"
)
# Завантаження в TestFlight
pilot(
skip_waiting_for_build: true,
distribute_external: false,
notify_external_testers: false
)
end
Fastlane pilot автоматично завантажує IPA в App Store Connect, очікує обробки (якщо skip_waiting_for_build = false) і призначає білд вибраним групам тестувальників. Команда distribute_external: true негайно надсилає білд зовнішнім тестувальникам після обробки.
Без Fastlane можна використовувати xcrun: xcrun altool --upload-app --file path/to/app.ipa --username YOUR_APPLE_ID --password @keychain:AC_PASSWORD. altool підтримується Apple для CI-середовищ і не потребує графічного інтерфейсу. Пароль передається через keychain або пароль, специфічний для додатка — не використовуйте паролі у відкритому тексті.
TestFlight надає кілька механізмів зворотного зв’язку: вбудована форма відгуку, автоматичний збір звітів про збої, метрики використання та скріншоти. Команда отримує всі дані в App Store Connect без необхідності впроваджувати сторонні SDK для бета-тестування.
Тестувальник відкриває додаток TestFlight, вибирає ваш білд і натискає Send Feedback. Форма дозволяє надіслати текстовий відгук, прикріпити скріншот і вказати серйозність. Усі відгуки збираються в App Store Connect у розділі TestFlight → Feedback. Розробник може відповісти на відгук, і тестувальник отримає сповіщення в додатку TestFlight.
При падінні додатка TestFlight автоматично збирає звіт про збій: стек викликів, версію ОС, модель пристрою та час падіння. Звіти про збої доступні в Xcode Organizer (Crashes) і App Store Connect (TestFlight → Crashes). Для отримання символізованих звітів про збої необхідно завантажити dSYM-файли разом з білдом або окремо через Xcode.
TestFlight показує метрики: кількість встановлень, активних тестувальників, сесій і збоїв. Аналітика оновлюється щодня та допомагає оцінити залученість тестувальників. Якщо за тиждень жоден тестувальник не відкрив додаток — варто переглянути комунікацію з групою або якість білда.
TestFlight є невід’ємною частиною процесу публікації в App Store. Той самий білд, який пройшов бета-тестування через TestFlight, може бути відправлений на рев’ю Apple без перезбірки — достатньо натиснути кнопку в App Store Connect. Це виключає ризик того, що продакшн-білд відрізняється від протестованого.
У App Store Connect виберіть білд, який пройшов тестування, і натисніть Submit for Review. Apple використовує той самий білд з TestFlight — повторне завантаження не потрібне. Час рев’ю зазвичай становить 1–3 дні. Якщо білд відхилено — виправте зауваження, завантажте новий білд у TestFlight і повторіть процес.
Рекомендується після фінального раунду тестування в TestFlight зачекати 24–48 годин перед відправкою на рев’ю. Цей час дозволяє тестувальникам виявити критичні баги, які можуть пройти автоматичні тести. Release candidate (RC) білд у TestFlight — стандарт практики зрілих iOS-команд.
TestFlight білди автоматично стають недоступними для нових встановлень після виходу релізної версії в App Store. Тестувальники, які вже встановили бета-версію, можуть продовжувати її використовувати протягом 30 днів після публікації релізу, після чого додаток перестає відкриватися. Переконайтеся, що тестувальники оновилися до версії App Store.
Часті запитання
TestFlight повністю безкоштовний для учасників Apple Developer Program ($99/рік). За використання сервісу не стягується додаткова плата, незалежно від кількості білдів і тестувальників. Платите тільки за підписку розробника Apple — TestFlight включено в неї за замовчуванням.
Ні, TestFlight — ексклюзивний сервіс екосистеми Apple. Для Android існує аналогічний інструмент — Google Play Console — Internal Testing та Open Testing треки. Для публікації бета-версій на Android також використовуються Firebase App Distribution і DeployGate.
Обробка займає від 15 хвилин до 2 годин для першого білда після завантаження. Наступні білди обробляються швидше — зазвичай 15–30 хвилин. Час обробки залежить від завантаження серверів Apple. Статус можна відстежувати в App Store Connect у розділі Activity.
Кожен білд доступний для тестування 90 днів з моменту завантаження. Кількість білдів не обмежена, але активними можуть бути не більше 30 білдів одночасно. Старі білди автоматично видаляються після закінчення терміну дії або при досягненні ліміту.
Для участі в тестуванні через TestFlight потрібен Apple ID. Зовнішні тестувальники запрошуються через email-посилання — при першому відкритті посилання система запропонує створити Apple ID, якщо його ще немає. Публічне посилання також доступне для поширення в соцмережах або блозі.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також