Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Виды API и их применение в тестировании
Определение API
API (Application Programming Interface) — набор правил и протоколов для взаимодействия между приложениями. Для QA это критично: большинство современных систем строятся на API интеграциях.
1. REST API (Representational State Transfer)
Самый распространённый вид.
Характеристики:
- Использует HTTP методы: GET, POST, PUT, PATCH, DELETE
- Ресурсы в URL:
/api/v1/users,/api/v1/users/123 - Stateless (сервер не хранит состояние)
- Простой для понимания и тестирования
Что тестировать:
- Все CRUD операции
- Статус коды (200, 201, 400, 404, 500)
- Валидация входных данных
- Переходы состояний
- Ошибки и edge cases
2. GraphQL API
Альтернатива REST, набирает популярность.
Характеристики:
- Single endpoint (обычно
/graphql) - Клиент запрашивает ровно те поля, которые нужны
- Strongly typed schema
- Queries (READ), Mutations (WRITE), Subscriptions (REAL-TIME)
Что тестировать:
- Query валидация
- Mutation побочные эффекты
- Schema compliance
- Вложенные queries (N+1 проблемы)
- Subscriptions (real-time updates)
- Ошибки в queries
3. SOAP API (Simple Object Access Protocol)
Старый, но всё ещё используется в enterprise.
Характеристики:
- XML-based (чётко структурирован)
- WSDL (Web Services Description Language)
- Более сложный, чем REST
- Используется в банках, страховых компаниях
Что тестировать:
- XML валидация
- SOAP faults
- WSDL compliance
- WS-Security
4. RPC API (Remote Procedure Call)
Позволяет вызывать функции на удалённом сервере.
Характеристики:
- JSON-RPC или XML-RPC
- Функция-ориентированный подход
- Все запросы через POST
- Используется в blockchain (Bitcoin, Ethereum)
Что тестировать:
- Валидность RPC методов
- Параметры и их типы
- Ошибки (Invalid Request, Method Not Found)
- Batch requests
5. WebSocket API
Для real-time коммуникации (two-way).
Характеристики:
- Persistent connection (не закрывается)
- Низкая latency
- Используется в чатах, live notifications, games
- Событие-ориентированный
Что тестировать:
- Connection lifecycle (open, close, reconnect)
- Message delivery и ordering
- Broadcast vs private messages
- Race conditions
- Disconnection handling
6. Public/Third-party APIs
Интеграция с внешними сервисами.
Примеры: Google Maps, Stripe, Twilio, AWS
Что тестировать:
- API keys и authentication
- Rate limiting
- Error handling (сервис недоступен?)
- Версионирование API
- Документация accuracy
7. Internal APIs
APIs внутри приложения (микросервисная архитектура).
Примеры: User Service, Order Service, Payment Service
Что тестировать:
- Service-to-service communication
- Circuit breakers (fallback)
- Service discovery
- API contracts
Матрица сравнения API типов
| Тип | Сложность | Популярность | Используется для |
|---|---|---|---|
| REST | Низкая | Очень высокая | Web, Mobile |
| GraphQL | Средняя | Растёт | Web, Mobile |
| SOAP | Высокая | Средняя | Enterprise, банки |
| RPC | Низкая | Средняя | Blockchain |
| WebSocket | Средняя | Растёт | Real-time |
Инструменты для тестирования API
- Postman: REST, SOAP, GraphQL
- Insomnia: REST, GraphQL
- cURL: REST запросы
- SoapUI: SOAP, REST
- Charles/Fiddler: Network debugging
- JMeter: Load testing
Практические советы
- Всегда проверяй документацию API
- Тестируй happy path и error cases
- Используй tools для автоматизации
- Мониторь performance
- Проверяй security (HTTPS, API keys, логи)