Опишите интересный баг, с которым вы столкнулись

«Опишите интересный баг, с которым вы столкнулись» — вопрос из категории Софт-скиллы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Баг с некорректной инвалидацией кеша в мобильном приложении.

Суть: Приложение отображало устаревшие данные после их обновления на сервере, хотя API возвращало актуальные. Проблема заключалась в отсутствии стратегии инвалидации кеша.

Пример проблемного кода на Kotlin:

fun loadData() {
    val cachedData = cache.get("key")
    if (cachedData != null) {
        showData(cachedData) // Использование устаревших данных
        return // Свежие данные не запрашивались
    }
    // ... загрузка с сети
}

Решение и почему оно важно:

  1. Добавлена принудительная инвалидация кеша при пользовательских действиях, изменяющих данные (например, «pull-to-refresh»).
  2. Внедрена проверка версий (ETag/Last-Modified): при запросе данных отправляется хэш или метка времени текущей копии; сервер возвращает новые данные только если они изменились (статус 200), иначе — «Not Modified» (304). Это оптимизирует трафик.

Почему баг был интересен: Он проявлялся только в специфическом сценарии (после фонового обновления данных на сервере) и требовал понимания полного цикла данных: сервер → сеть → кеш → UI.