Какие негативные проверки следует делать кроме позитивных на ввод и галерею
Что проверяют
Видите ли вы за полем ввода и выбором из галереи всё, что ломается на реальном устройстве: права, прерывания, память, особенности платформы. Следом нередко спрашивают, чем поведение на Android отличается от iOS.
Как отвечать
Разделите ответ на две части и в каждой идите по классам ошибок.
Поле ввода:
- пустое и из одних пробелов: строка из пробелов не должна считаться валидным именем. Отдельно проверьте, обрезаются ли пробелы по краям;
- границы длины: минимум минус один, максимум плюс один, вставка длинного текста из буфера;
- символы: эмодзи, иероглифы,
<script>, кавычки, строка' OR '1'='1. Данные должны сохраниться как текст и безопасно отобразиться; - формат: почта без домена, телефон с буквами, дата 31 февраля;
- клавиатура: смена раскладки, автозамена, голосовой ввод, поворот экрана с введённым текстом.
Галерея:
- права: отказ в доступе, повторный отказ, после которого система больше не показывает диалог, доступ только к выбранным фото (он есть и в iOS, и в свежих Android). Приложение должно объяснить, что делать, а не показывать пустой экран. Системный пикер фото работает без разрешения на всю галерею, это тоже стоит проверить;
- пустая галерея и файл, удалённый, пока открыт пикер;
- фото не на устройстве: снимок в iCloud или другом облаке, который ещё не скачан;
- необычные файлы: панорама, HEIC, GIF, видео вместо фото;
- прерывания: звонок, сворачивание, выгрузка процесса системой, пока пользователь выбирает фото. После возврата выбранное не должно теряться, а экран падать;
- нет места на устройстве для временной копии.
Где спотыкаются
Ограничиваются форматом и размером файла. Права доступа и восстановление после выгрузки процесса дают больше всего падений в проде.
Проверяют длину только набором с клавиатуры. Вставку из буфера и автозаполнение нужно проверять отдельно: ограничение, повешенное на нажатия клавиш, их пропускает.
Не формулируют ожидаемый результат. «Ввести 300 символов» без «поле обрезает до 255 и показывает счётчик» это не проверка.