С чего все начинается
Рассмотрим шаги, которые необходимо проделать разработчику iOS-приложения и тестеру, чтобы наладить между собой канал разработки, тестирования и получения отчетов без использования специлизированных систем тестирования.
Доставка приложения тестерам
Тестеру необходимо, чтобы разрабатываемое Вами приложение было установлено на его устройстве. Как правило, делаете всю предварительную работу Вы сами: в лучшем случае Вы настроили автоматическую сборку c AdHoc-сертификатом, тестер в час X скачивает сборку и устанавливает ее на свое устройтво путем синхранизации через iTunes или с помощью Configuration Utility. В худшем случае Вы сами отправляете сборку письмом или загружая на определенный ресурс.
Тестирование
Тестер должен тщательно проверить приложение, отложить устройство и завести пару багов в баг-треккере и, если приложение вылетело в процессе тестирования, приложит парочку crash-файлов. Тестер может быть не один, и тогда количество созданных задач в треккере возрастет, если тестеры никак с собой не взаимодействуют. А такое бывает.
Доработка
Прочитав все, что создано после этого в баг-треккере, Вы приступаете к исправлению. И процесс повторяется до тех пор, пока вы все не исправите.
Проблемы такого подхода
На первом этапе проблемы — это все что находится между вашим финальным коммитом в репозиторий до установки приложения на устройство тестера. Ручные скачивания тестерами сборок, синхранизация с айтюнсом, установки через Configuration Utility, — все это рутина, которую нужно убрать.
На шаге тестирования проблема следующая. Тестер тратит время на создание задачи в треккере, прикладыванию к ней краш-лога. Крашлоги могут быть из-за одной ошибки, что может привести к дублирования задачи в треккере.
Уверен, что часть из вас так разрабатывает приложения прямо сейчас.
Что поможет?
За время развития современной индустриции мобильной разработки придумано ни одно средство, позволяющее свести к минимуму описанные выше затраты, если не убрать их полностью. Что если парой кликов «опубилковать тестерам» и «установить» приложение будет установлено на устройствах всех тестеров?
Такие решения есть.
К основным таким решениям на данный момент можно отнести TestFlight и HockeyApp.
Как начать работу
Начало работы с такими системами примерно одинаково и состоит из следующих шагов:
- Вы создаете аккаунт на сайте системы и получаете Ваш уникальный ключ, который необходимо использовать в коде;
- Скачиваете SDK системы, подключаете его к вашему проекту;
- Вставляете пару строк кода, инициализирующий систему внутри Вашего приложения;
- Собираете приложение и загружаете его на сайт системы. Также есть возможность загружать сборку post-запросом на сайт, это может быть частью вашей системы автоматической сборки;
- Рассылаете всем своим тестерам приглашения в группу разбратотки на сайте системы;
- При регистрации своих устройств, тестеры автоматически внесут UUID'ы своих устройств, которые Вы сможете получить отдельным файлом, который можно будет загрузить в разделе Устройства в Provisioning Portal;
Это занимает пять минут. Теперь от финального коммита до установки приложения на устройство тестера — два действия.
Тестерам в час X приходит письмо:
Нажав на 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