Каково было распределение задач по тестированию backend и frontend на вашем предыдущем проекте?

«Каково было распределение задач по тестированию backend и frontend на вашем предыдущем проекте?» — вопрос из категории Софт-скиллы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

На последнем проекте нагрузка по тестированию распределялась примерно как 60% Backend и 40% Frontend.

Backend-тестирование (~60%):

  • API-тестирование: Проверка REST/GraphQL эндпоинтов на корректность ответов, статус-коды, структуру JSON, валидацию данных.
  • Интеграционное тестирование: Взаимодействие между сервисами, очередями сообщений (Kafka/RabbitMQ).
  • Тестирование бизнес-логики и БД: Проверка сложных расчетов, корректности запросов к базе данных (SQL), целостности данных.
  • Нагрузочное тестирование: Оценка производительности API под нагрузкой (с помощью JMeter, k6).

Frontend-тестирование (~40%):

  • UI-тестирование: Автоматизация с помощью Selenium или Cypress для проверки пользовательских сценариев.
  • Кросс-браузерное/кросс-платформенное тестирование: Совместимость в разных браузерах и на разных устройствах.
  • Валидация форм и отображения: Проверка корректности отображения данных, полученных с бэкенда, и работы клиентской валидации.

Пример теста для REST API (Python с requests):

import requests

BASE_URL = "https://api.example.com"

def test_get_user_by_id():
    """Тест на успешное получение пользователя по ID."""
    user_id = 1
    response = requests.get(f"{BASE_URL}/users/{user_id}")

    # Проверка статус-кода
    assert response.status_code == 200, f"Unexpected status code: {response.status_code}"

    # Проверка структуры и данных ответа
    user_data = response.json()
    assert "id" in user_data
    assert user_data["id"] == user_id
    assert "name" in user_data and isinstance(user_data["name"], str)

    # Проверка заголовков (опционально)
    assert response.headers["Content-Type"] == "application/json"