Тестирование мобильных приложений: альтернативы реальным девайсам
Мобильных приложений с каждым днем становится все больше и больше, мы пользуемся ими постоянно. Разные по сложности и набору возможностей, все они требуют внимательного взора тестировщика, прежде чем попасть в руки пользователей. Тестировщики проверяют приложение на разных устройствах и конфигурациях, ищут проблемы и узкие места, а помогают им в этом, конечно же, мобильные устройства разных моделей и производителей.
Существует несколько вариантов обеспечения тестировщиков необходимыми устройствами.
Симуляторы и эмуляторы
Для начала поймем, что такое симуляторы и эмуляторы.
• Эмулятор – это виртуальное устройство, которое имитирует программную и «железную» части физического устройства. Ресурсы ограничены характеристиками имитирующего девайса.
• Симуляторы – имитируют оболочку, ограничиваются только ресурсами самой машины. Обычно данные инструменты поставляются вместе со средами разработки, такими как XCode и Android Studio. Эти инструменты позволяют имитировать поведение устройства, чаще всего ими пользуются разработчики для отладки создаваемых приложений.
Преимущества:
● Позволяют запускать ваше приложение на виртуальном аналоге устройства.
● Могут использоваться в работе с автотестами.
Недостатки:
● Имеется ряд ограничений, таких как работа с камерой, звонки, или бесконтактная оплата. Для таких кейсов придется возвращаться к реальным устройствам и проверять на них.
● Запуск симуляторов/эмуляторов и подготовка к работе обычно занимают две-три минуты, это не так критично, но если вам необходимо запустить сразу несколько симуляторов/эмуляторов, это может стать проблемой на слабых ПК.
Облачные фермы
Облачные фермы представляют собой некий сервис с доступом к различным физическим устройствам, с которыми вы можете взаимодействовать как в ручном режиме, так и с использованием ваших автоматических тестов. Сегодня на рынке огромное множество таких сервисов на любой вкус и кошелек. Вот только некоторые из них.
Samsung Test Lab
Решение от одноименной компании позволяет протестировать ваше приложение на линейке устройств Samsung. Имеется возможность бронировать устройства на 30 минут и на 1 час.
Из основных плюсов: можно пользоваться бесплатно, достаточно оперативно добавляют новые флагманы.
Из основных минусов: девайсы общие, после тестирования устройство не сбрасывается, постоянно захламлено. В линейке только устройства компании Samsung.
FireBase Test Lab
Решение от компании Google. Позволяет протестировать ваше приложение более чем на 450 устройствах, чего должно хватить практически любому. Работать можно как с iOS-, так и с Android-устройствами. Есть возможность смотреть логи, настроить автоматизацию как обычные манки-тесты и как более осмысленные.
AWS Devices
Решение от Amazon предлагает на выбор несколько тарифов – от бесплатных до корпоративных. Огромный список устройств, проверить их можно как на флагманах, так и на достаточно старых моделях. Возможность подключения автоматизации и прочие интеграции.
Visual Studio App Center (ранее Xamarin Test Cloud)
Широкий выбор устройств, возможность подключения автоматизации, теперь интегрирован в продукты Microsoft.
И это только малая часть списка, облачных ферм много.
Как и у любого решения, облачные фермы имеют как плюсы, так и минусы.
Преимущества:
● Нет необходимости покупать большое количество реальных девайсов.
● Можно найти устройство практически для любой ситуации.
● Нет затрат на поддержку и ремонт тестовых устройств.
Недостатки:
● Сетевая задержка, не позволяющая корректно отображать анимации.
● Работать как с полноценной заменой физических устройств тоже проблематично из-за отсутствия тачскрина.
● Тестировщики обычно работают сразу с несколькими устройствами, перепрыгивая с одного на другое и возвращаясь обратно. С фермами такое сложно.
● Безопасность данных под вопросом. В случае облачных ферм вы тестируете приложение на ресурсах другой компании, нет гарантии, что ваши данные не попадут куда-то еще.
● Цена иногда может быть достаточно высокой.
Локальные фермы
Если вариант с облачным решением вам не подходит, можно собрать собственную ферму. Для этого вам понадобятся железные или виртуальные машины для Android и физические MacMini или аналоги для iOS. В локальных фермах можно использовать как виртуальные девайсы, так и реальные устройства. Независимо от варианта настройка и поддержка локальных ферм отнимают достаточно много времени и сил, а также требуют высокого уровня компетенций ваших тестировщиков: они должны уметь работать с CI, средами разработки, отлично знать один из языков программирования. В случае с локальными фермами необходимо самим реализовывать все возможные обвязки и схемы взаимодействия устройств с кодом автотестов.
Преимущества:
● Возможность глубокой кастомизации.
● Отсутствие внешней зависимости от вендора.
● Повышенный уровень безопасности: все данные находятся не где-то на чужих серверах, а у вас.
Недостатки:
● Высокая стоимость поддержки.
● Необходимость высокого уровня компетенций специалистов.
● Не стоит забывать, что первичное развертывание, настройка и отладка – совсем не быстрые процессы, и от момента постановки задачи до возможности пользоваться своей собственной фермой может пройти от одного до нескольких месяцев, что выливается в существенную стоимость как людских, так и технических ресурсов без видимой отдачи.
Старые добрые устройства
Ну а если на вашем проекте нет необходимости в столь сложных в развертывании и поддержке решениях, всегда можно остановиться на старом проверенном способе – живых устройствах.
Преимущества:
● Максимально приближенная среда, что позволяет проверять ваше приложение именно на тех моделях устройств и версиях прошивок, которыми пользуются ваши пользователи.
● Возможность нормально работать с анимациями, бесконтактной оплатой, камерой и прочими специфическими кейсами. Удобнее в сравнении с фермами взаимодействовать с устройствами посредством тачскрина.
● Самые честные тесты по сравнению со всеми способами тестирования.
Недостатки:
● Высокая цена формирования: постоянно требуется обновлять модельный ряд. Еще желательно иметь устройства не в одном экземпляре, чтобы несколько тестировщиков могли работать параллельно, или на случай ремонта не остаться без самой ходовой конфигурации.
● Высокая стоимость поддержки: вздувшиеся батареи, порванные провода, разбитые экраны, брак и прочие неисправности – это то, с чем придется сталкиваться рано или поздно. А значит, необходимо закладывать бюджет и на это.
● Малое покрытие в сравнении с облачными фермами.
Какой бы у вас ни был бюджет на закупки устройств для тестирования, вам не удастся купить все девайсы, на которые ставят ваше приложение пользователи. Это и нерентабельно, и не имеет особого смысла. Для формирования списка физических устройств необходимо опираться на метрики вашего приложения, какие устройства покрывают большинство ваших пользователей, купить эти устройства, а какие-то специфичные ситуации, например баг у пользователя на уникальном устройстве, стараться воспроизводить на симуляторах или облачных фермах. Такие ситуации возникают нечасто, и покупать девайс для проверки конкретного кейса или исправленного бага – сомнительная затея.
Итого
Выбрав подходящие решения и интегрировав их в процесс разработки и тестирования, вы получите ощутимый прирост в качестве продукта и сможете избавить больший процент ваших пользователей от проблем с приложением.
Выбор какого-то варианта не исключает возможности пользоваться остальными – наоборот, все они дополняют друг друга, позволяя обеспечить максимальное покрытие.
В каких ситуациях применять тот или иной инструмент – решать только вам.
Опубликовано 25.11.2020