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