Что такое валидация данных и зачем она нужна?

«Что такое валидация данных и зачем она нужна?» — вопрос из категории Основы тестирования, который задают на 26% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Валидация данных — это процесс проверки входных или выходных данных на соответствие заданным критериям, правилам и форматам перед их дальнейшей обработкой или использованием. Ее цель — обеспечить корректность, безопасность и целостность данных в системе.

Пример валидации email на Python:

import re

def validate_email(email: str) -> bool:
    """Проверяет, соответствует ли строка базовому формату email."""
    # Регулярное выражение для проверки формата
    pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$'
    return re.match(pattern, email) is not None

# Тесты
print(validate_email("user@example.com"))  # True - валидный email
print(validate_email("invalid-email"))      # False - неверный формат
print(validate_email("user@.com"))          # False - отсутствует домен

Основные типы валидации:

Тип Где выполняется Цель Пример
Клиентская (Frontend) В браузере (JavaScript) Быстрая обратная связь пользователю, снижение нагрузки на сервер. Проверка обязательных полей формы до отправки.
Серверная (Backend) На сервере (Python, Java, etc.) Гарантия безопасности и корректности, так как клиентскую проверку можно обойти. Проверка логина/пароля, санитизация входных данных от SQL-инъекций.

Виды проверок по содержанию:

  • Синтаксическая валидация: Проверка формата (email, телефон, дата).
  • Семантическая валидация: Проверка логической корректности (дата рождения не в будущем, возраст >= 18).
  • Валидация бизнес-правил: Проверка на соответствие доменным ограничениям (достаточно ли средств на счету для перевода).

Зачем это нужно? Без валидации приложение уязвимо к ошибкам, некорректному поведению и серьезным угрозам безопасности, таким как инъекции или повреждение данных.