Pull to refresh

Тестирование Adobe AIR приложений в системе HockeyApp

Reading time 5 min
Views 5.4K
Приветствую, друзья!

О чем статья


В этой статье будет дано поверхностное описание системы тестирования мобильных приложений HockeyApp. Я расскажу как пройти путь от написания кода в ActionScript, до получения логов в системе HockeyApp. И познакомлю с ANE библиотекой FPHockeyApp. Если вы знакомы с системами тестирования приложений, можете сразу перейти к примерам использования библиотеки FPHockeyApp.

Суть проблемы


Если вы разрабатываете мобильное приложение в одиночку, то вы наверняка ощущали дискомфорт от необходимости постоянно подключать разные устройства к компьютеру, чтобы закачать новую версию разрабатываемого приложения, для дальнейшего тестирования. Если же вы работаете в большой команде, то процесс раздачи тестовых сборок тестеровщикам, при ручном подходе превращается в ад… Системы автоматизированного тестирования приложений, вроде HockeyApp, предназначены для решения этой проблемы. Как оно работает, читайте дальше.



Как работает HockeyApp


Подробное описание всех возможностей системы HockeyApp вы найдете у них на сайте http://hockeyapp.net/. Если вкратце, то это работает следующим образом. Вы регистрируетесь на сайте hockeyapp.net как разработчик, и создаете приложение. После создания приложения вы получаете уникальный идентификатор APP_ID:
image

Также на сайте регистрируются все тестеры, а вы, как разработчик раздаете тестерам права на получение новых версий приложения. Полученный APP_ID необходимо применить в методе инициализации HockeyApp SDK. Собранный файл .ipa/.apk загружаем в hockeyapp.net:


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


Если по каким то причинам приложение у тестера упало, приложение может отправить логи на сайт для дальнейшего анализа на сайте HockeyApp:


По мимо стандартных логов операционной системы, вы можете передать на сервер свои собственные логи, облегчающие поиск бага, на сайте свои логи можно увидеть в разделе Data — Description:


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

Инициализация HockeyApp SDK


На сайте hockeyapp.net есть подробные инструкции по использованию SDK. Вам необходимо встроить несколько строк кода, вот пример для инициализации в iOS:

[[BITHockeyManager sharedHockeyManager] configureWithIdentifier:@"APP_ID"];
[[BITHockeyManager sharedHockeyManager] startManager];
[[BITHockeyManager sharedHockeyManager].authenticator authenticateInstallation];


Этого достаточно для минимальной работы с SDK.

Инициализация в AIR приложении с помощью FPHockeyApp.ane


Для работы с HockeyApp в AIR-приложении, необходимо подключить ANE-билиотеку FPHockeyApp, и добавить следующий код:

import ru.fp.hockeyapp.FPHockeyApp;
import ru.fp.hockeyapp.constants.BITAuthenticatorIdentificationType;
//
FPHockeyApp.instance.configureWithIdentifier('APP_ID');
FPHockeyApp.instance.startManager();
FPHockeyApp.instance.authenticateInstallation();


Чтобы в случае краха ваше приложение отправило логи на сервер, добавьте следующий код:
import ru.fp.hockeyapp.FPHockeyApp;
import ru.fp.hockeyapp.logger.FPhaLogger;
//
var logger:FPhaLogger = FPhaLogger.createInStorageDir('TestLog', 'loggs/myLog1.txt');
logger.add('my log record');
//
FPHockeyApp.instance.init();
FPHockeyApp.instance.setLogFilePath(logger.nativePath);
//
FPHockeyApp.instance.configureWithIdentifier('YOU_APP_ID');
FPHockeyApp.instance.startManager();
FPHockeyApp.instance.authenticateInstallation();


Класс FPhaLogger создает файл в файловой системе устройства, в котором хранятся логи. Вы можете использовать любой другой, удобный для вас, логгер, важно только передать в метод FPHockeyApp.instance.setLogFilePath() абсолютный путь до файла, где лежат логи.

По умолчанию когда приложение отправляет логи, на сервер не передается информация о том, от кого отправлены логи. Если же вы хотите знать, кто и когда из тестеров запустил приложение и у кого из них упало приложение, необходимо авторизовать пользователя. Делается это с помощью метода setIdentificationType():
import ru.flashpress.hockeyapp.FPHockeyApp;
import ru.flashpress.hockeyapp.constants.BITAuthenticatorIdentificationType;
//
FPHockeyApp.instance.configureWithIdentifier('APP_ID');
FPHockeyApp.instance.setIdentificationType(BITAuthenticatorIdentificationType.HOCKEY_APP_USER);
FPHockeyApp.instance.startManager();
FPHockeyApp.instance.authenticateInstallation();


Есть несколько способов авторизации пользователя:
  • BITAuthenticatorIdentificationType.ANONYMOUS — без авторизации, значение по умолчанию
  • BITAuthenticatorIdentificationType.HOCKEY_APP_EMAIL — Пользователь указывает только свой email для обратной связи
  • BITAuthenticatorIdentificationType.HOCKEY_APP_USER — Пользователь указывает свой логин и пароль от личного кабинета HockeyApp. Окно авторизации отображается прямо в вашем приложении.
  • BITAuthenticatorIdentificationType.DEVICE — Авторизация с помощью UDID приложения. Пользователю будет показано окно с кнопкой Авторизации, нажав на которую будет запущено приложение Safari, которое определяет текущий UDID, и после нажатия на кнопку Авторизации в Safari, UDID будет передан приложению для дальнейшей авторизации в системе HockeyApp
  • BITAuthenticatorIdentificationType.WEB_AUTH — Авторизация по логину и паролю от системы HockeyApp, так же как и тип HOCKEY_APP_USER, только авторизация происходит в Safari. В отличии от типа HOCKEY_APP_USER в том, что Safari может сохранить сессию авторизации, что бы пользователю не вводить каждый раз логин и пароль.


Подробное описание всех типов авторизации читайте в документации HockeyApp.

К сожалению в библиотеке FPHockeyApp.ane не поддерживаются типы авторизации BITAuthenticatorIdentificationType.DEVICE и BITAuthenticatorIdentificationType.WEB_AUTH, это связано с определенным техническими сложностями написания ANE-библиотек. Если у меня получится побороть эту проблему, я обязательно расскажу как я это сделал и выкачу новую версию библиотеки. Ну а пока удачной вам компиляции и быстрого поиска багов :)

Ложка дёгтя и аналоги


Самый большой и, на мой взгляд, единственный минус этой системы — это платность. Минимальный тариф — 10$ в месяц с ограничением на 5 приложений. Есть пробный период — 30 дней, за который вы успеете оценить все плюсы/минусы этой системы. Честно сказать я еще не успел опробовать аналоги, но довольно известный среди них это наверно TestFlight, он бесплатный и где то в сети видел ANE библиотеки для работы с этим сервисом. Если кто пользовался аналогами в AIR-приложении — поделитесь опытом.

UPD: Обновил версию библиотеки. В классе FPhaLogger добавил возможность указать максимальный размер файла с логами, чтобы разработчики случайно не забили всю свободную память логами :) Как только размер файла превышает допустимый — начинают удаляться самые ранние записи. Всем добра!

UPD2: Исходники в svn-репозитории fpsvn.ru/svn/ane/hockeyapp/opensource
Tags:
Hubs:
+6
Comments 14
Comments Comments 14

Articles