Какие характеристики предусмотреть для нового поля на фронте
Что проверяют
Умеете ли вы описать поле так, чтобы фронтенду, бэкенду и тестировщику не пришлось ничего переспрашивать. Интервьюер ждёт, что вы выйдете за пределы «тип и обязательность» и вспомните про данные, права и уже существующие записи. Следом часто спрашивают: «а что будет со старыми записями, у которых этого поля нет?»
Как отвечать
Удобно идти от интерфейса вглубь:
- назначение и подпись: зачем поле, какой процесс его использует, текст подписи, подсказка, плейсхолдер, единицы измерения;
- тип и формат: строка, число, дата, выбор из списка. Маска ввода, точность и округление, часовой пояс для дат;
- обязательность: всегда, никогда или по условию, например только для юрлиц. Значение по умолчанию и смысл пустого значения;
- валидация: длина, диапазон, формат, зависимость от других полей. Тексты ошибок и момент проверки: при вводе, при уходе с поля или при сохранении. Серверная проверка обязательна, клиентская нужна для удобства;
- справочник: если это выбор из списка, откуда значения, сортировка, поиск, что делать с устаревшим значением;
- права и видимость: кто видит и кто редактирует, в каких статусах объекта поле заблокировано;
- связи: влияет ли поле на другие поля, расчёты, фильтры, выгрузки и отчёты;
- хранение и API: колонка в базе, имя и тип в контракте,
nullable, обратная совместимость для внешних потребителей; - существующие данные: миграция, заполнение старых записей или правило их показа;
- аудит и доступность: нужна ли история изменений, связана ли подпись с полем для экранного диктора.
Закончите тем, что всё это попадает в спецификацию и в критерии приёмки, по которым тестировщик напишет кейсы.
Где спотыкаются
Ограничиваются визуальной частью: «текстовое поле, обязательное». Разработчик потом сам выбирает длину, формат и текст ошибки, и на трёх экранах оказываются три разных правила.
Описывают валидацию только на фронте. Запрос в API можно отправить мимо формы, поэтому те же правила должны работать на сервере.
Забывают про старые записи и интеграции. Новое обязательное поле ломает редактирование существующих объектов и импорт из соседней системы, которая про него ещё не знает.