Автоматизоване тестування Adobe AIR додатків в системі HockeyApp

Вітаю, друзі!

Про що стаття
У цій статті буде дано поверхневий опис системи тестування мобільних додатків 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-додатку — поділіться досвідом.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.