Что такое сессия в контексте веб-приложений?

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

Ответ

Сессия — это механизм для сохранения состояния пользователя между несколькими HTTP-запросами. Поскольку HTTP — протокол без состояния, сессии позволяют "помнить" пользователя (например, факт его аутентификации, содержимое корзины покупок) на протяжении его взаимодействия с сайтом.

Как это работает с точки зрения тестирования:

  1. При первом запросе сервер создает уникальный идентификатор сессии (Session ID).
  2. Этот идентификатор отправляется клиенту (обычно в cookie с именем, например, JSESSIONID).
  3. Клиент автоматически отправляет этот cookie с каждым последующим запросом.
  4. Сервер по полученному ID находит соответствующие данные сессии, хранящиеся на сервере (в памяти, базе данных, Redis).

На что обращать внимание при тестировании:

  • Управление жизненным циклом: Проверка создания, обновления и корректного завершения (logout, timeout) сессии.
  • Безопасность:
    • Защита от перехвата Session ID (использование HTTPS).
    • Защита от фиксации сессии (Session Fixation).
    • Адекватная политика времени жизни сессии.
  • Хранение данных: Проверка, что данные, сохраненные в сессии (атрибуты), корректно доступны в рамках одного пользовательского потока и изолированы от сессий других пользователей.
  • Работа с cookie: Проверка флагов HttpOnly, Secure, SameSite у session cookie.

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