- Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight
- TestFlight от Apple
- Регистрация и интеграция
- Основной функционал
- Дополнительный функционал
- Continuous Integration
- Beta Testing Made Simple with TestFlight
- Overview
- Internal testers
- External testers and groups
- Using email to invite testers
- Using public links to invite testers
- Test information
- Getting feedback
- TestFlight app
- Documentation and help
Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight
С каждым годом становится всё очевиднее, что для распространения тестовых версий iOS-приложений нужны специализированные сервисы. Это актуально не только для компаний, занимающихся разработкой приложений в “промышленных масштабах”, но и для инди-разработчиков. Причины: увеличение количества устройств с “нестандартным”/”не кратным” размером экрана, отличия в архитектуре центрального и графических процессоров — всё то, что раньше было повседневностью для разработки под Android, теперь становится справедливым и для iOS.
Исторически самым популярным сервисом дистрибуции являлся TestFlight — практически идеал, как в техническом отношении, так и в юзабилити. Однако, после приобретения компанией Apple в начале 2014 года, сервис претерпел ряд неоднозначных изменений, которые с одной стороны сказались негативно на его позиции лидера, а с другой дали шанс альтернативным сервисам побороться за первое место и предложить как минимум равноценную замену, а может быть и что-то более удобное и функциональное.
В своей серии статей я собираюсь поделиться результатами сравнения нескольких сервисов дистрибуции и в результате помочь другим, кто стоит перед таким же вопросом выбора.
В обзоре участвуют следующие сервисы (в таком порядке и будут публиковаться части обзора):
- Apple TestFlight
- HockeyApp
- Ubertesters
- Crashlytics (как часть Fabric)
TestFlight старой версии не будет рассмотрен, так как хотя он по-прежнему работает и доступен по адресу www.testflightapp.com, использование его в долгосрочной перспективе не имеет смысла по ряду причин:
- нет никаких гарантий, что Apple не приостановит или не прекратит его работу в любой момент
- SDK сервиса не доступно для скачивания, более того невозможно использовать сервис, если приложение использует SDK
- сервис больше не является кросс-платформенным, поддерживается только распространения приложений для iOS (подробнее)
Важно! Буквально накануне публикации статьи команда TestFlight (старой версии) разослала уведомление, в котором сообщается, что старый сервис прекратит свою работу 26 февраля 2015 года (подробности).
Система оценки: сервисы будут оценены по 10-балльной шкале по каждому из разделов (Регистрация и интеграция, Основной функционал, Дополнительный функционал, Continuous Integration). Суммарная оценка позволит определить победителя (итоговое заключение войдет в последнюю часть обзора).
TestFlight от Apple
Регистрация и интеграция
Для использования сервиса кроме аккаунта разработчика (iOS Developer Program) необходимо получить доступ к iTunesConnect. Функционал зависит от роли (группы), к которой относится используемый аккаунт iTunesConnect. Пользователи из группы Technical могут:
- включать/отключать режим TestFlight Beta Testing для приложений (вкладка Prerelease)
- выбирать тестеров из списка доступных Internal Testers, но не имеют возможности формировать этот список на странице iTunes Connect -> Users and Roles -> TestFlight Beta Testers -> Internal
- формировать список внешних тестеров My Apps -> APP -> Prerelease -> External Testers (но для распространения версий для внешних тестеров приложение должно пройти ревью в Apple)
Пользователи из группы Admin обладают теми же правами, что и пользователи группы Technical, а также могут добавлять новых пользователей в список Internal Testers.
На данный момент установка или использование какого-либо специализированного SDK не требуется.
Основной функционал
Если сравнивать новую версию TestFlight с тем, что было доступно разработчикам ранее в рамках стандартных сервисов Apple, то она, в чем-то, несомненно, является шагом вперед. Так, например, количество тестеров увеличено с условных 100 до 1125 (из которых 100 — это доступные и раньше устройства для AdHoc распространения, 25 — это внутренние тестировщики (Internal Testers), а 1000 — внешние (External Testers)), причем если ранее привязка осуществлялась к устройству, то теперь уникальным идентификатором является Apple ID, а значит каждый тестер может проверить работу приложения на всех доступных ему (и, конечно, поддерживаемых приложением) устройствах.
Примечание (от 15 июня 2015): количество устройств, доступных при использовании AdHoc provision profiles с с 8 июня 2015 года было изменено со 100 суммарно, на 100 на каждое семейство устройств (изменение произошло после объявления на WWDC об объединении всех developers programs в одну).
Разница между внутренними и внешними тестировщиками заключается в дополнительном шаге, который добавляется во втором случае: тестовая версия приложения должна быть отправлена для обзора и одобрена специалистами Apple (Beta App Review). Причем первоначальный обзор будет проводиться более тщательно, а все последнующие могут проходить быстрее (но не обязательно). Это, конечно, накладывает определенные ограничения на процесс разработки и требует дополнительного планирования фаз тестирования приложения, с учетом неопределенности сроков прохождения обзора (как и в случае с обычным обзором приложений перед публикацие в AppStore, при отказе в публикации, повторная заявка рассматривается снова в порядке очереди).
Но есть другие особенности, которые отличают решение Apple от альтернативных, увы, не в лучшую сторону:
- Приложение-клиент сервиса может быть установлен только на iOS 8.0 и выше, соответственно нет возможности тестировать приложения на устройствах с iOS предыдущих версий.
- Для распространения тестовых версий необходимо создать AppStore Distribution provisioning profile и настроить профиль приложения в iTunes Connect.
- Так как загрузка дистрибутива приложения осуществляется через стандартный визард Xcode -> Archive -> Export, необходимо чтобы проект приложения содержал 3 основных иконки.
- Количество приложений, одновременно доступных для тестирование ограничено 10.
- Сервис работает очень медленно, это касается как скорости обновления списка доступных приложений и их версий, так и скорости скачивания/установки приложений на тестовые устройства.
- Отправка отзыва с тестового устройства осуществляется при помощи приложения-клиента, но так как это обычное письмо, нет возможности прикрепить скриншот (как плюс можно отметить, то что в письмо автоматически вставляется блок с описанием характеристик тестового устройства).
- Возможность отправки отзыва появляется только, если в iTunes Connect в настройках версии имеется указание, что именно требуется протестировать (а если не будет указан адрес электронной почты для получения отзывов, то поле “To” в письме окажется незаполненным).
- Для тестирования может быть доступна только одна версия приложения (тестер не имеет возможность для выбора, настройки доступности делаются в профиле приложения в iTunesConnect).
- Поле “Feedback Email” в настройках версии приложения в iTunesConnect приходится заполнять каждый раз (логичней было бы запоминать, оставляя возможность для редактирования).
- Как не удивительно, но TestFlight в версии от Apple не является сервисом, работающим по принципу 24х7, например в конце декабря при попытке входа в iTunesConnect можно было увидеть такое сообщение: iTunes Connect is unavailable until December 29. (справедливости ради, стоит отметить, что подобные “каникулы” Apple устраивает ежегодно и рассылает уведомление за неделю до их наступления).
Однако есть и некоторые уникальные возможности: так, например, клиент сервиса (приложение TestFlight) единственный, кто наверняка знает статус установки тестовой версии, альтернативные решения попросту не имеют возможности использовать системные функцие, позволяющие реализовать подобное.
Примечание: статус установки — смена индикации процесса установки, привычная пользователям AppStore. Когда поочередно статус меняется Get — Install — Installing — Open. В других сервисах дистрибуции эта цепочка выглядит так: Install — Installing — Install — приложения попросту не знают результат, был ли установлен тестовый дистрибутив или нет. В случае же с Apple TestFlight цепочка имеет привычный вид: Install — Installing — Open.
Иконка обновленного приложения TestFlight (правильнее будет сказать, что это абсолютно новое native приложение, разработанное в Apple). Ниже пример иконки тестовой версии приложения — оранжевая “точка” позволяет определить, что это не версия из AppStore.
“Страховка” Apple от обвинений в распространении спама.
Apple не разрешает загрузку дистрибутивов без изменения версии или номера сборки.
Достаточно лаконичная и понятная страница администрирования версий приложения для тестирования.
Письмо-приглашение для участия в тестировании, HTML-форматирование не слишком оптимизировано для мобильных платформ (справедливости ради, хочу отметить, что приложение Mail отображает такие письма корректно, но письма от других сервисов отображаются нормально и в OWA).
Приложение TestFlight: информация о доступном для тестирования приложении.
Приложение TestFlight единственное умеет определять результат установки тестовой версии (кнопка Install поменялась на Open) — преимущество, полученное с переходом к Apple.
Письмо с отправленным из приложения TestFlight отзывом. Кроме скудного форматирования и невозможности добавить вложения, можно отметить еще один недостаток: отправленные отзывы попадают только в почтовый ящик, в iTunes Connect эта информация не сохраняется и недоступна.
Резюмируя, можно сказать, что обновленная версия TestFlight просто работает. В данный момент она не имеет особых конкурентных преимуществ (речь идёт о функционале, а не неоспоримом преимуществе — принадлежности компании Apple, которое пока в большей мере является потенциалом).
Дополнительный функционал
На данный момент, к сожалению, компания Apple берет только числом, а не умением. Из явного преимущества можно отметить разве что гораздо большее количество бета-тестеров, которое можно задействовать для внешнего тестирования: на порядок больше, чем у всех остальных альтернативных решений (причина ясна: компания сама контролирует условия распространения приложений и имеет преимущество перед решениями третьих сторон).
Обновление (5 мая 2015): с релизом Xcode 6.3 разработчикам стал доступен Crashes Organizer. Новый функционал, несомненно, хороший признак того, что Apple продолжает развивать свои сервисы, но, к сожалению, компания всё ещё отстаёт от других сервисов:
When you open the Crashes organizer, Xcode begins refreshing the crash reports for your apps. Xcode downloads the top crash reports—crash reports with the most number of occurrences on unique devices—that occurred during the past two weeks. However, there may be up to a three day delay between when you first distribute your app and when crash reports are available in Xcode.
Три дня задержки и период архивного доступа в две недели выглядит несколько обескураживающе.
Continuous Integration
Примечание: описанные далее нюансы использования сервисов как части непрерывной интеграции (continuous integration) в данном обзоре подразумевают, что она будет делаться на основе решения, предлагаемого компание Apple. То есть при помощи Mac OS X Server и Xcode bots — подробно на организации такой интеграции я не буду останавливаться, возможно это станет темой для отдельной статьи. Желающие могут ознакомиться с темой самостоятельно, например, обратившись к официальному руководству от Apple.
Каким бы странным это не казалось, но на данный момент не существует возможности для публикации приложений в Apple TestFlight в автоматическом режиме. Я надеюсь, что этот большой недостаток будет исправлен компанией в одном из ближайших крупных обновлений Xcode, тем более что в оригинальном TestFlight такая возможность имелась.
Итого суммарная оценка по всем разделам: 15 баллов.
Источник
Beta Testing Made Simple with TestFlight
TestFlight makes it easy to invite users to test your apps and App Clips and collect valuable feedback before releasing your apps on the App Store. You can invite up to 10,000 testers using just their email address or by sharing a public link.
Overview
Take advantage of TestFlight by uploading a beta build of your app or App Clip to App Store Connect. Testers will use the TestFlight app to install your app and provide feedback. TestFlight supports apps for iOS, iPadOS, macOS, tvOS, watchOS, and iMessage, as well as automatic updates to ensure that testers always test the latest available build. Up to 100 apps can be tested at a time, internally or externally, and multiple builds can be tested simultaneously. Builds remain active for 90 days after upload.
Internal testers
You can designate up to 100 members of your team who hold the Account Holder, Admin, App Manager, Developer, or Marketing role as beta testers. You can also create multiple groups and add different builds to each one, depending on which features you want each group to focus on. While you iterate on your app, each member can quickly test beta builds on up to 30 devices and access all of your beta builds available for testing.
External testers and groups
Invite up to 10,000 external testers using their email addresses or by enabling and sharing a public link, which creates an open invitation for anyone to test your app. Simply create a group of testers and add the builds you’d like them to test. You can also create multiple groups and add different builds to each one, depending on which features you want them to focus on. Before testing can begin, the first build of your app must be approved by TestFlight App Review. This build is automatically sent for review when you add it to a group.
Using email to invite testers
If you know a tester’s email address, you can email them an invitation with a link to install your app and start testing. If you have an existing set of external testers or specific people you’d like to invite to test, email can be an effective way to share beta versions of your app.
Using public links to invite testers
Public links are an effective way to connect with people who can test your app if you don’t have an established group of testers. No contact information is needed. Simply go to your app’s TestFlight page, click an existing group, and click Enable Public Link. You can then copy the link and share it on social media, messaging platforms, email campaigns, and more. Remember not to localize the TestFlight name or create TestFlight badges to promote your app.
You can also limit the number of testers that can join using the public link. If the group limit is reached, or if you disable your public link, a message will notify anyone trying to join that your beta is no longer accepting new testers. To ensure a good user experience, be thoughtful about where you share your public link and when it may be appropriate to remove it.
Test information
When sharing your app with external testers, you’ll need to let them know what to test and any other important information relevant to testing. Provide these details on your app’s Test Information page in App Store Connect. You should also provide an email address that you monitor so you can receive and respond to feedback from testers. Test information is optional when distributing your app to internal testers.
Getting feedback
With the TestFlight app for iOS, iPadOS, and macOS, testers can send feedback directly from your app simply by taking a screenshot. They can also provide additional context about an app crash immediately after it occurs. You can view this feedback by going to your app’s TestFlight page in App Store Connect, and clicking Crashes or Screenshots in the Feedback section. Feedback from testers on iOS 12 or earlier, tvOS, or watchOS will be sent to the email address you provide in Test Information.
TestFlight app
When testers are invited to beta test your app, they’re prompted to install the TestFlight app from the App Store on their iPhone, iPad, iPod touch, Mac, or Apple TV if they don’t already have it installed. The TestFlight app makes installing betas simple, and you don’t need to keep track of UDIDs or provisioning profiles.
Documentation and help
For step-by-step instructions on creating groups, inviting testers, and adding builds in TestFlight, read App Store Connect Help.
Submit
Prepare your apps and metadata for submission to the App Store.
Promote
Get marketing guidance and tools to help you promote your app on the App Store.
Contact us
Have a question or request? We can help by phone or email.
Источник