TestFlight — е официалната услуга на Apple за бета тестване на iOS, iPadOS, watchOS и tvOS приложения. Чрез TestFlight разработчиците разпространяват предиздателски билдове сред до 10 000 външни тестери, събират обратна връзка и crash доклади без необходимост от публикуване в 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 (вътрешнофирмено разпространение без ограничение, изисква Apple Enterprise сертификат за 299 USD/година) и TestFlight (до 10 000 тестери, безплатно, не изисква събиране на UDID). TestFlight е оптималният избор за бета тестване, Ad Hoc е подходящ за тестове, специфични за устройство, Enterprise — за корпоративни приложения.
Процесът на публикуване на билд чрез TestFlight се състои от пет стъпки: изграждане в Xcode, качване в App Store Connect чрез Archive Organizer, обработка от Apple, покана на тестери, инсталиране на приложението чрез приложението TestFlight. Всяка стъпка отнема от няколко минути до един час в зависимост от сложността на проекта.
Билдът трябва да бъде изграден с дистрибуционен сертификат и правилен 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("Beta version via 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 дни). Следващите билдове с промени, които не засягат основната функционалност, могат да преминат без повторен преглед. Външните тестери се канят чрез имейл или публична връзка.
| Параметър | Internal Testers | External Testers |
|---|---|---|
| Макс. брой | 100 | 10 000 |
| Преглед от Apple | Не се изисква | Първи билд — задължително |
| Покана | Apple ID от екипа | Имейл / публична връзка |
| Срок на билда | 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 или app-specific password — не използвайте пароли в обикновен текст.
TestFlight предоставя няколко механизма за обратна връзка: вградена форма за обратна връзка, автоматично събиране на crash логове, метрики на използване и екранни снимки. Екипът получава всички данни в App Store Connect без необходимост от внедряване на SDK на трети страни за бета тестване.
Тестерът отваря приложението TestFlight, избира вашия билд и натиска Send Feedback. Формата позволява изпращане на текстова обратна връзка, прикачване на екранна снимка и посочване на сериозност. Всички обратни връзки се събират в App Store Connect в раздела TestFlight → Feedback. Разработчикът може да отговори на обратната връзка и тестерът ще получи известие в приложението TestFlight.
При срив на приложението TestFlight автоматично събира crash доклад: стек на повикванията, версия на ОС, модел на устройството и време на срива. Crash логовете са достъпни в Xcode Organizer (Crashes) и App Store Connect (TestFlight → Crashes). За получаване на символизирани crash логове е необходимо да качите 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 USD/година). За използване на услугата не се начислява допълнителна такса, независимо от броя на билдовете и тестерите. Плащате само за абонамента на 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. Външните тестери се канят чрез имейл връзка — при първото отваряне на връзката системата ще предложи създаване на Apple ID, ако такъв все още няма. Публична връзка също е достъпна за споделяне в социални мрежи или блог.
Резюме
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също