Качественные тесты обеспечивают скорость и стабильную работу мобильных приложений, но разнообразие устройств, операционных систем и их версий раздувает тестовые фермы, увеличивает стоимость разработки и отнимает много времени и сил. В этой статье мы расскажем, как сократить издержки тестирования с помощью облачного сервиса Visual Studio App Center, который объединяет более четырех тысяч устройств с разными ОС, и упростить дистрибуцию с помощью платформы Azure DevOps.
Одна из главных проблем мобильной разработки — переполненный под завязку рынок. По данным исследований Adweek, Sensor Tower и Think with Google, 80% приложений из-за низкого качества не доходят до пользователей.
Успех большинства приложений-чемпионов скоротечен. За месяц топ-25 обновляется на 74%. Получается, что три четверти лидеров теряют свои позиции в течение 30 дней! Одна из основных причин разочарования — проблемы со скоростью: 68% пользователей покидают приложение и выбирают другое если оно не загрузилось в течение шести секунд.
А ведь приложение должно не только быстро загружаться, но и правильно работать. Так что выкатывать обновления без комплексных тестов на всех возможных разновидностях устройств и операционок — неоправданный риск. Но на практике это не так просто: безумное количество смартфонов, планшетов, операционных систем и их версий вынуждает создавать огромные матрицы тестирования.
Если рассматривать мобильные операционки, то с iOS дела обстоят более-менее неплохо. Например, в прошлом году большинство пользователей спокойно сидело на iOS 12. Хорошо с точки зрения тестов и то, что все устройства выпускает единственный производитель.
С Android сложнее: много видов операционок и их версий, среди которых сложно выделить основных лидеров. А еще у каждого производителя (Samsung, Xiaomi, Sony и пр.) есть свои нестандартные лончеры, хаки, изменения в ОС и сервисах. Из-за этого фермы мобильного тестирования могут содержать от десятков до сотен устройств. Например, на фото — ферма мобильного тестирования у одного из разработчиков игр.
Фермы требуют постоянной поддержки. Устройства надо держать в актуальном состоянии, делать им периодический возврат к установкам по умолчанию, учитывать амортизацию и так далее. Устройства в фермах амортизируются и устаревают требуется их постоянно обновлять чтобы угнаться за теми устройствами, которые использует аудитория ваших приложений. И самое главное трудно обеспечить доступ к такой ферме распределенной команде разработчиков и тестировщиков находящихся в разных городах.
После проведения «домашних» тестов нужно отправить приложение потестироваться на реальных устройствах. Лучший способ — дать ранний доступ к бета-версии своим сотрудникам или внешним людям, например, фанатам приложения и любителям новинок. Пользователи получают самые ранние версии, разработчики — возможность протестировать на них все, что хотят. На этом этапе нам нужна сложная аналитика: какие функции пользователь использует, на какие экраны чаще всего попадает, сколько времени там проводит.
Microsoft сам столкнулся с проблемой тестирования мобильных приложений: в какой-то момент количество приложений на разработке у MS перевалило за сотню. Чтобы упростить эту задачу, компания на основе облака от Xamarin создала облачный сервис App Center: в нем собраны тысячи реальных устройств, на которых разработчики могут проводить тесты, не заботясь о приобретении и обслуживании собственной фермы.
App Center можно подключать к GitHub, Bitbucket, GitLab или Azure DevOps. Visual Studio App Center охватывает все популярные фреймворки разработки, позволяя создавать и тестировать приложения для всех распространенными платформ.
Устройство как будто бы находится в вашей инфраструктуре, поэтому можно организовать процесс непрерывной интеграции (Continuous integration): разработчик делает коммит кода в проект, сразу же автоматом собирается приложение, раскидывается на тестовые устройства, запускаются тесты.
Более четырех тысяч устройств в облаке. Это настоящие живые устройства. Каждая модель представлена в нескольких экземплярах. В процессе тестов можно делать скриншоты, смотреть на приложение глазами пользователей. Есть детальные данные о каждом устройстве: кто произвел, какими ресурсами обладает, какая нагрузка на CPU, скорость исполнения приложения.
Наличие SDK — software development kit, который встраивается в приложение и собирает данные: насколько успешно происходит установка и запуск, сколько было сбоев, крэшей. С устройств, на которых что-либо падало, можно собирать дампы, смотреть, что происходило в процессе теста приложения. Это сильно облегчает поиск и устранение дефектов в приложении.
Подробные отчеты по тестам. Если тест не срабатывает с какой-то ошибкой, то с экрана устройства, на котором проводится тест, делается скриншот в момент, когда тест обо что-то споткнулся. И мы видим, работает или не работает приложение и где оно натыкается на проблемы в результате тестового прогона.
Сбор журналов работы устройства, дампов памяти, трассировки стека, отчетов о тестировании для диагностики и исправления проблем. Можно залезть в устройства, выкачать логи и изучить, какая была нагрузка на процессор, сколько памяти было занято. Такие вещи помогут быстрее понять, в чем была проблема, почему приложение дало сбой или не прошло тест.
Аналитика использования приложения: как быстро оно отвечает, сколько времени занимает переключение между теми или иными экранами, какими путями пользователи ходят внутри приложения и попадают на те или иные экраны. Можно узнать, на каких платформах и версиях ОС ваша аудитория используется приложение. Это помогает видеть аудиторию и устройства, понимать, какие фичи эти устройства смогут без проблем потянуть. И вообще, может ли приложение корректно работать на девайсах пользователей. Такая аналитика позволяет приоритезировать тестирование для тех или иных платформ и сократить матрицу тестирования.
Единый автоматический процесс дистрибуции. Если приложение пишется под несколько маркетов, например, под iOS и Android, то приходится делать много ручной работы в процессе публикации приложения. В App Center есть возможность автоматизировать дистрибуция, и как только приложение прошло все тесты, получившийся билд отправляется в магазины либо автоматом, либо после утверждения разработчиком.
Автоматические обновления отправляются бета-тестерам и внутренним пользовательским группам после каждого коммита. Ничего не надо рассылать вручную, к тому же процесс позволяет получать быструю обратную связь от тестеров.
Зарегистрироваться в сервисе и получить бесплатный пробный период. Посмотрим, как это выглядит в реальном мире.
Веб-интерфейс у App Center простой.
Не менее прост процесс создания нового приложения: задаем имя, платформу и операционную систему.
Указываем, в каком репозитории лежит код, после чего запускается автоматическая синхронизация.
При разработке для iOS для сборки приложения обычно требуется MacBook. Но Appcenter позволяет не иметь его он разворачивает специальную виртуалку на OSX со всеми необходимыми инструментами. Можно добавить библиотеки, если требуется что-то нестандартное, отличное от чистой системы.
Открылось окошко с терминалом. Видно, что происходит внутри виртуалки. Добавляются пакеты, ставятся с помощью NuGet. Как только виртуалка готова, запускается процесс компиляции и сборки. Кстати, если с билдом возникнет проблема, то из этого интерфейса легко выкачать логи.
Как делается компиляция. Microsoft договорился с Apple и получил лицензию на виртуальные экземпляры MacOS, которые запускаются внутри виртуальной машины, чтобы делать билды. Так что с точки зрения лицензий все чисто, Microsoft обо всем позаботился!
Билд готов, пора протестировать приложение. Открываем Device set и выбираем устройства.
Для каждого устройства можно просмотреть особенности модели, характеристики, версию операционной системы, количество одновременно доступных в облаке устройств и другие параметры.
После того как создан ваш набор тестовых устройств, тесты будут запускаться по очереди на каждом из них. По умолчанию в базовой версии тестирование происходит в один поток. Можно варьировать матрицу тестирования, запуская какие-то тесты на большом наборе устройств, какие-то — на малом.
Примерное время выполнения теста — минута на каждый экран приложения. Если у вас 30-40 экранов, то и тест будет идти примерно 30-40 минут для каждого устройства. Для ускорения можно поставить тестирование в несколько потоков параллельно на нескольких устройствах. За эту опцию придется доплатить.
Здесь можно настроить автоматическую дистрибуцию после прохождения тестов: релиз будет автоматически выкладываться в магазины приложений.
Если необходимо протестировать приложение на группе пользователей, то перед релизом в маркетплейс создаем группы, в которые вписываются сотрудники или пользователи, лояльные к приложению. Как только проведем дистрибуцию, все они получат email с уникальной ссылкой на скачивание новой версии. После такого тестирования можно собрать телеметрию с «тестовых пользователей» и увидеть, как приложение работает на их железе.
Здесь прописывается подключение к маркетплейсам.
Для диагностики приложения надо подключить SDK. И все места кода, где что-то может упасть, окружить try и catch. Когда приложение будет падать на пользовательском устройстве, можно получать дампы крэша и проводить диагностику.
Аналитика показывает, как пользователи ходят по приложениям: ставим тот же SDK и смотрим, какие ивенты возникают внутри приложения, в каком порядке перемещаются посетители между экранами.
Опция для сбора данных, метрик, всевозможной служебной информации. Как быстро открывается приложение, как работает. Все это делается на основе Azure Cosmos DB, где можно смотреть довольно продвинутую аналитику.
SDK позволяет рассылать пользователям push-уведомления для привлечения внимания или информирования о новых версиях приложения. Не только удобно, но еще и выгодно: такие сообщения во много раз дешевле, чем SMS.
Внутри приложения пользователей можно сегментировать по различным критериям: типам устройств, географии и т. д., и проводить на основании получившихся групп маркетинговые активности.
Возможности App Center — устройства в облаках, билды, тесты и распространение ПО — это только часть процесса разработки, которую дополняет Azure DevOps. Эта платформа, на которой можно создавать дашборды и доски с задачами, хранить знания о проекте в wiki, пользоваться репозиторием для файлов и артефактов. А если приходится работать со сложным конвейером изготовления ПО, то здесь же можно настроить pipelines, указать, где будут билды.
Зарегистрировавшись на Appcenter.ms вы сможете бесплатно пользоваться всеми возможностями App Center в течение двух месяцев. После окончания пробного периода один билд будет стоить 40 долларов в месяц, но запускать его можно неограниченное число раз. Это явно выгоднее, чем содержать собственную ферму для мобильных тестов.
Azure DevOps — полностью бесплатный сервис, если у вас команда из максимум пяти разработчиков или вы делаете какой-либо OpenSource проект. Репозитории, хранилища кода, пайплайны, доски — все это предоставляется бесплатно.
Если вы хотите узнать об этом больше или уже сейчас начать пользоваться платформой, то вам будет интересен Dev Bootcamp — наш онлайн-марафон для разработчиков. В ходе мероприятия, которое пройдет 25-29 мая, наши эксперты расскажут, как повысить точность планирования в разработке, как оставаться в правовом поле и сохранять лицензионную чистоту при использовании Open Source-библиотек, как автоматизировать процесс управления компонентами OpenSource при разработке ПО. А участники практических сессий смогут пообщаться с архитекторами Microsoft, которые осветят вопросы оптимизации и вывода приложений на глобальный уровень. Регистрируйтесь, будет интересно!
Как тестируют мобильные приложения и чем разработчик похож на фермера
Одна из главных проблем мобильной разработки — переполненный под завязку рынок. По данным исследований Adweek, Sensor Tower и Think with Google, 80% приложений из-за низкого качества не доходят до пользователей.
Успех большинства приложений-чемпионов скоротечен. За месяц топ-25 обновляется на 74%. Получается, что три четверти лидеров теряют свои позиции в течение 30 дней! Одна из основных причин разочарования — проблемы со скоростью: 68% пользователей покидают приложение и выбирают другое если оно не загрузилось в течение шести секунд.
А ведь приложение должно не только быстро загружаться, но и правильно работать. Так что выкатывать обновления без комплексных тестов на всех возможных разновидностях устройств и операционок — неоправданный риск. Но на практике это не так просто: безумное количество смартфонов, планшетов, операционных систем и их версий вынуждает создавать огромные матрицы тестирования.
Если рассматривать мобильные операционки, то с iOS дела обстоят более-менее неплохо. Например, в прошлом году большинство пользователей спокойно сидело на iOS 12. Хорошо с точки зрения тестов и то, что все устройства выпускает единственный производитель.
С Android сложнее: много видов операционок и их версий, среди которых сложно выделить основных лидеров. А еще у каждого производителя (Samsung, Xiaomi, Sony и пр.) есть свои нестандартные лончеры, хаки, изменения в ОС и сервисах. Из-за этого фермы мобильного тестирования могут содержать от десятков до сотен устройств. Например, на фото — ферма мобильного тестирования у одного из разработчиков игр.
Фермы требуют постоянной поддержки. Устройства надо держать в актуальном состоянии, делать им периодический возврат к установкам по умолчанию, учитывать амортизацию и так далее. Устройства в фермах амортизируются и устаревают требуется их постоянно обновлять чтобы угнаться за теми устройствами, которые использует аудитория ваших приложений. И самое главное трудно обеспечить доступ к такой ферме распределенной команде разработчиков и тестировщиков находящихся в разных городах.
После проведения «домашних» тестов нужно отправить приложение потестироваться на реальных устройствах. Лучший способ — дать ранний доступ к бета-версии своим сотрудникам или внешним людям, например, фанатам приложения и любителям новинок. Пользователи получают самые ранние версии, разработчики — возможность протестировать на них все, что хотят. На этом этапе нам нужна сложная аналитика: какие функции пользователь использует, на какие экраны чаще всего попадает, сколько времени там проводит.
App Center –— альтернатива фермам
Microsoft сам столкнулся с проблемой тестирования мобильных приложений: в какой-то момент количество приложений на разработке у MS перевалило за сотню. Чтобы упростить эту задачу, компания на основе облака от Xamarin создала облачный сервис App Center: в нем собраны тысячи реальных устройств, на которых разработчики могут проводить тесты, не заботясь о приобретении и обслуживании собственной фермы.
App Center можно подключать к GitHub, Bitbucket, GitLab или Azure DevOps. Visual Studio App Center охватывает все популярные фреймворки разработки, позволяя создавать и тестировать приложения для всех распространенными платформ.
Устройство как будто бы находится в вашей инфраструктуре, поэтому можно организовать процесс непрерывной интеграции (Continuous integration): разработчик делает коммит кода в проект, сразу же автоматом собирается приложение, раскидывается на тестовые устройства, запускаются тесты.
Преимущества App Center
Более четырех тысяч устройств в облаке. Это настоящие живые устройства. Каждая модель представлена в нескольких экземплярах. В процессе тестов можно делать скриншоты, смотреть на приложение глазами пользователей. Есть детальные данные о каждом устройстве: кто произвел, какими ресурсами обладает, какая нагрузка на CPU, скорость исполнения приложения.
Наличие SDK — software development kit, который встраивается в приложение и собирает данные: насколько успешно происходит установка и запуск, сколько было сбоев, крэшей. С устройств, на которых что-либо падало, можно собирать дампы, смотреть, что происходило в процессе теста приложения. Это сильно облегчает поиск и устранение дефектов в приложении.
Подробные отчеты по тестам. Если тест не срабатывает с какой-то ошибкой, то с экрана устройства, на котором проводится тест, делается скриншот в момент, когда тест обо что-то споткнулся. И мы видим, работает или не работает приложение и где оно натыкается на проблемы в результате тестового прогона.
Сбор журналов работы устройства, дампов памяти, трассировки стека, отчетов о тестировании для диагностики и исправления проблем. Можно залезть в устройства, выкачать логи и изучить, какая была нагрузка на процессор, сколько памяти было занято. Такие вещи помогут быстрее понять, в чем была проблема, почему приложение дало сбой или не прошло тест.
Аналитика использования приложения: как быстро оно отвечает, сколько времени занимает переключение между теми или иными экранами, какими путями пользователи ходят внутри приложения и попадают на те или иные экраны. Можно узнать, на каких платформах и версиях ОС ваша аудитория используется приложение. Это помогает видеть аудиторию и устройства, понимать, какие фичи эти устройства смогут без проблем потянуть. И вообще, может ли приложение корректно работать на девайсах пользователей. Такая аналитика позволяет приоритезировать тестирование для тех или иных платформ и сократить матрицу тестирования.
Единый автоматический процесс дистрибуции. Если приложение пишется под несколько маркетов, например, под iOS и Android, то приходится делать много ручной работы в процессе публикации приложения. В App Center есть возможность автоматизировать дистрибуция, и как только приложение прошло все тесты, получившийся билд отправляется в магазины либо автоматом, либо после утверждения разработчиком.
Автоматические обновления отправляются бета-тестерам и внутренним пользовательским группам после каждого коммита. Ничего не надо рассылать вручную, к тому же процесс позволяет получать быструю обратную связь от тестеров.
Как начать работу с App Center
Зарегистрироваться в сервисе и получить бесплатный пробный период. Посмотрим, как это выглядит в реальном мире.
Веб-интерфейс у App Center простой.
Не менее прост процесс создания нового приложения: задаем имя, платформу и операционную систему.
Указываем, в каком репозитории лежит код, после чего запускается автоматическая синхронизация.
При разработке для iOS для сборки приложения обычно требуется MacBook. Но Appcenter позволяет не иметь его он разворачивает специальную виртуалку на OSX со всеми необходимыми инструментами. Можно добавить библиотеки, если требуется что-то нестандартное, отличное от чистой системы.
Открылось окошко с терминалом. Видно, что происходит внутри виртуалки. Добавляются пакеты, ставятся с помощью NuGet. Как только виртуалка готова, запускается процесс компиляции и сборки. Кстати, если с билдом возникнет проблема, то из этого интерфейса легко выкачать логи.
Как делается компиляция. Microsoft договорился с Apple и получил лицензию на виртуальные экземпляры MacOS, которые запускаются внутри виртуальной машины, чтобы делать билды. Так что с точки зрения лицензий все чисто, Microsoft обо всем позаботился!
Билд готов, пора протестировать приложение. Открываем Device set и выбираем устройства.
Для каждого устройства можно просмотреть особенности модели, характеристики, версию операционной системы, количество одновременно доступных в облаке устройств и другие параметры.
После того как создан ваш набор тестовых устройств, тесты будут запускаться по очереди на каждом из них. По умолчанию в базовой версии тестирование происходит в один поток. Можно варьировать матрицу тестирования, запуская какие-то тесты на большом наборе устройств, какие-то — на малом.
Примерное время выполнения теста — минута на каждый экран приложения. Если у вас 30-40 экранов, то и тест будет идти примерно 30-40 минут для каждого устройства. Для ускорения можно поставить тестирование в несколько потоков параллельно на нескольких устройствах. За эту опцию придется доплатить.
Здесь можно настроить автоматическую дистрибуцию после прохождения тестов: релиз будет автоматически выкладываться в магазины приложений.
Если необходимо протестировать приложение на группе пользователей, то перед релизом в маркетплейс создаем группы, в которые вписываются сотрудники или пользователи, лояльные к приложению. Как только проведем дистрибуцию, все они получат email с уникальной ссылкой на скачивание новой версии. После такого тестирования можно собрать телеметрию с «тестовых пользователей» и увидеть, как приложение работает на их железе.
Здесь прописывается подключение к маркетплейсам.
Для диагностики приложения надо подключить SDK. И все места кода, где что-то может упасть, окружить try и catch. Когда приложение будет падать на пользовательском устройстве, можно получать дампы крэша и проводить диагностику.
Аналитика показывает, как пользователи ходят по приложениям: ставим тот же SDK и смотрим, какие ивенты возникают внутри приложения, в каком порядке перемещаются посетители между экранами.
Опция для сбора данных, метрик, всевозможной служебной информации. Как быстро открывается приложение, как работает. Все это делается на основе Azure Cosmos DB, где можно смотреть довольно продвинутую аналитику.
SDK позволяет рассылать пользователям push-уведомления для привлечения внимания или информирования о новых версиях приложения. Не только удобно, но еще и выгодно: такие сообщения во много раз дешевле, чем SMS.
Внутри приложения пользователей можно сегментировать по различным критериям: типам устройств, географии и т. д., и проводить на основании получившихся групп маркетинговые активности.
Основные компоненты Azure DevOps
Возможности App Center — устройства в облаках, билды, тесты и распространение ПО — это только часть процесса разработки, которую дополняет Azure DevOps. Эта платформа, на которой можно создавать дашборды и доски с задачами, хранить знания о проекте в wiki, пользоваться репозиторием для файлов и артефактов. А если приходится работать со сложным конвейером изготовления ПО, то здесь же можно настроить pipelines, указать, где будут билды.
- Boards — набор инструментов для планирования работы, обсуждения, мониторинга и пр. Канбан-доски, панели мониторинга, доски Scrum — все это легко настраивается под специфику проекта и особенности команды.
- Pipelines — размещенные в облаке конвейеры для мобильных и десктопных приложений. Автоматизация сборки и развертывания. Node.js, Python, Java, PHP, Ruby, C/C++, .NET, Android и iOS, развертывание контейнеров в отдельные узлы или в Kubernetes.
- Repos — неограниченные размещенные в облаке частные репозитории Git. Добавляйте проверки и расширения из Marketplace или создавайте собственные веб-перехватчики и REST API. Возможен семантический поиск в коде.
- Artifacts — создание веб-каналов пакетов Maven, npm, NuGet и Python из общедоступных и закрытых источников. Общий доступ к пакетам и встроенные процессы CI/CD.
Стоимость App Center и Azure DevOps
Зарегистрировавшись на Appcenter.ms вы сможете бесплатно пользоваться всеми возможностями App Center в течение двух месяцев. После окончания пробного периода один билд будет стоить 40 долларов в месяц, но запускать его можно неограниченное число раз. Это явно выгоднее, чем содержать собственную ферму для мобильных тестов.
Azure DevOps — полностью бесплатный сервис, если у вас команда из максимум пяти разработчиков или вы делаете какой-либо OpenSource проект. Репозитории, хранилища кода, пайплайны, доски — все это предоставляется бесплатно.
Если вы хотите узнать об этом больше или уже сейчас начать пользоваться платформой, то вам будет интересен Dev Bootcamp — наш онлайн-марафон для разработчиков. В ходе мероприятия, которое пройдет 25-29 мая, наши эксперты расскажут, как повысить точность планирования в разработке, как оставаться в правовом поле и сохранять лицензионную чистоту при использовании Open Source-библиотек, как автоматизировать процесс управления компонентами OpenSource при разработке ПО. А участники практических сессий смогут пообщаться с архитекторами Microsoft, которые осветят вопросы оптимизации и вывода приложений на глобальный уровень. Регистрируйтесь, будет интересно!