@example.com`).\n * Пустая строка.\n\n**Вывод:** Работа с **невалидными значениями** — это не просто поиск багов, а систематическая проверка защищённости, отказоустойчивости и пользовательского опыта приложения. Грамотное тестирование этого аспекта значительно снижает риски в продакшн-среде и напрямую влияет на качество продукта.","dateCreated":"2026-04-07T20:06:45.960049","upvoteCount":0,"author":{"@type":"Person","name":"deepseek-v3.2"}}}}
← Назад к вопросам

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

2.0 Middle🔥 154 комментариев
#Теория тестирования

Комментарии (4)

🐱
deepseek-v3.2PrepBro AI7 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

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

Невалидные значения (или недопустимые данные) — это входные данные, которые выходят за рамки ожидаемых, разрешённых или корректных для конкретной системы, функции или поля. Они нарушают определённые условия валидности, такие как тип данных, диапазон, формат, длина, бизнес-логика или семантические ограничения. В контексте тестирования (QA) проверка обработки невалидных значений — ключевая часть тестирования на устойчивость (robustness testing) и негативного тестирования (negative testing). Цель — убедиться, что система корректно обрабатывает некорректный ввод: не ломается, не вызывает неожиданных побочных эффектов и возвращает адекватные сообщения об ошибках.

Основные категории невалидных значений

Невалидные значения можно классифицировать по нескольким аспектам:

  • По типу данных:
    *   Передача строки (`"abc"`) в числовое поле (`age`).
    *   Передача `null` или `undefined` в поле, требующее значения.
    *   Передача массива или объекта туда, где ожидается примитив.

  • По диапазону и границам:
    *   Числа за пределами допустимого (например, `-1` для поля `Количество товаров`, `1000` для поля `Процент (0-100)`).
    *   Даты из будущего для поля «Дата рождения» или несуществующие даты (`31.02.2023`).

  • По формату (паттерну):
    *   Номер телефона без кода страны (`9123456789` вместо `+79123456789`).
    *   Email-адрес без символа `@` (`user.example.com`).
    *   Неверный формат JSON или XML в API-запросе.

  • По длине:
    *   Пустая строка (`""`) в обязательном поле.
    *   Строка, превышающая максимально допустимую длину (например, 1001 символ для поля с лимитом в 1000).
    *   Очень большие (объёмные) файлы при загрузке.

  • По бизнес-логике:
    *   Попытка оформить заказ на отсутствующий на складе товар.
    *   Указание несуществующего кода скидки.
    *   Перевод суммы, превышающей баланс счёта.

Почему тестирование с невалидными значениями критически важно?

  1. Предотвращение сбоев: Обеспечивает стабильность системы. Например, код без обработки невалидного ввода может вызвать исключение, которое «положит» сервис.
    // Потенциально опасный код
    function calculateDiscount(price) {
        return price * 0.1; // Упадёт, если price будет строкой или null
    }
    
    // Защищённый код
    function calculateDiscount(price) {
        if (typeof price !== 'number' || price <= 0) {
            throw new Error('Невалидное значение цены');
        }
        return price * 0.1;
    }
    
  2. Защита от уязвимостей: Многие атаки (SQL-инъекции, XSS) основаны на передаче специально сформированных невалидных данных. Правильная валидация и санитизация — основа безопасности.
    -- Пример уязвимости к SQL-инъекции при отсутствии валидации
    -- Пользовательский ввод: ' OR '1'='1
    query = "SELECT * FROM users WHERE login = '" + userInput + "'";
    -- Итоговый запрос всегда вернёт данные
    
  3. Улучшение UX: Система должна чётко информировать пользователя об ошибке, а не просто молливо ничего не делать или выводить страницу с кодом 500. Тестирование проверяет ясность и полезность сообщений об ошибках.
  4. Проверка целостности данных: Некорректные данные, попавшие в базу, могут вызвать проблемы в отчётах, аналитике и работе смежных систем.

Практика тестирования невалидных значений

Тестировщик должен целенаправленно генерировать невалидные данные на основе:

  • Требований и спецификаций (явные правила валидации).
  • Анализа граничных значений (Boundary Value Analysis) и классов эквивалентности (Equivalence Partitioning). Например, для поля int (1-100) невалидными будут 0, 101, "abc", "", null.
  • Опыта и знаний о типичных уязвимостях.

Пример тест-кейса для поля «Email»:

  • Валидные значения: user@example.com, u-s.er@sub.domain.co.uk.
  • Невалидные значения:
    *   Отсутствие `@` (`userexample.com`).
    *   Отсутствие домена (`user@`).
    *   Специальные символы в неположенном месте (`"user @example.com"`).
    *   Очень длинная строка.
    *   HTML-теги или скрипты (`<script>alert()</script>@example.com`).
    *   Пустая строка.

Вывод: Работа с невалидными значениями — это не просто поиск багов, а систематическая проверка защищённости, отказоустойчивости и пользовательского опыта приложения. Грамотное тестирование этого аспекта значительно снижает риски в продакшн-среде и напрямую влияет на качество продукта.

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