История вопроса: Сложноуловимые, плавающие баги давно являются головной болью для тестировщиков: они проявляются не всегда и зачастую некорректно задокументированы, что осложняет их воспроизведение и анализ, а следовательно — исправление.
Проблема:
Главная проблема с intermittent-багами — невозможность чёткого сценария воспроизведения. Часто причиной могут быть нестабильные окружения, время отклика, ошибки синхронизации данных или коллизии при работе нескольких пользователей. Разработчику сложно устранить то, что нельзя стабильно поймать. Если тестировщик не документирует сопутствующие условия, баги уходят нерешёнными.
Решение:
Ключевые особенности:
Можно ли закрыть баг как "небагованный", если не удалось воспроизвести инженеру поддержки?
Нет. Если возникло подозрение на баг, лучше оставить тикет открытым с пометкой "reproducibility: low" и обновлять его при получении новых данных.
Всегда ли проблема в коде, если баг intermittently появляется?
Нет. Возможны ошибки в сети, конфиге окружения, устаревшем кэше браузера, специфике работы сторонних сервисов или периферии.
Стоит ли занижать приоритет intermittent-багов, если невозможно воспроизвести их каждый раз?
Не всегда. Последствия иногда критичны для пользователя (например, двойное списание денег), поэтому приоритизация должна учитывать бизнес-риски.
Тестировщик обнаружил баг разблокировки профиля, но баг появлялся не более чем в 1 из 10 попыток. Документация ограничилась скриншотом ошибки — баг закрыли, поскольку разработчик не смог воспроизвести.
Плюсы:
Минусы:
Тестировщик внимательно записал все условия: браузер, время суток, способ входа, прикладывал короткие видеоролики и логи, поддерживал регулярный контакт с разработчиками до получения стабильного сценария.
Плюсы:
Минусы: