Какие методы и техники валидации данных и функционала вы применяете?

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

Ответ

Для комплексной валидации я применяю комбинацию следующих методов:

1. Анализ граничных значений (Boundary Value Analysis - BVA) и классов эквивалентности (Equivalence Partitioning - EP):

  • BVA: Тестирование значений на границах допустимых диапазонов. Например, для поля "Возраст (18-65)": 17, 18, 65, 66.
  • EP: Разделение входных данных на валидные/невалидные классы. Например, email: valid@domain.com (валидный) vs invalid@.com (невалидный).

2. Валидация форматов с помощью регулярных выражений:

import re
# Проверка российского номера телефона
phone_pattern = r'^+7d{10}$'
def validate_phone(phone: str) -> bool:
    return bool(re.match(phone_pattern, phone))

assert validate_phone("+79123456789") == True
assert validate_phone("89123456789") == False  # Неверный формат

3. Валидация API-ответов:

  • Статус-коды: 200 OK, 201 Created, 400 Bad Request, 404 Not Found.
  • Схема данных (JSON Schema): Гарантия правильной структуры и типов данных в ответе.
  • Заголовки (Headers): Проверка Content-Type, Cache-Control и др.

4. Валидация на уровне базы данных: Сверка данных, отображенных в UI или переданных через API, с фактическими записями в БД (целостность, актуальность).

5. Контекстно-зависимая валидация:

  • Кросс-браузерная: Единообразие отображения и поведения.
  • Валидация бизнес-логики: Проверка сложных правил (например, расчет скидки на основе суммы и статуса клиента).

Эти техники применяются как в ручном, так и в автоматизированном тестировании (с использованием Selenium, pytest, Postman, специализированных библиотек).