Какие дальнейшие шаги, если баг не воспроизводится на устройствах?
Что проверяют
Есть ли у вас система на случай, когда очевидные шаги не сработали, или вы закроете тикет с пометкой «не воспроизводится». Следом обычно спрашивают, какие данные вы запросите у автора бага и когда тикет всё-таки можно закрыть.
Как отвечать
Идите от сбора данных к сужению условий:
- контекст от автора: сборка приложения, модель устройства и версия ОС, точное время, аккаунт, тип сети, видео. Время нужно, чтобы найти запрос в логах;
- логи:
adb logcatна Android, консоль устройства в Xcode на iOS, отчёты о падениях в Crashlytics или Sentry, серверные логи по времени или идентификатору запроса; - окружение: не исправлен ли баг в свежей сборке, те же ли фича-флаги и группа A/B-теста, какой стенд и какие данные у аккаунта;
- состояние приложения: чистая установка против обновления со старой версии, кэш, отозванные разрешения, возврат из фона после выгрузки системой;
- внешние условия: плохая или переключающаяся сеть (Network Link Conditioner, троттлинг в Charles или Proxyman), нехватка памяти, энергосбережение, локаль, часовой пояс, крупный шрифт;
- устройство: баг бывает специфичен для прошивки производителя, агрессивная оптимизация батареи убивает фоновые задачи. Нужной модели нет под рукой, помогает облачная ферма устройств.
Если подозреваете гонку, повторяйте сценарий многократно и быстро: такие дефекты проявляются через раз.
Когда баг так и не воспроизвёлся, тикет не закрывают молча. В него записывают, что проверено и на чём, статус меняют на «нужна информация», договариваются с разработчиком о дополнительном логировании и следят за метриками падений. Серьёзный баг, например в оплате, эскалируют, даже не воспроизведя.
Где спотыкаются
Проверяют на своём тестовом аккаунте и чистой установке. Большая часть «невоспроизводимых» багов живёт в данных конкретного пользователя и в сценарии обновления.
Не спрашивают точное время и номер сборки. Без них серверные логи и отчёты о падениях бесполезны.
Закрывают тикет без записи о проделанной проверке. Когда баг вернётся, всю работу придётся повторять с нуля.