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