How to test mobile apps
Типы мобильных приложений
Говоря о тестировании мобильных приложений, необходимо снова вспомнить какие виды мобильных приложений у нас бывают:
- Native apps
- Hybrid apps
- Web apps
Ниже представлены некоторые отличия между видами мобильных приложений.

Процесс разработки мобильных приложений особо ничем не отличается от стандартного процесса разработки. Мы так же проходим через этапы:
- Планирования
- Анализа
- Дизайна
- Разработки
- Тестирования и Интеграции
- Поддержки

SO WHAT IS THE DIFFERENCE?
Если брать во внимание тестирование гибридных и нативных приложений, то есть разница к подходу тестирования. Грубо говоря, если мы работаем с нативными приложениями – то нам необходимо тестировать полный функционал и на iOS, и на Android отдельно. Если мы работаем с гибридными приложениями – то основной акцент стоит уделить тестированию нативных функций, таких как date and time pickers, доступ к фотографиям, push-уведомления, любые другие нативные функции. В данном случае, если основной функционал приложения работает на версии для iOS, то он будет работать и на версии Android.

Еще одной особенностью тестирования мобильных приложениях (речь идет о гибридных или нативных) является то, что для начала тестирования нам необходимо получить тестовую сборку (билд).
Build (сборка) – конечный результат компиляции программы с уникальным номером версии сборки. Обычно является достаточно долгим процессом (около 40 минут) и могут возникать ошибки во время компиляции.
Версия приложения может указываться в самой сборке. Может быть на более видном месте или на страницах настроек, конфигураций, профиля. Версия приложения нам помогает быстрее понять на каком этапе или в какой конкретно сборке появился и/или воспроизводиться баг и поможет разработчику переключиться на верную сборку.
Для того, что бы понимать что каждая из цифр версии обозначает – рассмотрим пример. Например, версия приложения 1.7.1.0.
- Первая цифра “1” – это основной номер сборки (может меняется, если в приложении изменили интерфейс на новый, добавили много нового функционала, что значительно изменило работу приложения, и так далее);
- Вторая цифра “7” – незначительный номер сборки (небольшие изменения, сборник фиксов, добавлен один небольшой новый функционал);
- Третья цифра “1” – номер сборки обслуживания (исправление багов, хот-фиксы);
- Четвертая цифра “0” – номер сборки (может не использоваться, может отображать количество тестовых сборок до релиза);
Нам так же нужна возможность на чем-то протестировать, другими словами что-то, где мы можем развернуть нашу тестовую сборку. Для тестирования мобильных приложений обычно используют симуляторы/эмуляторы или реальные девайсы.
Эмуляторы/симуляторы позволяют нам:
- тестировать на разных девайсах и разных версиях операционных систем (OS);
- находить ошибки еще до тестирования на реальных девайсах;
- экономит деньги на покупку большого количества разных девайсов;

WHAT TO USE
BrowserStack
Дает возможность тестировать не только мобайл вью, но и отдельно запускать приложения на симуляторах. Есть большой ряд мобильных телефонов, и разные версии операционных система. Можно так же менять локацию, делать скриншоты, сворачивать/разворачивать приложения, есть возможность использовать Dev tools, и так далее. Но есть и минусы из личного использования – при работе с мобильными приложениями иногда очень тормозит, и в данном случае сложно понять – это проблема приложения или BrowserStack.


Xcode
Xcode — интегрированная среда разработки (IDE) программного обеспечения для платформ macOS, iOS, watchOS и tvOS, разработанная корпорацией Apple. В основном используется разработчиками для работы над приложениями, но так как там есть встроенный эмулятор, мы можем так же использовать Xcode для тестирования.

Android Studio
Android Studio — интегрированная среда разработки производства Google, с помощью которой разработчикам становятся доступны инструменты для создания приложений на платформе Android OS. Точно так же, как и Xcode, используется в основном разработчиками для работой над приложениями. Но благодаря встроенному эмулятору, мы можем его использовать для тестирования мобильных приложений. Позволяет выбирать девайсы из списка или создавать с определенными параметрами, и так же использовать разные версии операционных систем.

WHAT ABOUT REAL DEVICES
Для того, чтоб протестировать тестовый билд на реальном девайсе нам необходимо его как-то получить на девайс. С тестированием мобильных приложения на Android все гораздо проще. В данном случае разработчик собирает для тестировщика тестовый билд в виде файла с расширением .apk и передает его тестировщику. Все, что необходимо сделать – это скачать этот файл на мобильный телефон с Android и установить. Если не возникло никаких ошибок во время скачивания или установки, все – вы готовы тестировать приложение.
С iOS в данном случае все сложнее из-за того, что сама по себе платформа iOS более защищенная, поэтому возникают сложности с установкой тестовых билдов на iPhone. Для распределения и получения iOS билдов используют дополнительные приложения. Их очень много, некоторые из них представлены ниже:

Некоторые дистрибьюторы для приложений
TestFlight
TestFlight — готовое решение, с помощью которого разработчики могут организовать тестирование бета-версий приложений и блиц-приложений для iOS, tvOS и watchOS. Для начала работы – получения приглашения – нужен apple Id, который используется на мобильном телефоне. Так же, TestFlight является отдельным приложением, которое скачивается и где будут потом хранится ранние сборки.

Crashlytics
Crashlytics – бесплатный инструмент отслеживания и анализа багов в мобильных приложениях на операционных системах iOS и Android. Так же программа помогает с дистрибуцией тестовых билдов, что позволяет тестировщикам тестировать их на реальных приложения. С получением версий для Android все проще, c iOS сложнее, так как тестировщику необходимо сообщить UDID номер разработчику, что бы он вас мог добавить в список тестировщиком и таким образом вы сможете получать уведомления о новых версиях.

AppCenter
Visual Studio App Center — это система для автоматизации жизненного цикла приложений для iOS, Android, Windows и macOS. Она поможет подключить репозиторий, собрать проект в облаке и протестировать сразу на тысячах устройств. Затем, например, разослать приложения тестировщикам бета-версий и в магазины приложений, провести мониторинг работы в режиме реального времени, отследить отчеты о сбоях и аналитику.



