Опиши пример нетривиального дефекта (бага) в приложении.

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

Ответ

Дефект: Утечка данных между пользователями в мобильном приложении из-за некорректного кэширования.

Сценарий: Пользователь А выходит из аккаунта. Пользователь Б входит на том же устройстве, но видит персональные данные (историю заказов, имя) пользователя А.

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

Псевдокод, иллюстрирующий проблему:

// Некорректная реализация кэша
class NetworkManager {
    static var cache: [String: Data] = [:]

    func fetchUserProfile() {
        let url = "https://api.app.com/profile"
        if let cachedData = NetworkManager.cache[url] { // БАГ: Кэш общий для всех!
            return parse(cachedData)
        }
        // ... сетевой запрос
    }

    func logout() {
        // Забыли очистить кэш: NetworkManager.cache.removeAll()
        showLoginScreen()
    }
}

Как обнаружили: Тестирование сценария безопасности "смена пользователя на одном устройстве".

Решение (фикс):

  1. Привязать ключ кэша к идентификатору сессии или пользователя.
  2. Инвалидировать весь пользовательский кэш при выходе из системы.
  3. Использовать более безопасные механизмы хранения (Keychain для чувствительных данных).

Вывод: Важно тестировать сценарии смены контекста (пользователь, сессия) и проверять очистку состояния приложения.