Ответ
При переполнении кэша система удаляет часть данных, чтобы освободить место для новых. В контексте тестирования важно понимать, как это влияет на производительность и корректность работы приложения.
Основные алгоритмы вытеснения:
- LRU (Least Recently Used) — удаляются данные, к которым дольше всего не обращались.
- FIFO (First In First Out) — удаляются данные, которые были загружены раньше других.
- LFU (Least Frequently Used) — удаляются данные, к которым реже всего обращались.
С точки зрения QA:
- Тестирование на утечки памяти: Необходимо создавать сценарии, которые целенаправленно заполняют кэш, чтобы проверить, корректно ли происходит вытеснение и нет ли утечек памяти.
- Влияние на производительность: После вытеснения данных последующие запросы будут обрабатываться медленнее (кэш-промахи), что может привести к деградации производительности. Это нужно проверять нагрузочным тестированием.
- Корректность данных: Важно убедиться, что при вытеснении не удаляются критически важные данные, необходимые для работы приложения, и что после их повторной загрузки данные остаются консистентными.
Пример тест-кейса:
- Предусловие: Кэш имеет ограничение в 100 записей.
- Действие: Последовательно добавить 150 уникальных записей.
- Ожидаемый результат:
- В кэше останется 100 записей (последних добавленных или наиболее используемых, в зависимости от алгоритма).
- При попытке получить первые 50 добавленных записей система должна корректно перезагрузить их из основного источника (БД, другого сервиса), а не вернуть ошибку или устаревшие данные.