Использовал ли Cookies для тестирования?

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

Ответ

Да, постоянно. Работа с cookies — это ключевой навык при тестировании веб-приложений, особенно для эмуляции состояния пользовательской сессии и тестирования функций, зависящих от аутентификации.

Конкретные кейсы применения в моей практике:

  1. Тестирование аутентификации и сессий:

    • Сценарий: После успешного логина сервер устанавливает cookie sessionId. Все последующие запросы должны содержать этот cookie для доступа к защищенным страницам.
    • Подход в Selenium WebDriver (Java): Я автоматизировал сценарий, где тест логинится один раз, сохраняет cookie, а затем использует его для доступа к другим разделам без повторного ввода пароля, что ускоряет прогон тестов.
      
      // 1. Логин и получение cookie
      driver.get("https://app.example.com/login");
      driver.findElement(By.id("username")).sendKeys("testuser");
      driver.findElement(By.id("password")).sendKeys("pass123");
      driver.findElement(By.id("submit")).click();

    // Сохраняем важную cookie Cookie sessionCookie = driver.manage().getCookieNamed("SESSION_ID"); String cookieValue = sessionCookie.getValue();

    // 2. Новый браузер/сессия - используем сохраненную cookie для доступа WebDriver newDriver = new ChromeDriver(); newDriver.get("https://app.example.com"); // На главной странице newDriver.manage().addCookie(new Cookie("SESSION_ID", cookieValue)); // Инжектируем cookie newDriver.navigate().refresh(); // Обновляем страницу с новой cookie // Проверяем, что пользователь авторизован и видит личный кабинет assertTrue(newDriver.findElement(By.id("dashboard")).isDisplayed());

  2. Тестирование функционала, зависящего от cookies:

    • Корзина покупок: Проверял, что товары, добавленные в корзину (часто хранятся в cookie cartItems), сохраняются при переходе между страницами и после перезагрузки браузера.
    • Языковые настройки/тема: Эмулировал установку cookie locale=fr или theme=dark и проверял, корректно ли применяются соответствующие настройки интерфейса.
  3. API-тестирование с cookies: При тестировании бэкенда с помощью REST Assured или Postman cookies передаются в заголовках. Это необходимо для тестирования эндпоинтов, которые требуют сессионной аутентификации (например, старые системы на основе JSESSIONID).

    // REST Assured: Использование cookie в запросе
    given()
        .cookie("session_token", "abc123xyz")
        .when()
        .get("/api/secure-data")
        .then()
        .statusCode(200);

Важные аспекты для QA:

  • Очистка состояния: Перед каждым тестом важно удалять cookies (driver.manage().deleteAllCookies()), чтобы избежать взаимного влияния тестов.
  • Безопасность: Тестирование атрибутов cookies: HttpOnly (защита от XSS), Secure (передача только по HTTPS), SameSite (защита от CSRF).
  • Срок жизни: Проверка корректности работы сессии после истечения срока жизни cookie (Max-Age или Expires).