Что такое статическое тестирование и какие у него есть основные виды?

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

Ответ

Статическое тестирование — это анализ артефактов разработки (код, требования, документация) без выполнения программы. Оно выявляет дефекты на ранних этапах, когда их исправление дешевле.

Основные виды и примеры:

  1. Ревью кода (Code Review) Ручная проверка кода на соответствие стандартам, поиск логических ошибок и "запахов".

    # До ревью: "магическое число", непонятная логика
    if user.status == 1:
       send_notification()
    
    # После ревью: использование констант, ясность
    USER_STATUS_ACTIVE = 1
    if user.status == USER_STATUS_ACTIVE:
       send_notification()
  2. Статический анализ инструментами (Static Analysis) Автоматическая проверка с помощью линтеров и анализаторов.

    • ESLint / Pylint / SonarQube: Находят неиспользуемые переменные, потенциальные NPE, сложность функций.
    • Checkstyle / PMD: Проверяют соответствие код-стайлу.
    • Security tools (Bandit, Brakeman): Ищут уязвимости (инъекции, hardcoded secrets).
  3. Анализ требований и спецификаций Проверка ТЗ, пользовательских историй на:

    • Полноту: Все ли сценарии покрыты?
    • Непротиворечивость: "Система поддерживает 1000 пользователей" vs "Лимит сессий — 500".
    • Тестопригодность: Требования должны быть конкретными и проверяемыми.
  4. Инспекция дизайн-макетов и документации

    • Сравнение макетов из Figma/Sketch с техническим заданием.
    • Проверка пользовательской документации на ясность и соответствие функционалу.

Преимущества: Раннее обнаружение ~30% дефектов, снижение стоимости исправлений, распространение лучших практик в команде.