Что такое негативное тестирование и какое поведение системы в нем ожидается?

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

Ответ

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

Ожидаемое поведение системы в негативных сценариях:

  1. Отказоустойчивость: Система не должна полностью падать, допускать утечки памяти или данных.
  2. Защита данных: Критические данные не должны быть повреждены или потеряны.
  3. Корректная обработка ошибок: Возвращается понятный и безопасный для пользователя ответ (сообщение об ошибке, код состояния HTTP).
  4. Восстановление состояния: После ошибки система возвращается в стабильное, предсказуемое состояние.
  5. Логирование: Информация об ошибке (стектрейс, контекст) должна записываться в логи для последующего анализа разработчиками.

Пример теста на Python для проверки валидации возраста:

import pytest

def test_negative_age_input():
    """Проверяем, что система отвергает отрицательный возраст с понятной ошибкой."""
    invalid_age = -5

    # Попытка выполнить операцию с невалидными данными
    with pytest.raises(ValidationError) as exc_info:
        process_user_age(invalid_age)

    # Проверяем текст ошибки
    expected_error_msg = "Возраст должен быть положительным числом."
    assert str(exc_info.value) == expected_error_msg, 
        f"Ожидалось: '{expected_error_msg}', Получено: '{exc_info.value}'"