Ответ
Статическое тестирование — это анализ артефактов разработки (код, требования, документация) без выполнения программы. Оно выявляет дефекты на ранних этапах, когда их исправление дешевле.
Основные виды и примеры:
-
Ревью кода (Code Review) Ручная проверка кода на соответствие стандартам, поиск логических ошибок и "запахов".
# До ревью: "магическое число", непонятная логика if user.status == 1: send_notification() # После ревью: использование констант, ясность USER_STATUS_ACTIVE = 1 if user.status == USER_STATUS_ACTIVE: send_notification() -
Статический анализ инструментами (Static Analysis) Автоматическая проверка с помощью линтеров и анализаторов.
- ESLint / Pylint / SonarQube: Находят неиспользуемые переменные, потенциальные NPE, сложность функций.
- Checkstyle / PMD: Проверяют соответствие код-стайлу.
- Security tools (Bandit, Brakeman): Ищут уязвимости (инъекции, hardcoded secrets).
-
Анализ требований и спецификаций Проверка ТЗ, пользовательских историй на:
- Полноту: Все ли сценарии покрыты?
- Непротиворечивость: "Система поддерживает 1000 пользователей" vs "Лимит сессий — 500".
- Тестопригодность: Требования должны быть конкретными и проверяемыми.
-
Инспекция дизайн-макетов и документации
- Сравнение макетов из Figma/Sketch с техническим заданием.
- Проверка пользовательской документации на ясность и соответствие функционалу.
Преимущества: Раннее обнаружение ~30% дефектов, снижение стоимости исправлений, распространение лучших практик в команде.