Кроссплатформенный Путь Мобильного Тестировщика Или Как Стать Flutter Qa

Привет, Хабр! Для начала позвольте представиться: я тестировщик мобильных приложений в компании.

АТИ.

СУ .

Я часто тестирую приложения для Android, но в этом году моя команда пошла по кроссплатформенному пути, используя технологию Flutter. В этой статье я расскажу, в чем особенности тестирования приложения на Flutter для iOS и Android и чем оно отличается от тестирования нативного приложения.



Кроссплатформенный путь мобильного тестировщика или как стать Flutter QA



Как сэкономить время и на что его потратить потом

Мы выбрали Flutter, потому что нам нужно было приложение сразу для двух платформ.

Оказалось, что сэкономить время можно не только в процессе разработки, но и во время тестирования.

Чтобы ускорить тестирование, мы придумали стратегию: на каждой платформе (iOS и Android) мы тестируем только платформенно-специфичный функционал, а все остальное тестируем на одной платформе.

Что такое функциональность, специфичная для платформы:

  • разрешения приложения: доступ к файловой системе, камере, георазрешению и т. д.;
  • сервисы приложений;
  • взаимодействие с веб-представлением;
  • всплывающее уведомление.

Также стоит учитывать особенности разных версий одной и той же платформы, как и при нативном тестировании.

Что не является специфичным для платформы функционалом:

  • Пользовательский интерфейс и верстка: цвета, шрифты, расположение элементов;
  • работа кнопки;
  • выполнение сетевых запросов и обработка ответов;
  • реагирование на сетевые ошибки, таймауты и отсутствие сети;
  • работа с базами данных, миграция баз данных;
  • тост;
  • переворот экрана;
  • изменить часовой пояс и дату;
  • функциональные части приложения (или бизнес-логики).

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

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

Таким образом, кроссплатформенность приложения и подход к его тестированию позволяют сэкономить много времени.

Но сначала стоит разобраться в технических деталях.



Особенности релизных и отладочных сборок

Для тестирования мы используем как отладочную, так и релизную версии.

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

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

Непосредственно перед релизом мы проводим тестирование релизной сборки.

В отличие от нативных приложений, производительность Flutter-приложения в отладочной сборке значительно ниже, чем в релизной.

Это может привести к замедлению отклика и заиканию.

Причина такого различия кроется в виртуальной машине (Dart VM) и JIT (точно в срок) компиляторе, которые используются для отладочных версий.

(Dart — это язык, используемый для написания приложений Flutter).



Проксирование

Обычно при тестировании собственного приложения на проксирование необходимо:
  1. откройте на своем компьютере сниффер (подробности его настройки мы опускаем);
  2. в настройках устройства установите прокси-сервер для сети wifi, указав IP-адрес и порт компьютера с включенным сниффером;
  3. скачайте и установите сертификат сниффера на устройство.

Этот метод не будет работать в приложении Flutter, поскольку http-клиент встроен в dart и является популярным клиентом.

дио не используйте настройки прокси-сервера, установленные на устройстве.

Для этих клиентов настройки изолированы от платформ, поэтому настройки прокси можно реализовать только внутри приложения.

Для удобства тестирования разработчики создали экран QA, на котором можно ввести адрес и порт.

Кроссплатформенный путь мобильного тестировщика или как стать Flutter QA

Экран контроля качества: настройки прокси-сервера

Экран контроля качества

Экран контроля качества — это внутренний функционал, доступный только в отладочной версии приложения.

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

Я приведу несколько примеров использования QA screen для проверки бизнес-логики.

1. У вас есть экран с нумерацией данных.

Чтобы быстрее протестировать все случаи нумерации страниц, очень удобно настроить свойства ограничения-смещения на этом экране.

То есть на экране есть настройка, ограничивающая количество элементов в пагинации.

2. У вас есть скрытые функции, которые раскрываются при настройке флагов функций.

Обычно такие флаги есть в Firebase или другой удаленной конфигурации.

Чтобы не зависеть от настроек удаленного конфига, удобнее менять эти параметры внутри приложения.

3. В вашем приложении есть какой-то фоновый сервис.

Вы можете управлять жизненным циклом службы с помощью экрана контроля качества, чтобы эмулировать ее поведение.

Из-за своей кроссплатформенности Flutter не поддерживает некоторые опции, знакомые тестировщикам Android. Например, параметры пользовательского интерфейса в настройках разработчика.

Давайте рассмотрим эту проблему более подробно.



Тестирование элементов пользовательского интерфейса

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

Мы обнаружили, что некоторые параметры тестирования пользовательского интерфейса не работают в приложении Flutter. Например, «показать границы объекта».

Такое поведение вызвано тем, что Flutter использует собственную систему рендеринга, основанную на графической библиотеке Skia. Для операционной системы (как iOS, так и Android) экран приложения Flutter — это просто окно системы рендеринга, в котором отрисовываются элементы, поэтому он не может подсвечивать границы.

Чтобы протестировать пользовательский интерфейс, разработчики добавили параметры отладки на экран контроля качества.



Кроссплатформенный путь мобильного тестировщика или как стать Flutter QA

Экран контроля качества: параметры отладки Опишу некоторые варианты отладки, которые мы использовали:

  • checkerboardRasterCacheImages — проверить, какие изображения кэшируются;
  • debugShowMaterialGrid — рисует сетку;
  • debugPaintPointersEnabled — кнопки мигают при нажатии;
  • debugPaintSizeEnabled — для каждого объекта рисования добавлять видимые границы, отображать отступы и направление выравнивания, а также направления прокрутки для элементов, поддерживающих прокрутку;
  • debugPaintLayerBordersEnabled — отображать границы каждого слоя рендеринга;
  • debugRepaintRainbowEnabled — отображает границы каждого слоя рендеринга; по мере увеличения частоты рендеринга границы элементов окрашиваются в разные цвета;
  • debugRepaintTextRainbowEnabled — аналог debugRepaintRainbowEnabled, отмечать цветом-индикатором элементы, регулярно перезаписываемые, но относящиеся к текстовым элементам;
  • showPerformanceOverlay — отображает временную шкалу для построения и отображения кадра.

Более подробно о различных вариантах отладки пользовательского интерфейса написано в этом статья .



Тестирование стиля

При разработке приложения отдельной болевой точкой является перенос дизайна с макетов.

Для решения этой проблемы мы использовали популярное решение: токенизацию системы стилей в приложении.

Мы сформулировали отдельные системы токенов для текста и цветов.

Чтобы упростить тестирование токенов, мы создали два отдельных экрана, на которых вы можете визуально сравнить дизайнеры токенов, запланированные в Figma, и их реализацию в приложении.



Кроссплатформенный путь мобильного тестировщика или как стать Flutter QA

? краны для тестирования стилей Как вы знаете, в iOS есть два стиля текста: текстовый и отображаемый.

Для текстового стиля расстояние между символами больше, чем для отображаемого.

При автоматическом переносе стилей весь текст в iOS был в текстовом стиле.

Однако нас это не везде в приложении устроило, поэтому для проверки стилей разработчики добавили таблицу стилей в отладочную версию приложения.

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

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

Инструменты разработки Flutter

Flutter Dev Tools — мощный инструмент для отладки и тестирования приложений Flutter. Он имеет множество полезных опций как для тестировщиков, так и для разработчиков: монитор производительности, использование памяти, сниффер, логи.

Чтобы попасть в инструмент, вам необходимо:

  1. установите плагин Flutter в Android Studio;
  2. запустите приложение Flutter из Android Studio;
  3. откройте Flutter Dev Tools.


Кроссплатформенный путь мобильного тестировщика или как стать Flutter QA

Откройте инструменты разработки Flutter из Android Studio. В вашем браузере откроется страница Flutter Dev Tools.

Кроссплатформенный путь мобильного тестировщика или как стать Flutter QA

Инструменты разработки Flutter А теперь я расскажу вам немного больше о функциях Dev Tools, полезных тестировщику.

Производительность .

Здесь вы можете отслеживать производительность приложения в FPS (кадров в секунду).

Вертикальная шкала указывает время отрисовки кадра в миллисекундах.

Если пиковые значения превышают 16 мс, следует подумать об исправлении такого поведения.

Мониторить производительность имеет смысл только на релизной сборке.



Кроссплатформенный путь мобильного тестировщика или как стать Flutter QA

Инструменты разработки Flutter: производительность Память .

Показывает использование памяти приложением.

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



Кроссплатформенный путь мобильного тестировщика или как стать Flutter QA

Инструменты разработки Flutter: память Сеть .

Это простой сниффер, но без возможности подмены трафика.

Он не требует дополнительных настроек на устройстве или установки сертификатов, а также ловит не только http, но и веб-сокеты.



Кроссплатформенный путь мобильного тестировщика или как стать Flutter QA

Инструменты разработки Flutter: сеть, HTTP

Кроссплатформенный путь мобильного тестировщика или как стать Flutter QA

Инструменты разработки Flutter: сеть, WebSocket Ведение журнала .

Здесь все просто - это логи.

Их можно сортировать по времени, сообщению и типу.

Также есть строка поиска.



И наконец - впечатления

Приложение, написанное на Flutter, сложно отличить от нативного — как с точки зрения пользователя, так и с точки зрения ручного тестировщика.

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

Наше приложение предназначено для делового и внутреннего использования, поэтому в нем не много анимации и сложной графики.

Он не страдает ни по скорости запуска, ни по производительности в релизных сборках.

Пользовательский интерфейс отзывчив, и его сложно отличить от нативного.

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

P.S. Посмотрите, как переводится слово «трепетание».

Возможно, вы удивитесь и тоже полетите в кроссплатформенность! Теги: #Тестирование мобильных приложений #Тестирование ИТ-систем #мобильные приложения #flutter #мобильное тестирование #кроссплатформенность #кроссплатформенность #мобильная разработка flutter #flutter app #кроссплатформенное мобильное программирование #flutter

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.