Шпаргалка для QA: как тестировать Flutter-приложения

Привет! Меня зовут Юлия Андреева, я QA-специалист в AGIMA. Мы много работаем с Flutter-приложениями, и я увидела, что не все соображают их специфику. В данной для нас статье расскажу о главных инструментах и подходах, которые используются конкретно к тестированию Flutter.

Что принципиально знать о Flutter

Flutter – это кросс-платформенный фреймворк от Гугл. С его помощью можно разрабатывать приложения сходу для Android, iOS, Web и даже рабочего стола. Сейчас в Гугл Play уже наиболее 700 тыщ Flutter-приложений. 

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

Индивидуальности тестирования Flutter-приложений

Попробую суммировать, какие тонкости наша команда замечает при работе с Flutter-проектами. Я их соединила в три огромные группы.

● Архитектура Flutter.

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

● Кросс-платформенность.

Можно очень сберечь время на тестировании приложения для каждой платформы. Платформенно-специфические функциональности тестируешь раздельно на iOS и на Android, всё остальное – на некий одной.

● Специальные инструменты тестирования.

Flutter предоставляет собственные инструменты для тестирования виджетов и интеграционного тестирования, к примеру FlutterDevTools.

Задачи и их решение при тестировании Flutter-приложений

Самая пользующаяся популярностью неувязка – отслеживание трафика. Dart обычно употребляет высокоуровневые библиотеки для HTTP-запросов. Библиотеки инкапсулируют низкоуровневые детали сетевого взаимодействия. И это затрудняет прямой доступ либо мониторинг данных – как отправляемых, так и получаемых.

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

При тестировании различий UI/UX на различных платформах почаще всего мы сталкивались с таковыми неуввязками:

  • Задачи с анимацией, обращайте внимание на переходы и скроллы, в особенности на iOS-устройствах.
  • Работа с жестами при закрытии и свайпах экранов.
  • Отображение системных диалоговых окон.

Не стоит фокусироваться на всех клавишах. Лучше уделять свое внимание лишь на значительные различия. Плюс помогает общение с обществом. На GitHub можно отыскать огромное количество уже открытых трудности, также добавить свою.

Не считая того, в решении всех заморочек помогает Flutter DevTools.

Flutter DevTools

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

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

Так смотрится интерфейс Flutter DevTools

Интеграция голден тестов в процесс разработки

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

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

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

Пример реализации:

Внедрение автоматизации

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

Что нужно учесть:

  • Flutter-совместимость. Наши испытания должны гласить на одном языке с Flutter, так что выбирайте инструмент, дружащий с Dart. Посреди их Selenium, Patrol, утилиты integration_test (ex-Flutter Driver), библиотеки flutter_gherkin().
  • Кросс-платформенность. Flutter не понимает границ, так что и наш фреймворк должен уметь работать и на Android, и на iOS.
  • Дружба с CI/CD. Желаете скорости и удобства? Удостоверьтесь, что ваш фреймворк ладит с Jenkins, GitLab и иными CI/CD-инструментами.
  • Популярность в промышленности. Выбирайте фреймворк, который имеет огромное комьюнити.

Наш выбор пал на Appium – это открытый инструмент для автоматизации тестирования мобильных приложений, который поддерживает огромное количество платформ, так же как и Flutter. Испытания для Appium можно писать на различных языках программирования. А еще он просто встраивается с системами непрерывной интеграции и доставки (CI/CD).

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

В итоге при помощи Appium мы очень уменьшили время на регрессионное тестирование. Ранее полный регресс в нашей команде занимал до 90 часов, а опосля автоматизации время сократилось до 33 часов. Среднее время выполнения 1-го теста ~1,5 минутки. Около 10% изъянов заводилось благодаря автотестам.

Параметризацией и оптимизацией тестовых сценариев удалось уменьшить количество тест-кейсов с 1334 до 483 – наиболее чем вдвое! Параметризация дозволила создать испытания наиболее гибкими и адаптировать их под разные условия. В итоге мы стали эффективнее распределять наши ресурсы и уделять больше внимания новеньким функциям и улучшениям.

End-2-end тест на 6 страничек проходит всего за полторы минутки

Заключение

Тестирование Flutter-приложений просит специфичного подхода, учитывающего неповторимые индивидуальности фреймворка.

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

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

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