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

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

Ответ

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

Основные цели:

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

Типичные примеры и методы:

  1. Некорректные входные данные:
    • Ввод SQL-инъекций (' OR '1'='1), XSS-скриптов, специальных символов, очень длинных строк.
  2. Экстремальные нагрузки:
    • Нагрузочное тестирование с пиковой нагрузкой, значительно превышающей планируемую.
  3. Нарушение зависимостей:
    • Отключение сети, баз данных или внешних сервисов во время работы приложения.
  4. Повреждение данных:
    • Коррупция файлов конфигурации или передача битых данных в API.

Пример проверки обработки некорректного ввода (Python):

def test_destructive_invalid_input():
    """Проверяем, что система корректно отклоняет нечисловой ввод."""
    try:
        # Метод calculate ожидает число
        result = calculate("abc123!@#")
        # Если исключения не было — это дефект
        assert False, "ОШИБКА: Система приняла некорректные строковые данные"
    except (ValueError, TypeError):
        # Ожидаемое поведение — выброс исключения
        assert True, "Система корректно отклонила невалидный ввод"