Иногда кажется, что «плавающие» ошибки живут своей жизнью: сегодня есть, завтра нет, причины не видно. Но в реальности они не мистические — просто недолокализованные.
Почему плавающие баги — это не магия, а недостающие данные
«Плавающие» ошибки возникают там, где состояние системы меняется быстрее, чем мы успеваем его проанализировать. Ваше главное оружие — методичность, внимательность к деталям и умение сузить область поиска.
Техники воспроизведения ошибки
Как повысить шанс корректного воспроизведения
Анализ логов — первое место, куда стоит смотреть. Добавьте уточнение: проверяем не только логи сервера, но и ошибки клиентской части, сетевые запросы, состояние кэша.
Проверка граничных условий — расширяем идею: значения «-1», «0», пустые списки, максимальные лимиты, необычные форматы данных.
Метод «от обратного» — усиливаем объяснение. Например: «Представьте, что баг уже случился — какие состояния системы к этому могли привести?»
Таблица отличий — вносим рекомендацию фиксировать различия не только в окружении, но и в последовательности действий.
Что добавлять в таблицу отличий
Текущее состояние объекта или данных.
Последовательность и точные шаги пользователя.
Тип устройства, ОС и браузер.
Версия релиза или сборки.
Интерфейс, через который воспроизводится — интерфейс GUI, API или другие каналы.
Количество активных вкладок или открытых сессий.
Техники локализации ошибки
Что делать, если баг воспроизводится, но причина не ясна
Анализ кода — рекомендуем начинать с мест с наибольшей изменчивостью: асинхронность, конкурентный доступ, обработчики событий.
Бисекционное деление — логично оформляем как структурированный алгоритм: уменьшаем количество шагов до минимума, пока не получим ядро проблемы.
Формирование гипотезы — добавляем совет фиксировать гипотезы письменно, чтобы не терять цепочку проверки.
Оптимизация сценария воспроизведения — предлагаем удалять нерелевантные шаги и проверять, влияет ли каждый шаг на результат.
Практическая структура курса
Минимум теории — большое количество практических кейсов.
Небольшие лаконичные лекции по 7–15 минут.
Сложные темы разобраны более подробно — лекции до 30 минут.
Каждое занятие раскрывает конкретную технику: логирование, анализ окружения, работа с кодом, поиск проблем в интеграциях и миграциях.
Техники черного и белого ящика
Когда нет доступа к коду
Черный ящик — добавляем идеи: моделирование пользовательских сценариев, работа с вводами/выводами, проверка системных ограничений, сетевой анализ.
Когда доступ к коду есть
Белый ящик — делаем акцент на том, что даже базовые навыки чтения кода дают сильное преимущество. Используем приложение folks как учебный пример, подчеркиваем приближенность к реальным кейсам.