Что такое невалидные значения в контексте тестирования?

Ответ

Невалидные (некорректные) значения — это входные данные, которые не соответствуют ожидаемым требованиям, спецификациям или договоренностям. Их использование направлено на проверку устойчивости системы к ошибкам.

Категории невалидных значений:

  1. Неправильный тип данных: Передача строки ("abc") в поле, ожидающее число.
  2. Нарушение формата: Email без @ (user.example.com), телефон в неверном формате.
  3. Выход за границы диапазона: Отрицательный возраст (-5), процент больше 100 (150%).
  4. Пустые или отсутствующие значения: null, undefined, пустая строка "" для обязательного поля.
  5. Опасные данные (Security): SQL-инъекции (' OR '1'='1), XSS-скрипты (<script>alert(1)</script>).
  6. Очень длинные строки: Попытка вызвать переполнение буфера или проверить ограничения БД.

Пример проверки на Python:

def validate_user_data(name: str, age: int, email: str) -> tuple[bool, list[str]]:
    """Валидация входящих данных пользователя."""
    errors = []
    # 1. Проверка обязательных полей
    if not name or name.strip() == "":
        errors.append("Имя не может быть пустым.")
    # 2. Проверка диапазона
    if not (0 <= age <= 120):
        errors.append(f"Возраст {age} вне допустимого диапазона (0-120).")
    # 3. Проверка формата (упрощенная)
    if "@" not in email or "." not in email.split("@")[-1]:
        errors.append(f"Email '{email}' имеет неверный формат.")
    # 4. Проверка на опасные символы (базовая)
    if "<" in name or ">" in name:
        errors.append("Имя содержит потенциально опасные символы.")

    return (len(errors) == 0, errors)

# Тесты с невалидными значениями
print(validate_user_data("", -1, "invalid-email"))
# Output: (False, ['Имя не может быть пустым.', 'Возраст -1 вне допустимого диапазона (0-120).', 'Email invalid-email имеет неверный формат.'])

Цель тестирования с невалидными значениями:

  • Повышение надежности: Убедиться, что система корректно обрабатывает ошибки (выдает понятные сообщения, не падает).
  • Усиление безопасности: Выявление потенциальных уязвимостей, таких как инъекции или переполнение буфера.
  • Улучшение UX: Гарантия того, что пользователь получит адекватную обратную связь при вводе некорректных данных.