Шпаргалка для 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 разрешают повысить эффективность и точность тестирования для вашего продукта. В этом мы удостоверились на своем опыте.