← Назад к вопросам

Как использовать cookie в тестировании?

1.3 Junior🔥 131 комментариев
#Веб-тестирование#Инструменты тестирования

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Использование Cookie в тестировании веб-приложений

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

Основные сценарии тестирования с Cookie

  • Тестирование аутентификации и сессий: Проверка, что после успешного логина создается сессионная кука (например, sessionid или JSESSIONID), а после выхода — удаляется. Тестирование таймаута сессии — истекает ли кука через заданное время неактивности.
  • Тестирование безопасности:
    *   **HttpOnly:** Проверка, что критичные куки (сессионные) помечены атрибутом `HttpOnly=true`, что защищает их от доступа через JavaScript и снижает риск XSS-атак.
    *   **Secure:** Проверка, что куки, передаваемые по HTTPS, имеют флаг `Secure`, чтобы они не отправлялись по незашифрованному HTTP-соединению.
    *   **SameSite:** Валидация атрибута `SameSite` (Strict, Lax, None) для защиты от CSRF-атак и неправильного кросс-доменного использования.
  • Тестирование функционала, зависящего от состояния: Проверка корзины покупок, предпочтений языка/темы, отслеживания воронки продаж — всё это часто хранится в куках.
  • Тестирование согласий (GDPR, CCPA): Валидация, что при отклонении или принятии политик (например, аналитические куки) соответствующие куки корректно устанавливаются или блокируются. Важно тестировать сценарий "Принять всё", "Отклонить всё" и выборочное согласие.
  • Кросс-браузерное и кроссплатформенное тестирование: Проведение одних и тех же сценариев в разных браузерах (Chrome, Firefox, Safari) и на разных устройствах, так как обработка куков может отличаться (особенно в мобильных браузерах).
  • Тестирование с очищенными куками: Проверка поведения приложения для нового пользователя (первый визит) и после ручной очистки кеша и куков.

Практические методы работы с Cookie в автотестах

В инструментах автоматизации (Selenium WebDriver, Playwright, Cypress) существуют API для управления куками.

Пример на Python (Selenium WebDriver):

from selenium import webdriver

driver = webdriver.Chrome()

# 1. Получить все куки для текущего домена
all_cookies = driver.get_cookies()
print(f"Все куки: {all_cookies}")

# 2. Получить значение конкретной куки
session_cookie = driver.get_cookie("session_id")
if session_cookie:
    print(f"Значение session_id: {session_cookie['value']}")

# 3. Добавить новую куку (полезно для предварительной настройки состояния)
driver.add_cookie({
    'name': 'test_preference',
    'value': 'dark_theme',
    'domain': '.example.com'
})

# 4. Удалить конкретную куку
driver.delete_cookie("test_preference")

# 5. Очистить все куки (симуляция нового пользователя)
driver.delete_all_cookies()

driver.quit()

Пример на JavaScript (Playwright):

const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch();
  const context = await browser.newContext();
  const page = await context.newPage();

  await page.goto('https://example.com');

  // Получить куки
  const cookies = await context.cookies();
  console.log(cookies);

  // Установить куку
  await context.addCookies([{
    name: 'locale',
    value: 'ru_RU',
    domain: 'example.com',
    path: '/'
  }]);

  // Очистить куки в контексте
  await context.clearCookies();

  await browser.close();
})();

Инструменты для ручного тестирования и отладки

  • Панель разработчика (DevTools) браузера: Вкладка Application (Chrome) или Storage (Firefox) позволяет просматривать, редактировать и удалять куки для текущего домена.
  • Прокси-инструменты (Fiddler, Charles Proxy): Позволяют перехватывать HTTP-трафик, модифицировать заголовки запросов и ответов, включая заголовок Set-Cookie.
  • Расширения браузера: Например, "EditThisCookie" для быстрого управления куками вручную.

Ключевые проверки (Checklist)

  1. Корректность установки: Кука устанавливается после определенного действия (логин, выбор валюты).
  2. Срок жизни: Сессионные куки (Session) удаляются после закрытия браузера, постоянные (Expires/Max-Age) — сохраняются.
  3. Безопасность: Наличие и корректность флагов HttpOnly, Secure, SameSite.
  4. Влияние на UI/UX: Изменения, связанные с куками (тема, язык), сразу применяются в интерфейсе.
  5. Обработка отсутствия/повреждения: Приложение должно адекватно реагировать на удаленную или модифицированную куку (например, перенаправлять на страницу логина).
  6. Кросс-доменность: Для поддоменов (например, shop.site.com) куки могут устанавливаться на родительский домен (.site.com), что необходимо проверять.

Таким образом, тестирование cookie — это комплексная задача на стыке функционального, безопасностного и кросс-браузерного тестирования. Понимание их работы позволяет эффективнее выявлять дефекты, связанные с состоянием пользователя, и обеспечивать надежность и безопасность веб-приложения.