Кросс-платформенное тестирование мобильных приложений: особенности, инструменты и решения

от автора

В современном мире без мобильных приложений никуда. Их стабильная и правильная работа требует особого подхода к тестированию, особенно когда речь идёт о кросс‑платформенных приложениях, работающих в iOS и Android. В этой статье я поделюсь своим опытом и трудностями, которые могут встретиться в процессе тестирования приложений в упомянутых ОС.

Особенности тестирования в iOS и Android

Для проверки работы мобильных приложений в iOS и Android нужно знать особенности каждой из операционных систем. Они связаны с тем, как устроены сами системы, как выглядят программы на экране и какие функции доступны на разных устройствах.

Тестирование в iOS

iOS — закрытая экосистема Apple, где разработчики имеют ограниченный доступ к низкоуровневым функциям системы. Это связывает руки и накладывает определённые ограничения на процесс тестирования. Например, для запуска тестов на реальных устройствах необходимо использовать сертифицированные устройства от Apple, что может потребовать значительных затрат. Кроме того, тестирование в iOS часто включает в себя проверку специфических функций, таких как Siri, Assistive Touch и VoiceOver.

Тестирование в Android

Android, напротив, является открытой платформой, что предоставляет разработчикам больше свободы действий, но одновременно создаёт дополнительные сложности. Одной из главных проблем является фрагментация устройств и версий ОС. Android работает на огромном количестве различных моделей смартфонов и планшетов, каждая из которых может иметь свою уникальную конфигурацию аппаратного обеспечения и программного обеспечения.

Пример из практики: часто я сталкиваюсь с проблемами тестирования на устройствах Samsung. Нередко с ними происходят неочевидные версионные баги, которые порой приходится долго локализовать и впоследствии чинить. Когда до релиза остаётся мало времени, всегда пытаемся найти компромисс:

Разработка: «Редкий девайс, баг не критичен».
Бизнес: «Критично!! Надо фиксить ещё вчера».

Так и живём, в гармонии и балансе 😅

Для компаний с большим бюджетом на тестирование закупаются партии мобильных устройств с разными версиями ОС. На данный момент мы тестируем приложения в четырёх версиях iOS и семи версиях Android. А что делать, если денег нет, а тестировать нужно?

Можно закупить самые популярные устройства по статистике, которую публикует каждый год компания Google. По итогам 2023г. статистика выглядит следующим образом:

  • Android 13: 15% → 22,4%

  • Android 12: 16,3% → 15,8%

  • Android 11: 23,1% → 21,6%

  • Android 10: 17,8% → 16,1%

  • Android 9: 11,9% → 10,5%

  • Android 8.1: 6,1% → 5,4%

  • Android 8: 2,2% → 1,9%

  • Android 7.1: 1,5% → 1,3%

  • Android 7: 1,5% → 1,3%

  • Android 6: 2,3% → 1,9%

  • Android 5.1: 1,5% → 1,2%

  • Android 5: 0,3% → 0,2%

  • Android 4.4: 0,5 % → 0,4 %

Статистика охватывает все устройства с установленными Google Mobile Services

Статистика охватывает все устройства с установленными Google Mobile Services

Использование эмуляторов и симуляторов

Эмуляторы и симуляторы могут помочь и сэкономить как время, так и деньги в процессе кросс‑платформенного тестирования, позволяя разработчикам и тестировщикам быстро проверять функциональность приложений без необходимости использования реальных устройств.

Эмуляторы

Эмулятор — это программа, которая полностью имитирует работу целевого устройства, включая его аппаратное и программное обеспечение. Он позволяет тестировать приложения в условиях, максимально приближенных к реальным, и выявлять многие виды ошибок, связанных с взаимодействием с железом.

Однако следует учитывать, что эмуляторы не всегда идеально воспроизводят поведение реальных устройств. Например, они могут некорректно обрабатывать такие вещи, как датчики движения или работу с камерой.

Симуляторы

Симулятор — это инструмент, который имитирует только программную среду устройства, игнорируя его аппаратные характеристики. Он удобен для быстрой проверки функциональности и интерфейса приложения, но не подходит для тестирования производительности или взаимодействия с железом.

Несмотря на огромное преимущество в том, что можно запустить виртуальное устройство на любом ПК, у них есть и серьёзные недостатки. Приведу в пример некоторые из них:

  1. Ограниченная производительность: эмуляторы часто работают медленнее реальных устройств, особенно когда дело касается сложных графических элементов или ресурсоёмких задач.

  2. Отсутствие точного воспроизведения поведения устройства: симуляторы и эмуляторы не всегда точно воспроизводят поведение реального устройства, что может привести к пропуску некоторых багов или неправильной оценке производительности.

  3. Неадекватная поддержка аппаратных функций: датчики движения, камеры или GPS могут работать иначе или вообще отсутствовать в эмуляторах и симуляторах.

  4. Проблемы с сетью: виртуальные сети могут отличаться от реальных условий подключения, что затрудняет проверку работы приложения в условиях нестабильного соединения или слабого сигнала.

В нашей компании есть классное решение — ферма мобильных устройств.

Всё это похоже на майнинг‑ферму, только тут смартфоны подключаются к общему серверу, который транслирует экран и предоставляет удалённый доступ для пользователя. На всех устройствах активируется режим разработчика и включается отладка по USB. Тестировщики могут работать на общих устройствах, что существенно экономит бюджет и время на настройку каждого из устройств.

Вы спросите: «А как же быть, если нескольким тестировщикам нужен один и тот же смартфон на ферме?» Да, бывает, нужно подождать в очереди. Прокачиваем свои навыки коммуникации и терпения, узнаём, кто последний, и тестируем, тестируем и ещё раз тестируем! Хорошо, что такое бывает очень редко.

При кросс‑платформенном тестировании меня часто преследуют проблемы совместимости между различными операционными системами и устройствами. Ниже приведены примеры таких проблем и пути их решения на основе моего личного опыта.

Одна из самых известных проблем при разработке под Android — это фрагментация устройств и версий ОС. Каждый производитель модифицирует стандартную версию ОС, добавляя свои собственные настройки и компоненты. Если вы пользовались устройствами Pixel от Google, то знаете, что такое чистый Android и какое удовольствие его использовать.

Android One

Android One

Или же, например, Xiaomi со своими MIUI и HyperOS.

HyperOS

HyperOS

Samsung в своих устройствах использует OneUI.

OneUI

OneUI

EMUI от Huawei.

EMUI

EMUI


Эти оболочки можно перечислять очень долго, я показал всего лишь самые популярные из них. Каждый производитель старается персонализировать чистую версию под своё видение удобства для пользователя. Это приводит к тому, что одно и то же приложение может вести себя по‑разному на разных устройствах.

А ещё есть большое количество пользователей, которые любят кастомизировать ОС, устанавливая дополнительные лончеры, получают root‑доступ или ставят кастомные прошивки от сторонних разработчиков. Чем, собственно, я и занимался лет десять назад, когда Xiaomi и Meizu выпускали свои первые дешёвые устройства со слабым ПО, но хорошим железом. Это были времена «топ за свои деньги!».

Для iPhone это не свойственно, за что мы и любим компанию Apple. Одна ОС, которая меняется только с выходом новой версии. И на любом устройстве, которое поддерживается, она будет работать и выглядеть одинаково.

Оптимизация тестирования

Оптимизация кросс‑платформенного тестирования играет ключевую роль в повышении эффективности работы команды и снижении времени вывода продукта на рынок. Внедрение автоматизации и интеграция CI/CD‑процессов могут значительно ускорить разработку и улучшить качество конечного продукта.

Автоматизированное тестирование

Автоматизация тестирования позволяет выполнять повторяющиеся задачи быстрее и точнее, чем вручную. Она особенно полезна при проверке базовых функций приложения, которые остаются неизменными от релиза к релизу. Зачастую автоматизируют регресс‑сценарии, чтобы сэкономить время на ручное тестирование новых функциональностей.

Заключение

Кросс‑платформенное тестирование мобильных приложений — это многослойный процесс, требующий комплексного подхода и применения разнообразных инструментов. Основываясь на своем опыте, могу сделать вывод, что успешное тестирование зависит от правильного выбора эмуляторов, симуляторов и физических устройств, умения решать проблемы совместимости и оптимизации процесса тестирования.

Используя лучшие практики и опираясь на личный опыт, можно добиться высокого качества приложений, которые будут работать стабильно на различных устройствах и операционных системах.

Если статья была интересна, подпишись на мой телеграмм канал. Там я пишу посты про Сбер, работу в IT, личные мысли и опыт работы тестировщиком.
https://t.me/qaegor


ссылка на оригинал статьи https://habr.com/ru/articles/859546/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *