Что такое инвалидация кеша?

«Что такое инвалидация кеша?» — вопрос из категории Архитектура, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Инвалидация кеша — это процесс признания данных в кеше устаревшими или недействительными с последующим их удалением или обновлением. Это необходимо для обеспечения согласованности между данными в кеше и источником истины (например, базой данных).

Стратегии инвалидации с точки зрения тестирования:

  1. По времени (TTL): Кеш автоматически очищается через заданный интервал.
    • Как тестировать: Проверяем, что после истечения TTL следующий запрос получает свежие данные из источника.
  2. Явная инвалидация: Приложение отправляет сигнал на удаление записей из кеша при изменении данных.
    • Как тестировать:
      # Пример сценария тестирования для API
      # 1. Запрашиваем данные, они попадают в кеш
      response1 = get('/product/123')
      # 2. Изменяем данные продукта (этот вызов должен инвалидировать кеш)
      put('/product/123', {'price': 999})
      # 3. Снова запрашиваем данные — должны получить обновлённую цену, а не закешированный старый вариант
      response2 = get('/product/123')
      assert response2.json()['price'] == 999
  3. Инвалидация по событию: Кеш очищается в ответ на события в системе (например, публикация нового контента).

Роль QA: Тестировщик должен проектировать тесты, которые проверяют не только скорость работы кеша, но и корректность его инвалидации, чтобы избежать ситуаций, когда пользователь видит устаревшую информацию.