Ответ
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 тестирование — что интерфейс корректно отображает эти данные и предоставляет удобный способ взаимодействия.