Что такое негативный результат в тестировании программного обеспечения?

Ответ

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

Ключевая идея: Негативный результат — это успех теста, а не баг. Он демонстрирует, что механизмы обработки ошибок работают.

Примеры негативных тестов и их ожидаемых результатов: Тестовый сценарий (Невалидный ввод) Ожидаемый негативный результат (Успех теста)
Ввод букв в поле "Возраст" Отображение понятного сообщения об ошибке валидации.
Попытка деления на ноль Возврат ошибки ZeroDivisionError или специального значения (Infinity/NaN).
Отправка пустого обязательного поля Блокировка отправки формы с подсветкой проблемного поля.
Передача SQL-инъекции в поле поиска Безопасная обработка запроса, инъекция не выполняется.
Загрузка файла недопустимого формата Сообщение "Формат файла не поддерживается".

Пример кода (Python):

# Функция для тестирования
def process_positive_number(value):
    """Обрабатывает только положительные числа."""
    if not isinstance(value, (int, float)):
        raise TypeError("Ожидается число.")
    if value <= 0:
        raise ValueError("Число должно быть положительным.")
    return value * 2

# НЕГАТИВНЫЕ ТЕСТ-КЕЙСЫ (ожидается исключение — это успех)
test_cases = [
    ("abc", TypeError),      # Не число
    (-5, ValueError),        # Отрицательное число
    (0, ValueError),         # Ноль
    (None, TypeError),       # None
]

for input_data, expected_exception in test_cases:
    try:
        result = process_positive_number(input_data)
        print(f"ТЕСТ ПРОВАЛЕН для {input_data}. Ожидалось {expected_exception}, но получен результат {result}.")
    except expected_exception as e:
        print(f"ТЕСТ ПРОЙДЕН для {input_data}. Поймано ожидаемое исключение: {type(e).__name__} - {e}")
    except Exception as e:
        print(f"ТЕСТ ПРОВАЛЕН для {input_data}. Поймано неожиданное исключение: {type(e).__name__} - {e}")

Отличие от позитивного тестирования:

  • Позитивное тестирование: Проверяет, что система делает то, что должна, при корректных данных.
  • Негативное тестирование: Проверяет, что система не делает того, чего не должна, и корректно реагирует на ошибки.

Важность: Негативное тестирование критично для обеспечения отказоустойчивости, безопасности и качества пользовательского опыта.