Ответ
Сессия — это механизм для сохранения состояния пользователя между несколькими HTTP-запросами. Поскольку HTTP — протокол без состояния, сессии позволяют "помнить" пользователя (например, факт его аутентификации, содержимое корзины покупок) на протяжении его взаимодействия с сайтом.
Как это работает с точки зрения тестирования:
- При первом запросе сервер создает уникальный идентификатор сессии (Session ID).
- Этот идентификатор отправляется клиенту (обычно в cookie с именем, например,
JSESSIONID). - Клиент автоматически отправляет этот cookie с каждым последующим запросом.
- Сервер по полученному ID находит соответствующие данные сессии, хранящиеся на сервере (в памяти, базе данных, Redis).
На что обращать внимание при тестировании:
- Управление жизненным циклом: Проверка создания, обновления и корректного завершения (logout, timeout) сессии.
- Безопасность:
- Защита от перехвата Session ID (использование HTTPS).
- Защита от фиксации сессии (Session Fixation).
- Адекватная политика времени жизни сессии.
- Хранение данных: Проверка, что данные, сохраненные в сессии (атрибуты), корректно доступны в рамках одного пользовательского потока и изолированы от сессий других пользователей.
- Работа с cookie: Проверка флагов
HttpOnly,Secure,SameSiteу session cookie.
Пример теста (концептуальный): При тестировании функционала корзины нужно убедиться, что после добавления товара и перехода на другую страницу, товар остается в корзине, так как информация о ней привязана к сессии пользователя.