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 апликације. Сваки корак траје од неколико минута до сат времена у зависности од сложености пројекта.
Билд мора бити направљен са 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("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). За добијање symbolicated 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. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође