В чем разница между тестированием Backend и тестированием Web (Frontend)?

«В чем разница между тестированием Backend и тестированием Web (Frontend)?» — вопрос из категории Основы тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Backend и Web (Frontend) тестирование фокусируются на разных слоях приложения и проверяют различные аспекты его работы.

Backend тестирование

Проверяет серверную логику, базы данных, API и интеграции. Это тестирование «невидимой» для пользователя части.

Что проверяется:

  • Работоспособность API: Корректность ответов эндпоинтов (GET, POST, PUT, DELETE), коды состояния HTTP.
  • Бизнес-логика: Правильность расчетов, валидации данных, workflows.
  • Работа с БД: Целостность данных, корректность запросов (CRUD), миграции.
  • Интеграции: Работа с внешними сервисами (платежи, почта).
  • Производительность и нагрузка: Время отклика API, устойчивость под нагрузкой.
  • Безопасность: Проверка на уязвимости (SQL-инъекции, недостаточная авторизация).

Пример теста API (Python, pytest + requests):

def test_create_user_api():
    url = 'https://api.example.com/users'
    payload = {'name': 'Alice', 'email': 'alice@example.com'}

    response = requests.post(url, json=payload)

    # Проверяем ответ бэкенда
    assert response.status_code == 201
    response_data = response.json()
    assert response_data['name'] == 'Alice'
    assert 'id' in response_data  # Бэкенд создал ID

Web (Frontend) тестирование

Проверяет клиентскую часть, которую видит и с которой взаимодействует пользователь в браузере.

Что проверяется:

  • Функциональность UI: Работа форм, кнопок, ссылок, модальных окон.
  • Верстка и UX: Соответствие макету, адаптивность под разные размеры экрана.
  • Клиентские скрипты: Корректность выполнения JavaScript (обработчики событий, динамический контент).
  • Кросс-браузерная совместимость: Одинаковое отображение и поведение в Chrome, Firefox, Safari и т.д.
  • Доступность (Accessibility): Поддержка скринридеров, навигация с клавиатуры.

Пример UI-теста (Python, Selenium WebDriver):

def test_login_ui(driver):
    driver.get('https://example.com/login')

    # Взаимодействие с фронтендом
    driver.find_element(By.ID, 'username').send_keys('test_user')
    driver.find_element(By.ID, 'password').send_keys('pass123')
    driver.find_element(By.ID, 'login-btn').click()

    # Проверяем результат на фронтенде
    welcome_message = driver.find_element(By.CLASS_NAME, 'welcome-msg').text
    assert 'Welcome, test_user' in welcome_message

Итог: Backend тестирование гарантирует, что логика и данные обрабатываются правильно, а Web тестирование — что интерфейс корректно отображает эти данные и предоставляет удобный способ взаимодействия.