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

Как автоматизировать авторизацию: UI-логин vs токен/куки/localStorage?

1️⃣ Как кратко ответить

Автоматизация авторизации может быть выполнена через UI-логин, где тесты имитируют действия пользователя, или через токены/куки/localStorage, где тесты используют API для получения токенов и устанавливают их в заголовки запросов или сохраняют в localStorage/куки. Выбор метода зависит от целей тестирования: UI-логин подходит для проверки пользовательского интерфейса, а токены/куки/localStorage — для более быстрых и стабильных API-тестов.

2️⃣ Подробное объяснение темы

Автоматизация авторизации — это важный аспект тестирования веб-приложений, который позволяет тестам выполнять действия от имени пользователя. Существует два основных подхода: через пользовательский интерфейс (UI-логин) и через токены/куки/localStorage.

UI-логин

UI-логин подразумевает автоматизацию процесса входа в систему через пользовательский интерфейс. Это включает в себя:

  • Открытие страницы входа.
  • Ввод имени пользователя и пароля.
  • Нажатие кнопки "Войти".

Этот метод полезен для тестирования пользовательского интерфейса и проверки, что процесс входа работает как ожидается. Однако он может быть медленным и подвержен сбоям из-за изменений в UI.

Пример на Selenium WebDriver:

WebDriver driver = new ChromeDriver();
driver.get("https://example.com/login");
​
// Находим поле ввода для имени пользователя и вводим значение
WebElement usernameField = driver.findElement(By.id("username"));
usernameField.sendKeys("testuser");
​
// Находим поле ввода для пароля и вводим значение
WebElement passwordField = driver.findElement(By.id("password"));
passwordField.sendKeys("password123");
​
// Находим кнопку входа и кликаем по ней
WebElement loginButton = driver.findElement(By.id("loginButton"));
loginButton.click();

Токены/Куки/LocalStorage

Этот метод включает использование API для получения токена доступа, который затем используется для аутентификации в тестах. Токены могут быть сохранены в заголовках HTTP-запросов, куки или localStorage.

  • Токены: Получение токена через API и использование его в заголовках запросов. Это позволяет избежать взаимодействия с UI и ускоряет тесты.
  • Куки: Установка куки с токеном аутентификации в браузере, что позволяет тестам выполнять действия от имени пользователя.
  • LocalStorage: Сохранение токена в localStorage браузера, что также позволяет тестам выполнять действия от имени пользователя.

Пример на JavaScript с использованием fetch для получения токена:

// Функция для получения токена через API
async function getToken() {
  const response = await fetch('https://example.com/api/login', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      username: 'testuser',
      password: 'password123'
    })
  });
​
  const data = await response.json();
  return data.token; // Возвращаем токен из ответа
}
​
// Использование токена в заголовках запросов
async function performAuthenticatedRequest() {
  const token = await getToken();
​
  const response = await fetch('https://example.com/api/protected', {
    method: 'GET',
    headers: {
      'Authorization': `Bearer ${token}` // Устанавливаем токен в заголовок
    }
  });
​
  const data = await response.json();
  console.log(data); // Обрабатываем ответ
}

Выбор между UI-логином и токенами/куки/localStorage зависит от целей тестирования. UI-логин подходит для проверки пользовательского интерфейса, в то время как токены/куки/localStorage обеспечивают более быстрые и стабильные тесты, особенно для API.

Тема: UI-автоматизация
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки