Ответ вслух Middle Тестирование обновлено

Стратегия тестирования Flutter-приложения

Вопрос

Как вы организуете тестирование во Flutter-проекте?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Опираюсь на пирамиду. Основа это unit-тесты на логику: блоки, нотифаеры, мапперы, валидаторы, с моками репозиториев через mocktail, для блоков blocTest.

Что должно прозвучать в ответе

  • Пирамида: много unit, достаточно widget, немного integration

  • Unit: бизнес-логика, блоки и нотифаеры через моки репозиториев

  • Widget: экраны с подменёнными зависимостями, поиск по ключам, `pump`

  • Integration: критичные сценарии на устройстве или эмуляторе в CI

  • Golden-тесты для дизайн-системы в фиксированном окружении

  • Тестируемость: зависимости снаружи, логика не в `build`

Что могут спросить следом

  • Как замокать HTTP?
  • Что тестировать в первую очередь при нехватке времени?
  • Как тестировать навигацию?

Разбор

Образцовый ответ: «Опираюсь на пирамиду. Основа это unit-тесты на логику: блоки, нотифаеры, мапперы, валидаторы, с моками репозиториев через mocktail, для блоков blocTest. Над ними widget-тесты экранов: оборачиваю в MaterialApp и подменённые провайдеры, нахожу элементы по ключам, проверяю состояния загрузки, ошибки, данных и взаимодействия. На самый верх несколько integration-тестов на критичные сценарии: вход, оформление заказа, они идут в CI на эмуляторе. Для компонентов дизайн-системы golden-тесты, эталоны генерируем в Docker, чтобы не зависеть от ОС. Чтобы всё это было возможно, зависимости передаются снаружи, а логика не живёт в build»

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.