TestFlight: як протестувати застосунок для iPhone
Автор: Mehdi Azizi
Оновлено , 8 хв
Внутрішні й зовнішні тестувальники, бета-перевірка, публічне посилання, збірки на 90 днів: TestFlight простими словами і що перевірити перед Apple.
Що таке TestFlight і навіщо він потрібен?
TestFlight це сервіс Apple, який дає змогу встановити твій застосунок на справжні iPhone ще до виходу в App Store. Ти завантажуєш збірку в App Store Connect, запрошуєш тестувальників, а вони встановлюють її через застосунок TestFlight, безкоштовний в App Store. Тестувальники бувають двох типів: внутрішні, до 100 учасників твоєї команди, без перевірки Apple; і зовнішні, до 10 000 людей, яких запрошують електронною поштою або за публічним посиланням, після бета-перевірки твоєї першої збірки. Кожну збірку можна тестувати 90 днів.
| Критерій | Внутрішні тестувальники | Зовнішні тестувальники |
|---|---|---|
| Максимальна кількість | 100 | 10 000 |
| Доступ до твого акаунта | Так, з роллю | Ні |
| Запрошення | Додавання до внутрішньої групи | Email або публічне посилання |
| Бета-перевірка Apple | Немає | На першій збірці |
| Для кого | Ти, партнер, близька людина | Друзі, перші користувачі |
Щоб користуватися TestFlight, потрібен платний акаунт Apple Developer: із безкоштовним акаунтом сервіс недоступний. Увесь цей гайд виходить з того, що він у тебе є, за стандартною програмою: корпоративна програма Apple доступу до TestFlight не дає.
У моїх застосунках кожна збірка, надіслана через EAS Submit, проходить через TestFlight і мій iPhone, перш ніж піти на перевірку. Саме там я знаходжу проблеми, яких не видно під час розробки.
Як надіслати збірку в TestFlight
Збірка це скомпільована й підписана версія твого застосунку: якщо підпис неправильний, Apple відхилить її під час завантаження з помилкою ITMS-90034. Щоб вона з'явилася в TestFlight, її треба надіслати в App Store Connect. З Expo це eas build --platform ios, потім eas submit --platform ios, з достатньо свіжим образом збірки, щоб уникнути ITMS-90725. Згідно з документацією Expo, збірка з'являється в TestFlight після обробки в Apple, зазвичай за 10-15 хвилин. Усе це можна зробити з ПК: гайд як опублікувати iOS-застосунок без Mac описує весь ланцюжок.
Дві деталі часто блокують усе першого разу:
- Номер збірки має змінюватися при кожному завантаженні. Apple не приймає дві збірки з однаковим номером для однієї версії. В EAS увімкни автоматичне збільшення, і можна про це забути.
- Питання про шифрування. Поки ти не відповів на питання про використання шифрування, збірка висить зі статусом відсутньої відповідності (Missing Compliance). Можна відповідати щоразу в App Store Connect або один раз прописати це в конфігурації застосунку.
Внутрішні тестувальники: твоя команда, без очікування
Внутрішні тестувальники це користувачі твого акаунта App Store Connect із призначеною роллю. Apple дозволяє до 100 таких людей, і кожен може встановити застосунок на кілька пристроїв, до 30.
Їхня головна перевага: жодної бета-перевірки. Щойно збірка закінчила обробку без автоматичної помилки на кшталт ITMS-90717, ти додаєш її у внутрішню групу, і вона доступна. Це правильна група для тебе, а також для партнера чи близької людини, яким ти даєш доступ до свого акаунта.
Їхнє обмеження: їх треба додати як користувачів твого акаунта App Store Connect. Для незнайомих людей це не підходить.
Зовнішні тестувальники і бета-перевірка
Зовнішнім тестувальникам не потрібен жоден доступ до твого акаунта. Можна запросити до 10 000 людей, електронною поштою або за публічним посиланням. Це правильна група для друзів, перших користувачів, спільноти.
Натомість Apple перевіряє збірку, перш ніж відкрити її для них. Коли ти додаєш першу збірку версії до зовнішньої групи, вона йде на бета-перевірку. Наступні збірки тієї ж версії не обов'язково потребують повної перевірки.
Перед цим App Store Connect попросить інформацію для тестування:
- опис бети, який підказує тестувальникам, на що дивитися;
- email для відгуків;
- твої контакти, щоб Apple могла з тобою зв'язатися.
Бета-перевірка це не перевірка App Store. Збірку, прийняту в TestFlight, усе ще можуть відхилити під час публікації.
Бета-перевірка дивиться, чи збірка відповідає правилам, а фінальна перевірка ще й оцінює твою сторінку, підписки, юридичні тексти й увесь досвід користувача. Пам'ятай про типові причини відмови, описані в статті чому Apple відхиляє застосунок.
Запрошення тестувальників за публічним посиланням
Публічне посилання це найпростіший спосіб дати протестувати застосунок людям, яких ти ще не знаєш. Ось інструкція Apple з англійськими назвами елементів інтерфейсу:
- В App Store Connect відкрий свій застосунок, потім вкладку TestFlight.
- У розділі External Testing вибери зовнішню групу.
- Натисни Create Public Link.
- Вибери Open to Anyone, щоб відкрити посилання для всіх, або Filter by Criteria, щоб обмежити його певними пристроями й версіями iOS.
- За бажанням задай ліміт тестувальників через Set Limit.
Далі ділишся посиланням де завгодно: повідомлення, соцмережа, email. Людина встановлює застосунок TestFlight, відкриває посилання й приймає запрошення.
Дві речі, які варто знати, перш ніж поширювати його широко:
- Задай ліміт. Якщо посилання розлетиться більше, ніж ти планував, ти збережеш контроль над кількістю тестувальників.
- Тестувальники за публічним посиланням анонімні. App Store Connect показує для них лише дату встановлення, сесії та збої. Якщо хочеш знати, хто що тестував, краще запрошуй через email.
Скільки живе збірка TestFlight?
Збірка доступна тестувальникам 90 днів. Після цього вона спливає, і тестувальники вже не можуть її відкрити. Якщо бета триває довше, просто надішли нову збірку до кінця терміну.
На практиці ти надсилатимеш нові збірки значно частіше: після кожного важливого виправлення. Кожну нову збірку, додану до групи, пропонують твоїм тестувальникам, і вони отримують її в застосунку TestFlight.
Як збирати відгуки тестувальників
У TestFlight є вбудована система відгуків: тестувальник робить знімок екрана у твоєму застосунку, може додати позначки й надіслати тобі. Якщо застосунок падає, ти отримуєш звіт про збій, а тестувальник може додати контекст. Усе це є в App Store Connect.
Це корисно, але для розуміння конкретного збою цього мало. У свої застосунки я додаю Sentry, який показує помилку з рядком коду, що її спричинив, і PostHog, який показує, де користувачі кидають застосунок. Обидва працюють і у збірці TestFlight, і в продакшені.
Тестування підписок у TestFlight
Якщо твій застосунок продає підписку, саме в TestFlight ти перевіряєш, що вона справді працює. Покупки у збірці TestFlight проходять через тестове середовище Apple: з тестувальників гроші не списуються. Поновлення прискорені: кожна підписка поновлюється раз на день, не більше шести разів за тиждень, незалежно від її реальної тривалості.
Перевір щонайменше, що ціни на екрані правильні, що покупка справді розблоковує застосунок і що кнопка відновлення знаходить підписку після перевстановлення. Я використовую RevenueCat для підписок у своїх застосунках; усе налаштування, від продуктів в App Store Connect до paywall, описане на сторінці підписки in-app в iOS.
Що протестувати перед надсиланням в Apple
Це список, яким я користуюся перед кожним надсиланням на перевірку. Кожен пункт відповідає причині відмови або збою, якого можна уникнути.
Перший запуск
- Видали застосунок, перевстанови його з TestFlight, відкрий. Саме так зробить рев'юер.
- Пройди онбординг повністю, нічого не пропускаючи.
- Відхили кожен дозвіл (сповіщення, камера, геолокація) і переконайся, що застосунок далі працює.
Гроші
- Paywall показує ціни, тривалість і посилання на умови використання та політику конфіденційності.
- Покупка працює, відновлення теж.
- Усі налаштовані продукти видно рев'юеру: guideline 2.1 вимагає, щоб вбудовані покупки були повними, видимими й робочими.
Складні умови
- Режим польоту й повільна мережа: зрозуміле повідомлення, а не білий екран.
- Найменший iPhone, який ти підтримуєш, і найбільший: нічого не обрізано, нічого не закрито клавіатурою. Саме обрізаний екран на маленькому iPhone коштував мені відмови для Solys.
- Довгі тексти, якщо застосунок перекладено.
Пакет для рев'юера
- Якщо застосунок вимагає входу, демо-акаунт у нотатках для перевірки, з увімкненим бекендом. Guideline 2.1 прямо цього вимагає.
- Нотатки для перевірки, які у двох реченнях пояснюють, що робить застосунок і де знайти головну функцію.
Якщо застосунок усе одно відхилили, сторінка застосунок відхилено Apple пояснює, як відповісти, не втративши тиждень. А загальну картину публікації, від сторінки до релізу, дивись у статті як опублікувати застосунок в App Store.
Таблиця приймального тестування для твоєї збірки
Завантаж таблицю з 16 сценаріїв у форматі CSV. У ній окремо розписані підготовка, дія, очікуваний результат і зафіксований доказ. Імпортуй її в Numbers, Excel або Google Sheets, потім заповни версію, пристрій і результат кожної спроби.
Для вигаданого читацького щоденника «зберегти сторінку» не достатньо: запиши сторінку 24, повністю закрий застосунок, запусти знову й знайди це значення. Тест, який не виконали, лишається «Протестувати». Якщо у застосунку немає підписки, познач сценарії покупок як «Не застосовується» з цією причиною.
Таблиця це відправна точка, яку треба адаптувати, а не сертифікація. Там же знайдеш нотатки для App Review та інші безкоштовні шаблони, щоб пояснити рев'юеру шлях, який ти справді перевірив.
Від TestFlight до App Store
TestFlight це етап, коли твій застосунок стає реальним: він працює на справжньому iPhone, у руках справжніх людей. У маршруті iOS Kit це другий етап: зібрати ядро застосунку й протестувати його на своєму iPhone через TestFlight, перш ніж підключати підписки й готувати публікацію.
Після TestFlight іде перевірка Apple: Apple Review Kit містить мій чекліст перед надсиланням і нотатки для рев'юера. На головній показано чотири етапи, щоб створити свій мобільний застосунок з Claude Code.
Ніхто не може гарантувати, що Apple прийме твій застосунок: рішення ухвалює Apple.
Поширені запитання
Як протестувати застосунок для iPhone через TestFlight?
Надішли збірку в App Store Connect, потім додай її до групи тестувальників. З Expo ти компілюєш її через EAS Build і надсилаєш через EAS Submit: вона з'являється в TestFlight після обробки в Apple, зазвичай за 10-15 хвилин, за даними Expo. Тестувальники встановлюють її через застосунок TestFlight, безкоштовний в App Store. Потрібен платний акаунт Apple Developer.
Як створити посилання TestFlight для запрошення тестувальників?
В App Store Connect відкрий вкладку TestFlight свого застосунку, вибери групу в розділі External Testing і натисни Create Public Link. Вибери Open to Anyone або Filter by Criteria, потім задай ліміт через Set Limit. Тестувальники за публічним посиланням анонімні: якщо хочеш знати, хто що тестував, краще запрошуй їх через email.
Чи замінює бета-перевірка TestFlight перевірку App Store?
Ні. Бета-перевірка дивиться, чи збірка відповідає правилам, а фінальна перевірка ще й оцінює твою сторінку, вікову категорію, підписки, юридичні тексти й увесь досвід користувача. Тож збірку, прийняту в TestFlight, усе ще можуть відхилити під час публікації. Бета-перевірку запускають лише зовнішні тестувальники, на першій збірці версії: внутрішні не проходять жодної.
Скільки тестувальників можна запросити в TestFlight?
Можна запросити до 100 внутрішніх і до 10 000 зовнішніх тестувальників. Внутрішні це учасники твого акаунта App Store Connect, без бета-перевірки, і кожен може встановити застосунок на до 30 пристроїв. Зовнішніх запрошують через email або публічне посилання, після бета-перевірки першої збірки. Кожну збірку можна тестувати 90 днів.
Чи можна протестувати підписку в TestFlight без списання грошей?
Так, покупки у збірці TestFlight проходять через тестове середовище Apple: з тестувальників гроші не списуються. Поновлення прискорені: кожна підписка поновлюється раз на день, не більше шести разів за тиждень, незалежно від реальної тривалості. Перевір щонайменше ціни на екрані, розблокування застосунку й відновлення після перевстановлення. Повне налаштування описано на сторінці підписки in-app в iOS.
Що перевірити в TestFlight перед надсиланням застосунку в Apple?
Перевстанови застосунок з TestFlight, як це зробить рев'юер, і пройди онбординг повністю. Відхили кожен дозвіл, протестуй покупку й відновлення, потім спробуй режим польоту, найменший і найбільший iPhone, які ти підтримуєш. Якщо застосунок вимагає входу, підготуй демо-акаунт у нотатках для перевірки, з увімкненим бекендом.