Системы тестирования 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 ногами.

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

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

    Comments 11

      +2
      Я работаю только с Тестфлайтом (HockeyApp не пробовал, ничего сказать не могу).
      Кроме ускоренной доставки билда Тестфлайт еще аплоадит и позволяет просматривать креш-логи.
      Помимо того присутствует механизм чекпойнтов (вы точно будете знать, что тестировщик проверил эту конкретную фичу, в которой вы установите чекпойнт).
      Также есть механизм сбора логов (путем редефайна NSLog на TFLog).
      В общем, полезная штуковина
        +2
        Testflight часто тормозит. Не все отчеты об ошибках доходят, хотя тестеры уверяют, что проблемы есть. Смотришь на сайте — «0 crashes». Такая же ситуация и с фидбеками.

        Но в целом делает жизнь в разы лучше.
          0
          Если продублировать отлов крашей с Flurry, то ни одна ошибка не ускользнет.
            +1
            Это мысль. Но все-таки хотелось бы, чтобы одна надежная система была.
          0
          Грустно только то, что при использовании этих средств накладывается ограничение на количество тестировщиков.
            0
            а я чаще всего заливаю проект на дропбокс, а ссылку на устновку размещаю где-нибудь в недрах своего домена. Намного быстрее, учитывая, что процесс автоматизирован. Да, я знаю про upload API в TestFlight, но копирование в папку дропбокс ватоматизировать проще (я это сделал в виде custom script в XCode).
            Работает быстрее и проще.
            Но тестфлай упрощает управление группами тестирования и сбором юдидов, поэтому когда много людей тестируют — тогда использую тестфлай.
              +1
              Еще один плюс HockeyApp — он есть и для андроида. Как с тестфлайтом у этого? Просто очень удобно использовать одну систему в случае кроссплатформенного приложения.
              • UFO just landed and posted this here
                  +1
                  TestFlight тормозной до ужаса, но пользуемся.
                  diawi.com очень удобно. Можно залить .ipa, провижн и иконки и ставить по короткой ссылке. Тоже часто используем
                    0
                    забыл, diawi без регистрации и смс
                    +2
                    Мы несколько месяцев уже используем аналогичный сервис — Aironapp
                    Также передает билды по ОТА, автоматически собирает креш-репорты, но и сам автоматически переподписывает билды и менеджит Apple аккаунт. В iOS ужасно раздражает борьба с провижининг-профайлами, которые содержат ограничение по количеству телефонов, куда можно поставить приложение.
                    Айронап решает эту проблему автоматически (понимает, что новый телефон, добавляет его в Apple Dev Portal, переподписывает приложение). Приложение ставится в одно нажатие по ссылке (или через баркод-читалку).
                    В качестве бонуса есть еще автоматический паблишинг в стор, но мы еще не тестили ;)

                    Only users with full accounts can post comments. Log in, please.