Стратегия тестирования Flutter-приложения
Вопрос
Как вы организуете тестирование во Flutter-проекте?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Пирамида: много unit, достаточно widget, немного integration
Unit: бизнес-логика, блоки и нотифаеры через моки репозиториев
Widget: экраны с подменёнными зависимостями, поиск по ключам, `pump`
Integration: критичные сценарии на устройстве или эмуляторе в CI
Golden-тесты для дизайн-системы в фиксированном окружении
Тестируемость: зависимости снаружи, логика не в `build`
Что могут спросить следом
- Как замокать HTTP?
- Что тестировать в первую очередь при нехватке времени?
- Как тестировать навигацию?
Разбор
Образцовый ответ: «Опираюсь на пирамиду. Основа это unit-тесты на логику: блоки, нотифаеры, мапперы, валидаторы, с моками репозиториев через mocktail, для блоков blocTest. Над ними widget-тесты экранов: оборачиваю в MaterialApp и подменённые провайдеры, нахожу элементы по ключам, проверяю состояния загрузки, ошибки, данных и взаимодействия. На самый верх несколько integration-тестов на критичные сценарии: вход, оформление заказа, они идут в CI на эмуляторе. Для компонентов дизайн-системы golden-тесты, эталоны генерируем в Docker, чтобы не зависеть от ОС. Чтобы всё это было возможно, зависимости передаются снаружи, а логика не живёт в build»
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.