Какие проверки нужно сделать для поля ввода в мобильном приложении?
Что проверяют
Умеете ли вы видеть в поле ввода не только текст и валидацию, но и всё, что добавляет мобильная платформа: клавиатуру, автозаполнение, прерывания, доступность. Следом обычно просят набросать проверки для конкретного поля, например телефона или кода из СМС.
Как отвечать
Начните с уточнения: какое поле, какие требования к формату и где идёт валидация. Потом разложите проверки по группам:
- данные: пустое значение, только пробелы, минимальная и максимальная длина по границам (N-1, N, N+1), недопустимые символы, эмодзи, вставка длинного текста из буфера;
- клавиатура: правильный тип (цифровая для телефона, раскладка с
@для почты), задаётся черезkeyboardTypeна iOS иinputTypeна Android; кнопка «Далее» переводит фокус, клавиатура не перекрывает поле и кнопку отправки; - автозаполнение: подстановка кода из СМС (
textContentType = .oneTimeCodeна iOS,autofillHintsна Android), менеджер паролей, маска телефона не ломается при вставке номера с+7и с8; - платформа: поворот экрана, сворачивание приложения и возврат, входящий звонок посреди ввода, системная кнопка «Назад», тёмная тема, крупный системный шрифт;
- доступность: поле читается VoiceOver и TalkBack с понятной подписью, ошибка озвучивается, а не только подсвечивается красным;
- сервер: клиентскую проверку легко обойти, поэтому тот же запрос с невалидными данными стоит отправить через прокси (Charles, Proxyman, mitmproxy) и убедиться, что бэкенд его отклонит.
Хорошо закончить приоритетом: сначала позитивный сценарий и границы, потом платформенные особенности на двух-трёх реальных устройствах с разными версиями ОС.
Где спотыкаются
Переносят чек-лист веб-формы один в один и забывают про клавиатуру, прерывания и жизненный цикл приложения. Именно там живут мобильные баги: введённый текст пропадает после сворачивания.
Говорят «проверю SQL-инъекции в поле», не уточняя, что атакуют сервер, а не приложение. Такая проверка имеет смысл на уровне API, а не набором кавычек в эмуляторе.
Ограничиваются эмулятором. Сторонние клавиатуры, автозаполнение и поведение на слабом железе эмулятор воспроизводит плохо.