Наткнулась на хорошую гифку, иллюстрирующую типы тестирования API и вдохновилась написать этот пост! Давайте вместе разберёмся, зачем они вообще нужны🤷♂️
1. Тестирование безопасности (Security Testing)
Цель: Выявить уязвимости и защитить конфиденциальные данные.
Что тестируется:
Авторизация/аутентификация (OAuth, JWT, API-ключи).
Защита от инъекций (SQL, XSS).
CSRF-токены и CORS-политики.
Rate limiting (ограничение запросов).
💡Примеры:
Попытка доступа к API без токена → 401 Unauthorized.
Проверка, что конфиденциальная информация пользователя передается безопасно (например, не в plain text виде).
2. Валидационное тестирование (Validation testing)
Цель: Проверить, что реализованный API соответствует заявленным функциональным и бизнес-требованиям при валидных входных данных (часть functional testing).
Что тестируется:
Соответствие бизнес логике при заданных входных данных.
Соответствие структуры ответов заявленным стандартам (JSON/XML).
Корректность типов данных, обязательных полей и вложенных структур.
💡Пример:
Создание валидного пользователя со всеми корректными аттрибутами → 201 Created.
3. UI testing (взаимодействие пользовательского интерфейса и API).
Цель: Проверить насколько корректно фронтенд (UI) и бэкенд (API) работают вместе.
Что тестируется:
Проверка отправки данных из UI в API (вызов правильного API-запроса).
Проверка отображения данных из API в UI и синхронизации данных.
Проверка обработки ошибок API в UI.
Валидация нагрузочных элементов (спиннеры, сообщения о загрузке).
💡Пример:
При регистрации UI отправляет корректные данные и запрос идет на правильный эндпоинт.
4. Функциональное тестирование (Functional testing).
Цель: Проверить, что API работает согласно спецификации и выполняет все необходимые операции.
Что тестируется:
Валидные входные данные.
Работа методов (GET, POST, PUT, DELETE и др.).
Обработка ошибок (коды 400, 404, 500 и т.д.).
Валидация входных/выходных данных (JSON/XML-схемы).
💡Пример:
Отправка POST-запроса на создание пользователя и проверка, что он появился в БД.
5. Error Testing (тестирование ошибок)
Цель: Проверить, что API обрабатывает некорректные запросы и сохраняет стабильность системы при сбоях.
Что тестируется:
Невалидные входные данные.
Обработка отсутствующих ресурсов.
Обработка ошибок авторизации/доступа и ошибок сервера.
💡Пример:
Запросы к несуществующим URL → 404 Not Found.
6. Пентест (Penetration Testing)
Цель: Целенаправленная атака на API для поиска уязвимостей (часть security testing).
Что тестируется:
Инъекции (SQL, NoSQL).
Конфиденциальные данные (например, подбор токенов/паролей).
Уязвимости бизнес-логики (например, отрицательные суммы в платежах).
💡Пример:
Подделка JWT-токена → 403 Forbidden.
7. Interoperability Testing (Тестирование взаимодействия)
Цель: проверка способности системы корректно взаимодействовать с другими системами, компонентами или устройствами.
Что тестируется:
Интеграция с внешними сервисами (платежные системы, геосервисы, cоцсети).
Кросс-платформенные проверки: ОС (Windows, Linux, macOS),
браузеры (Chrome, Firefox, Safari), мобилки (iOS, Android).
Совместимость форматов данных и версий API.
💡Пример:
После оплаты через XБанк статус заказа в системе меняется на «Оплачено».
8. Нагрузочное тестирование (Load Testing)
Цель: Проверить устойчивость и масштабируемость API при высоких нагрузках.
Что тестируется:
Время отклика при увеличении числа запросов.
Устойчивость к высоким нагрузкам (RPS — запросов в секунду).
Пределы пропускной способности.
Поведение при достижении лимитов (Rate Limiting).
💡Пример:
10000 одновременных GET-запросов к /products → API не должно «падать».
9. Fuzz Testing (Фаззинг-тестирование)
Цель: проверка работы с невалидными/случайными данными с целью выявления уязвимостей и сбоев (часть error testing).
Что тестируется:
Обработка нестандартных параметров запросов.
Обнаружение скрытых уязвимостей (SQL-запросы, отправка битых TCP-пакетов).
Поведение при неожиданных типах данных (например, передача строки вместо числа).
💡Пример:
Загрузка "битого" PNG-файла → выполнение произвольного кода.
#qa #api