Системы тестирования iOS-приложений

в 9:00, , рубрики: ios development, testflight, Блог компании Luxoft, разработка под iOS, метки: ,

С чего все начинается

Рассмотрим шаги, которые необходимо проделать разработчику iOS-приложения и тестеру, чтобы наладить между собой канал разработки, тестирования и получения отчетов без использования специлизированных систем тестирования.

Доставка приложения тестерам

Тестеру необходимо, чтобы разрабатываемое Вами приложение было установлено на его устройстве. Как правило, делаете всю предварительную работу Вы сами: в лучшем случае Вы настроили автоматическую сборку c AdHoc-сертификатом, тестер в час X скачивает сборку и устанавливает ее на свое устройтво путем синхранизации через iTunes или с помощью Configuration Utility. В худшем случае Вы сами отправляете сборку письмом или загружая на определенный ресурс.

Тестирование

Тестер должен тщательно проверить приложение, отложить устройство и завести пару багов в баг-треккере и, если приложение вылетело в процессе тестирования, приложит парочку crash-файлов. Тестер может быть не один, и тогда количество созданных задач в треккере возрастет, если тестеры никак с собой не взаимодействуют. А такое бывает.

Доработка

Прочитав все, что создано после этого в баг-треккере, Вы приступаете к исправлению. И процесс повторяется до тех пор, пока вы все не исправите.

Проблемы такого подхода

На первом этапе проблемы — это все что находится между вашим финальным коммитом в репозиторий до установки приложения на устройство тестера. Ручные скачивания тестерами сборок, синхранизация с айтюнсом, установки через Configuration Utility, — все это рутина, которую нужно убрать.

На шаге тестирования проблема следующая. Тестер тратит время на создание задачи в треккере, прикладыванию к ней краш-лога. Крашлоги могут быть из-за одной ошибки, что может привести к дублирования задачи в треккере.

Уверен, что часть из вас так разрабатывает приложения прямо сейчас.

Что поможет?

За время развития современной индустриции мобильной разработки придумано ни одно средство, позволяющее свести к минимуму описанные выше затраты, если не убрать их полностью. Что если парой кликов «опубилковать тестерам» и «установить» приложение будет установлено на устройствах всех тестеров?
Такие решения есть.

К основным таким решениям на данный момент можно отнести TestFlight и HockeyApp.
TestFlight
image

Как начать работу

Начало работы с такими системами примерно одинаково и состоит из следующих шагов:

  • Вы создаете аккаунт на сайте системы и получаете Ваш уникальный ключ, который необходимо использовать в коде;
  • Скачиваете SDK системы, подключаете его к вашему проекту;
  • Вставляете пару строк кода, инициализирующий систему внутри Вашего приложения;
  • Собираете приложение и загружаете его на сайт системы. Также есть возможность загружать сборку post-запросом на сайт, это может быть частью вашей системы автоматической сборки;
  • Рассылаете всем своим тестерам приглашения в группу разбратотки на сайте системы;
  • При регистрации своих устройств, тестеры автоматически внесут UUID'ы своих устройств, которые Вы сможете получить отдельным файлом, который можно будет загрузить в разделе Устройства в Provisioning Portal;

Это занимает пять минут. Теперь от финального коммита до установки приложения на устройство тестера — два действия.

Тестерам в час X приходит письмо:

image

Нажав на Install, тестер начинает процесс установки приложение с сервера, после чего может начинать свою работу.

Пример того, что Вам нужно добавить в Ваш исходный код для минимальной и необходимой работы TestFlight:

[TestFlight takeOff:@"YOUR_KEY"];

Это все. Вам необходимо это вставить в метод UIApplicationDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

Это все, что вашему приложению как клиенту SDK необходимо сделать для того, чтобы:

  • Шел учет сессий работы тестера с приложением;
  • Сессия содержит имя тестера, версию устройства и системы, время начала и окончания;
  • На сервера системы приходили crash-файлы в случае «вылета». Их можно в удобном виде просматривать прямо на сайте.

Отличие систем

По упоминаниям в сети, пожалуй, самая популярная система — TestFlight. Но HockeyApp имеет ряд преимуществ перед TestFlight:

Возможность TestFlight HockeyApp
Простота использования + +
Бесплатность +
Платный функционал будет только в будущем
-
Есть бесплатный триальный период
Upload API + +
Подключение баг-треккера для создания задач - +
JIRA и Redmine и др.
Скорость работы сайта ±
Частенько тормозит даже когда Там ночь
+
Open Source -
SDK доступна в виде .a — и .h — файлов
+

TestFlight самое популярныео решение в данной нише. Может быть, из-за нагрузки, может быть, по другим причинам серсис бывает недоступен, особенно в конце весны, когда много разработчиков проголосовали в пользу HockeyApp ногами.

Надеюсь, удалось показать, как подобные системы позволяют полностью избавить вас от рутины, которая ест время вашей команды, упростить сбор информации в время тестирования, упростить создание задач в баг-треккере, сгруппировать одинаковые проблемы. В общем, сделать все, чтобы облегчить вашу жизнь.

Впервые сталкнувшись с такими системами, люди обычно разводят руками и говорят: «Магия».

Автор: Silf

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