Как тестировать плавающие баги
t.me/qa_chilloutБывает, открываешь приложение — всё работает. Потом в точности повторяешь те же шаги — и вдруг что-то идёт не так. Например, заходишь на экран профиля, а он почему-то пустой. Перезапускаешь — всё нормально. Или нажимаешь кнопку "Сохранить", и она просто не реагирует. Пробуешь снова — срабатывает. А иногда свайп в сторону не переводит на следующий экран, хотя раньше всё работало. Такое поведение сбивает с толку и заставляет сомневаться: это действительно баг или показалось?
Это и есть плавающий баг — тип ошибки, которая:
- не воспроизводится стабильно при ручном тестировании,
- зависит от условий, которые не всегда очевидны (время, сеть, устройство, нагрузка),
- иногда проявляется, а иногда — нет, несмотря на одинаковые действия пользователя.
Почему появляются плавающие баги
Плавающие баги — это почти всегда следствие каких-то непредсказуемых условий, которые не всегда очевидны на первый взгляд. Вот несколько причин, почему такое происходит:
1. Что-то не успевает загрузиться
Иногда приложение просто не успевает подготовить нужные данные или экран. Вы уже нажали на кнопку, а внутри всё ещё «грузится» — и в этот момент ничего не происходит. Потом пробуете ещё раз — и всё работает, потому что всё успело прогрузиться.
2. Медленный или нестабильный интернет
Если интернет «подвисает» или работает с перебоями, данные могут не дойти до приложения вовремя. В итоге экран остаётся пустым, запрос не срабатывает, или приложение показывает ошибку, которая потом исчезает.
3. Разные устройства — разное поведение
На одном телефоне всё работает как надо, а на другом — что-то глючит. Особенно часто это случается на старых или слабых устройствах, где приложение просто не успевает выполнить все действия вовремя. В Android-мире таких случаев особенно много — из-за большого разнообразия моделей, оболочек и версий ОС. В вебе — та же история: один и тот же сайт может вести себя по-разному в Chrome, Safari или Firefox. Поэтому баги, которые не воспроизводятся у вас, могут легко воспроизводятся у другого пользователя.
4. Приложение "запуталось"
Иногда приложение сохраняет старые данные, настройки или предыдущее состояние. И когда снова открываешь тот же экран, оно не может правильно обновиться, потому что «думает», что всё уже показано. В итоге — непредсказуемое поведение.
5. Пользователь действует "слишком быстро"
Если человек сразу после запуска приложения начинает что-то нажимать, свайпать, переключать — он может опередить логику приложения. То есть экран ещё не готов, а пользователь уже нажал — и в этот момент ничего не происходит.
Как отлавливать такие баги
Пробуйте на разных устройствах, в разных условиях. Если есть возможность, проверьте сценарии:
- на другом телефоне или браузере,
- при включённой/выключенной сети Wi-Fi или мобильных данных,
- в тёмной и светлой теме,
- после перезагрузки.
Иногда баг проявляется, если быстро кликнуть по кнопке. А иногда — наоборот, если долго ничего не делать. Попробуйте разные варианты: например, кликнули, подождали какое-то время (представим что пользователь отложил телефон или отошел от ПК), повторили действие. В таких случаях может «протухнуть» сессия или токен авторизации, и приложение может начать вести себя непредсказуемо.
В мобильных приложениях некоторые баги появляются только после "чистого" запуска, когда приложение не помнит предыдущие действия. Попробуйте закрыть и снова открыть, выйти и войти, очистить сохранённые данные, если можно.
Пробуйте анализировать. Найдите отличия: что вы делали по-другому? Были ли включены уведомления? Был ли плохой интернет? Открывался ли экран сразу после логина? Всё это поможет сузить круг причин.
Что стоит помнить при заведении баг-репорта на плавающий баг
Если баг не воспроизводится каждый раз — описывайте точную последовательность действий.
Обязательно укажите, насколько часто баг воспроизводится. Даже если он воспроизвелся всего один раз — это важно. Например: «Баг возник один раз за всё время тестирования», или «Наблюдается примерно в 2 из 10 запусков».
При описании плавающего бага важно указать все условия, в которых он появился. Укажите на каком устройстве и версии операционной системы вы тестировали, какая была версия приложения или браузер (если это веб), в каком состоянии была сеть — Wi-Fi или мобильная, хорошее ли было соединение. Также стоит упомянуть любые дополнительные детали: был ли включён VPN, тёмная тема, работало ли приложение в фоне перед этим, запускалось ли оно впервые и т.д.
Такие детали помогут разработчику точнее воспроизвести баг, а команде — оценить его серьёзность и учитывать при принятии решений и планировании.
Все плавающие баги важно фиксировать в баг-трекере с пометкой нестабильный или flaky. Если баг не удаётся воспроизвести и исправить сразу — это не повод закрывать задачу. Лучше усилить логирование, понаблюдать за поведением бага в нескольких релизах и собрать дополнительные данные. Только если спустя время баг больше не проявляется, а логи не дают никаких зацепок, его можно обоснованно закрыть.
Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».