Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight

в 9:16, , рубрики: iOS, mobile development, testflight, Блог компании Аркадия, дистрибуция, мобильные приложения, разработка, разработка под iOS, распространение, тестирование, Тестирование мобильных приложений

Вступление

С каждым годом становится всё очевиднее, что для распространения тестовых версий 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 не требуется.

Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight - 1
Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight - 2
Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight - 3

Оценка: 8/10.

Основной функционал

Если сравнивать новую версию TestFlight с тем, что было доступно разработчикам ранее в рамках стандартных сервисов Apple, то она, в чем-то, несомненно, является шагом вперед. Так, например, количество тестеров увеличено с условных 100 до 1125 (из которых 100 — это доступные и раньше устройства для AdHoc распространения, 25 — это внутренние тестировщики (Internal Testers), а 1000 — внешние (External Testers)), причем если ранее привязка осуществлялась к устройству, то теперь уникальным идентификатором является Apple ID, а значит каждый тестер может проверить работу приложения на всех доступных ему (и, конечно, поддерживаемых приложением) устройствах.

Разница между внутренними и внешними тестировщиками заключается в дополнительном шаге, который добавляется во втором случае: тестовая версия приложения должна быть отправлена для обзора и одобрена специалистами Apple (Beta App Review). Причем первоначальный обзор будет проводиться более тщательно, а все последнующие могут проходить быстрее (но не обязательно). Это, конечно, накладывает определенные ограничения на процесс разработки и требует дополнительного планирования фаз тестирования приложения, с учетом неопределенности сроков прохождения обзора (как и в случае с обычным обзором приложений перед публикацие в AppStore, при отказе в публикации, повторная заявка рассматривается снова в порядке очереди).

Но есть другие особенности, которые отличают решение Apple от альтернативных, увы, не в лучшую сторону:

  • Приложение-клиент сервиса может быть установлен только на iOS 8.0 и выше, соответственно нет возможности тестировать приложения на устройствах с iOS предыдущих версий.
  • Для распространения тестовых версий необходимо создать AppStore Distribution provisioning profile и настроить профиль приложения в iTunes Connect.
  • Так как загрузка дистрибутива приложения осуществляется через стандартный визард Xcode -> Archive -> Export, необходимо чтобы проект приложения содержал 3 основных иконки.

Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight - 4

  • Количество приложений, одновременно доступных для тестирование ограничено 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.

Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight - 5

Иконка обновленного приложения TestFlight (правильнее будет сказать, что это абсолютно новое native приложение, разработанное в Apple). Ниже пример иконки тестовой версии приложения — оранжевая “точка” позволяет определить, что это не версия из AppStore.

Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight - 6

“Страховка” Apple от обвинений в распространении спама.

Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight - 7

Apple не разрешает загрузку дистрибутивов без изменения версии или номера сборки.

Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight - 8

Достаточно лаконичная и понятная страница администрирования версий приложения для тестирования.

Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight - 9

Письмо-приглашение для участия в тестировании, HTML-форматирование не слишком оптимизировано для мобильных платформ (справедливости ради, хочу отметить, что приложение Mail отображает такие письма корректно, но письма от других сервисов отображаются нормально и в OWA).

Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight - 10

Приложение TestFlight: информация о доступном для тестирования приложении.

Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight - 11

Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight - 12

Приложение TestFlight единственное умеет определять результат установки тестовой версии (кнопка Install поменялась на Open) — преимущество, полученное с переходом к Apple.

Сервисы дистрибуции мобильных приложений для iOS. Часть 1: TestFlight - 13

Письмо с отправленным из приложения TestFlight отзывом. Кроме скудного форматирования и невозможности добавить вложения, можно отметить еще один недостаток: отправленные отзывы попадают только в почтовый ящик, в iTunes Connect эта информация не сохраняется и недоступна.

Резюмируя, можно сказать, что обновленная версия TestFlight просто работает. В данный момент она не имеет особых конкурентных преимуществ (речь идёт о функционале, а не неоспоримом преимуществе — принадлежности компании Apple, которое пока в большей мере является потенциалом).

Оценка: 6/10.

Дополнительный функционал

На данный момент, к сожалению, компания Apple берет только числом, а не умением. Из явного преимущества можно отметить разве что гораздо большее количество бета-тестеров, которое можно задействовать для внешнего тестирования: на порядок больше, чем у всех остальных альтернативных решений (причина ясна: компания сама контролирует условия распространения приложений и имеет преимущество перед решениями третьих сторон).

Оценка: 0/10.

Continuous Integration

Примечание: описанные далее нюансы использования сервисов как части непрерывной интеграции (continuous integration) в данном обзоре подразумевают, что она будет делаться на основе решения, предлагаемого компание Apple. То есть при помощи Mac OS X Server и Xcode bots — подробно на организации такой интеграции я не буду останавливаться, возможно это станет темой для отдельной статьи. Желающие могут ознакомиться с темой самостоятельно, например, обратившись к официальному руководству от Apple.

Каким бы странным это не казалось, но на данный момент не существует возможности для публикации приложений в Apple TestFlight в автоматическом режиме. Я надеюсь, что этот большой недостаток будет исправлен компанией в одном из ближайших крупных обновлений Xcode, тем более что в оригинальном TestFlight такая возможность имелась.

Оценка: 0/10.

Итого суммарная оценка по всем разделам: 14 баллов.

Продолжение следует...

Автор: sman

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js