Что происходит при переполнении кэша?

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

Ответ

При переполнении кэша система удаляет часть данных, чтобы освободить место для новых. В контексте тестирования важно понимать, как это влияет на производительность и корректность работы приложения.

Основные алгоритмы вытеснения:

  1. LRU (Least Recently Used) — удаляются данные, к которым дольше всего не обращались.
  2. FIFO (First In First Out) — удаляются данные, которые были загружены раньше других.
  3. LFU (Least Frequently Used) — удаляются данные, к которым реже всего обращались.

С точки зрения QA:

  • Тестирование на утечки памяти: Необходимо создавать сценарии, которые целенаправленно заполняют кэш, чтобы проверить, корректно ли происходит вытеснение и нет ли утечек памяти.
  • Влияние на производительность: После вытеснения данных последующие запросы будут обрабатываться медленнее (кэш-промахи), что может привести к деградации производительности. Это нужно проверять нагрузочным тестированием.
  • Корректность данных: Важно убедиться, что при вытеснении не удаляются критически важные данные, необходимые для работы приложения, и что после их повторной загрузки данные остаются консистентными.

Пример тест-кейса:

  1. Предусловие: Кэш имеет ограничение в 100 записей.
  2. Действие: Последовательно добавить 150 уникальных записей.
  3. Ожидаемый результат:
    • В кэше останется 100 записей (последних добавленных или наиболее используемых, в зависимости от алгоритма).
    • При попытке получить первые 50 добавленных записей система должна корректно перезагрузить их из основного источника (БД, другого сервиса), а не вернуть ошибку или устаревшие данные.