Вступление
Третья часть обзора будет посвящена сервису Ubertesters (первая часть обзора, вторая часть обзора).
Это достаточно “молодой” сервис, с амбициями войти в список лидеров (сделать это будет непросто, с учетом последних приобретений конкурентов крупнейшими игроками в ИТ). Большим отличием и плюсом Ubertesters является возможность привлекать на платной основе внешних тестировщиков (также любой желающий может сам зарегистрироваться в качестве тестировщика и получать за свой труд оплату).
Отдельно хочу отметить, что Ubertesters была единственной компанией из обзора, которая следила за его публикациями, предоставляла дополнительную информацию и делилась планами по обновлению сервиса, с целью повысить качество обзора.
Система оценки: сервисы оцениваются по 10-балльной шкале по каждому из разделов (Регистрация и интеграция, Основной функционал, Дополнительный функционал, Continuous Integration). Суммарная оценка позволит определить победителя (итоговое заключение войдет в последнюю часть обзора).
Ubertesters
Регистрация и интеграция
Регистрация в сервисе несложная, кроме платных вариантов подписки есть возможность бесплатного использования основного функционала с ограничениями по дополнительным функциям и количеству членов команды, проектов и так далее (подробнее).
Примечание из разряда курьезов: после регистрации проверьте свой профайл — в моем случае страна была указана верно, а вот субъект федерации был выбран первый из списка и им оказалась Республика Адыгея!
Интеграция с SDK простая (http://ubertesters.com/download-sdk/):
Оценка: 7/10.
Основной функционал
Примечание (обновлено 15 июня 2015): говоря о дистрибуции приложений для iOS необходимо помнить, что на данный момент все сервисы, кроме TestFlight от Apple, по-прежнему должны учитывать ограничение на количество устройств доступных при использовании AdHoc provision profiles. Следовательно, максимум используемых устройств равен 100 на каждое семейство устройств (это условие было изменено 8 июня 2015 года, после объявления на WWDC об объединении всех developers programs в одну), в которые входят в том числе и устройства, используемые непосредственно разработчиками. Самым же большим ограничением является то, что список зарегистрированных устройств можно “обнулять” только раз в год, после продления подписки на iOS Developer Program (возможно в последующем и это условие будет изменено).
Сразу после завершения процедуры регистрации, пользователь имеет возможность выбрать один из четырёх вариантов дальнейших действий:
После выбора первого варианта — Start a new project — будет представлено краткое описание предстоящих шагов:
Примечание: кажущееся пошаговым мастером окошко, на самом деле является только информативным и после завершения первого шага пользователь попадает на обычную страницу (без указания текущего прогресса), где имеет возможность выбрать одну из двух предлагаемых опций (либо воспользоваться другими функциями сайта, через меню навигации):
Ещё одно замечание по поводу второй опции — Invite members to the team — её иконка может навести на мысль об использовании социальных сетей, как инструмента привлечения членов команды, но на самом деле отправки приглашений осуществляется посредством электронной почты.
При создании нового проекта на первом шаге проще всего воспользоваться функцией авто-заполнения формы при загрузке дистрибутива приложения:
Немного неудобно, на мой взгляд, то что загруженный дистрибутив не используется сервисом по прямому назначению, так как на следующем шаге предлагается отдельно загрузить дистрибутив для первой ревизии приложения (revision — термин используемый сервисом для обозначения версий/сборок).
Страница Overview содержит основную информацию о проекте, а также суммарную статистику:
Примечание: извещения в системе по умолчанию настроены на режим Watching для пользователей с ролью Admin или Manager и Not Watching для пользователей с ролью QA или Developer, который предполагает уведомление только о тех событиях, в которых они являетесь участником. Ещё доступен режим Ignoring, когда система не будет рассылать вообще никаких уведомлений:
Подробнее с описанием вышеперечисленных режимов можно ознакомиться на странице часто задаваемых вопросов “What is notification status? In what case I will be notified?”.
При добавлении новой ревизии на первом шаге необходимо загрузить дистрибутив приложения (*.ipa):
На следующем шаге задаются базовые сведения о ревизии:
После загрузки ревизия неактивна, то есть недоступна для установки на тестовые устройства. Для того чтобы начать тестирование необходимо нажать кнопку Start:
А на следующем экране указать кому из членов команды будет доступна данная ревизия (при этом есть возможность разослать всем участникам уведомление):
После этого ревизия получает статус In progress и может быть установлена на устройства.
Примечание: если в проекте есть группа пользователей по умолчанию, то входящие в неё члены команды будут сразу выбраны (положение переключателя в первой колонке On), если такая группа отсутствует, то пользователей нужно будет выбрать вручную. Доступ к каждой ревизии может быть остановлен либо для всех, либо для некоторых пользователей, что позволяет эффективно решать организационные вопросы, возникающие во время работы над проектом. Также при инициализации Ubertesters возможно разрешить доступ к приложению, но отключить возможность использовать функционал сервиса: UbertestersLockingModeDisableUbertesters.
Февральское обновление сервиса (подробнее) добавило в том числе возможность редактировать описание для ревизии:
Приглашения в команду, как я уже говорил, рассылаются по электронной почте (Administration — Team — Add members), причём эту задачу можно облегчить воспользовавшись функцией импорта из CSV файла:
Пользователям можно определить одну из трёх ролей, а также добавить в группы (используются для распространения приложения ограниченному количеству пользователей).
Примечание. В целом в рамках сервиса роли иерархически распределены следующим образом: на уровне организации есть две роли Admin и Member, на уровне проекта Member может быть QA, Developer и Manager. Важный нюанс: первая ревизия в каждом проекте должна быть загружена пользователем с рольюм Admin или Manager. Дальнейшие ревизии могут быть загружены любым членом команды (включая QA). Сервис устроен таким образом, чтобы учесть все возможные варианты построения бизнес-процессов в той или иной компании. Более подробно с описанием ролей можно ознакомиться на странице часто задаваемых вопросов.
При регистрации нового устройства на него устанавливаются два приложения: одно нативное (иконка с белым фоном), другое web (иконка с чёрным фоном). Весь основной функционал находится в нативном приложении, поэтому web-приложение можно удалить, после того как устройство было зарегистрировано, чтобы избежать путаницы в дальнейшем:
Примечание: в нативном приложение отсутствует возможность обновить содержимое открытой вкладки, приходится переключаться между вкладками, чтобы увидеть новые данные (новую ревизию приложения, новое приложение для тестирования и т.п.).
Новое устройство для тестирования возможно добавить несколькими способами:
Оценка: 8/10.
Дополнительный функционал
Ещё раз подчеркну, что при тестировании программного обеспечения очень важно получить наиболее полную и достоверную информацию. К сожалению, на данный момент в Ubertesters отсутствует функционал символизации отчётов о падении (в этом он проигрывает в сравнении с другими сервисами), но зато он имеет в своём багаже другой, зачастую более полезный, функционал: возможность создавать тикеты непосредственно из тестируемого приложения, а также снабжать их скриншотами.
Этот функционал доступен пользователю после нажатия круглой кнопки, которая по умолчанию помещается в правый верхний угол экрана, но может быть свободно передвинута в любое другое удобное место:
Система отслеживания ошибок в сервисе, возможно, не может быть полной алтернативой специализированным сервисам, но в совокупности с возможностью сопровождать каждый тикет скриншотами, справляется со своими задачами на отлично:
Каждый скриншот может быть сопровождён пометками (среди инструментов редактирования: карандаш, маркер, текстовые метки, стрелки и возможность вырезать часть скриншота). Сделанные скриншоты остаются на устройстве и могут быть использованы повторно. Также возможно добавление скриншотов из стандартной библиотеки фотографий устройства.
Примечание: письмо с извещением о новом тикете не содержит информации о том были ли при создании загружены скриншоты. По-моему было бы удобно иметь такие данные, хотя бы количество прикреплённых скриншотов.
На сайте сервиса информация по всем тикетам представлена весьма наглядно, можно просматривать общую статистику как для отдельной ревизии, так и для всех ревизий суммарно:
Кроме статистики по статусу, информация также представлена по типу (Bug, Feature, Improvement, Task, Crash), приоритету и частоте воспроизведения ошибки.
Важным преимущество является то, что каждый тикет имеет привязку к конкретной ревизии, что облегачает работы с отзывами тестировщиков и повышает ценность собираемой информации.
Примечание: если в каком-то случае сиволизация отчётов о падении играет критическую роль, возможно использование SDK другого сервиса, при этом после инициализации Ubertesters SDK необходимо отключить обработку падений:
[[Ubertesters shared] disableCrashHandler];
Важно! В этом случае никакая информация о падениях не будет попадать на сайт Ubertesters.
Сервис предоставляет возможность интеграции с внешними трекерами (Jira, Mantis, Redmine, YouTrack, Unfuddle, HPQC). Единовременно интеграция может быть осуществлена только с одним из доступных сервисов. Интерфейс управления данным функционалом находиться в разделе Administration — Issue Tracker (настройки делаются для каждого проекта индивидуально).
Пример связанного с JIRA тикета:
Работа тестировщиков может быть более организованной при использовании функционала Tests. В специальном разделе сервиса можно просмотреть статистику по существующим тестам, а также создать новые:
Примечание: поле ID предназначено для уникального идентификатора, он может быть числовым или строковым.
Добавление новых тестов также возможно импортом XLSX-файлов:
На тестовом устройстве пользователь имеет возможность просмотреть список доступных тестов, выбрать один из них, провести тестирование и сообщить результат:
Примечание: в случае неудачного проведения теста возможно создание тикета (issue), который в дальнейшем будет привязан к этому конкретному тесту.
В феврале был значительно обновлён функционал, связанный с мониторингом и статистикой деятельности тестировщиков. В новом разделе Activity представлена обширная информация о текущих сессия тестирования:
На вкладке Summary отображаются только основные статусы (Ative, Suspended, Crashed и пр.), а при выборе конкретной тестовой сессии — блок Activity Stream — возможно поэтапно отслеживать работу тестировщика:
Ключевые события из истории сессии интерактивны: таким образом возможно сразу просмотреть описание теста, отправленный тикет или получить базовую информацию о падении приложения.
Примечание: дата сессий в Activity Stream указывается на момент начала сессии, если сессия продолжалась несколько дней, то это нужно учитывать, если требуется просмотреть хронологию действий пользователя (то есть какое событие может наступить на второй день, но в списке сессий нужно будет искать не этот день, а день начала сессии — то есть предыдущий).
Официальное руководство для сервиса: http://ubertesters.com/step-by-step-instruction/
Оценка: 8/10.
Continuous Integration
Примечание: Описанные далее нюансы использования сервисов как части непрерывной интеграции (continuous integration) в данном обзоре подразумевают, что она будет делаться на основе решения, предлагаемого компание Apple. То есть при помощи Mac OS X Server и Xcode bots — подробно на организации такой интеграции я не буду останавливаться, возможно это станет темой для отдельной статьи. Желающие могут ознакомиться с темой самостоятельно, например, обратившись к официальному руководству от Apple.
Доступ к API для автоматизации загрузки включается отдельно, в настройках профиля (описание API находится по адресу http://ubertesters.com/upload-api/)
Использование API возможно с curl:
curl -X POST http://beta.ubertesters.com/api/client/upload_build.json -H "X-UbertestersApiKey:PERSONAL_API_KEY" -F "file=@upload.ipa" -F "title=build title" -F "notes=build notes" -F "status=in_progress" -F
Параметры:
X-UbertestersApiKey- required, your personal 'API access KEY'. Please see item 1
file - required, path to your build file (.IPA or .APK)
title - optional, your build title
notes - optional, build description, plain text
status - optional
- pending - default, create a new revision only
- in_progress - create and start revision
stop_previous - optional
- true - stop all previous revisions ( if any)
- false - keep current statuses of previous revisions
Примечание: чтобы загрузка и публикация новой версии прошла в полностью автоматическом режиме, в настройках проекта (Administration — Distribution Groups) необходимо создать группу тестеров по умолчанию, в этом случае при добавленном ключе “status=in_progress”, новая версия сразу же после публикации станет доступной всем участникам этой группы. Сразу несколько групп могут быть заданы в качестве группы по умолчанию.
Важно: перед публикацией приложения в AppStore необходимо как минимум убрать инициализацию Ubertesters из кода, если размер приложения также важен, то рекомендуется полностью удалить фреймворк из проекта (разница в размерах дистрибутива составляет чуть более 1 мегабайта).
Оценка: 9/10.
Итого суммарная оценка по всем разделам: 32 балла.
P.S. Не смотря на отсутствие (пока!) функционала символизации отчётов о падении, Ubertesters может быть использован гораздо эффективнее, чем его конкуренты, в проектах, где на первом месте стоит важность получения отзывов от тестировщиков и других членов команды (заказчиков, менеджеров, дизайнеров и др.). Особенно важно это для проектов с рапределенной командой.
Разработчики Ubertesters пообещали учесть многие из замечаний и пожеланий, изложенных в статье, я же в свою очередь постараюсь обновлять материал по мере того как эти обещания будут реализованы.