Опишите процесс тестирования страницы загрузки аватара в мобильном приложении
Что проверяют
Умеете ли вы разложить маленькую функцию на риски и проверить не только удачный сценарий. Такие задачи дают на ходу: смотрят не список кейсов, а порядок мышления и то, догадаетесь ли вы спросить требования, прежде чем перечислять проверки.
Как отвечать
Сначала уточните условия: допустимые форматы и размер, минимальное и максимальное разрешение, есть ли обрезка, где хранится изображение, есть ли модерация, обязателен ли аватар, какие платформы и версии систем поддерживаются.
Дальше идите по направлениям, а не по списку форматов:
- источники: камера, галерея, файловый менеджер, снимок экрана, живое фото и формат HEIC, анимированный файл, очень вытянутое изображение;
- границы: размер ровно на пределе и на байт больше, пустой файл, крайние разрешения и пропорции;
- негатив: неподдерживаемый формат, битый файл, подменённое расширение, удаление файла во время отправки;
- разрешения системы: отказ в доступе к камере и галерее, отзыв доступа после выдачи, режим доступа только к выбранным фото;
- сеть и жизненный цикл: медленный канал, обрыв на середине, переключение сети, сворачивание приложения, звонок, выгрузка процесса из памяти;
- интерфейс: прогресс, отмена, повторная загрузка, отображение во всех местах, крупный шрифт, тёмная тема;
- сервер: что реально сохранено, ужимается ли оригинал, и проверки мимо интерфейса, прямо по API.
Где спотыкаются
Ограничиваются форматами и размером. Мобильные дефекты живут в прерываниях: обрыв сети на середине отправки, сворачивание приложения, отзыв доступа к галерее, и без этих сценариев набор выглядит поверхностным.
Проверяют только через интерфейс. На экране успех, а на сервере лежит несжатый оригинал, или чужой идентификатор в запросе позволяет перезаписать не свой аватар: такое находится только запросом напрямую.
Забывают про кэш и ориентацию. Аватар меняется, а везде показывается старый, потому что ссылка осталась прежней; снимок с камеры разворачивается боком, потому что поворот хранится в метаданных и учитывается не везде.