Что такое API в контексте разработки и тестирования ПО?

«Что такое API в контексте разработки и тестирования ПО?» — вопрос из категории API тестирование, который задают на 36% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

API (Application Programming Interface) — это набор четко определенных правил, протоколов и инструментов, который позволяет различным программным компонентам взаимодействовать друг с другом. API определяет, какие запросы можно делать, как их формировать, какие данные передавать и что ожидать в ответ.

Ключевая идея: API абстрагирует внутреннюю реализацию сервиса, предоставляя внешний контракт для взаимодействия.

Пример HTTP-запроса к REST API на Python:

import requests

# GET-запрос для получения данных
response = requests.get('https://api.example.com/users/1')

if response.status_code == 200:
    user_data = response.json()  # Ответ в формате JSON
    print(f"User: {user_data['name']}")
else:
    print(f'Error: {response.status_code}')

Основные типы API:

  • REST (Representational State Transfer): Использует стандартные HTTP-методы (GET, POST, PUT, DELETE). Данные обычно в JSON. Самый распространенный стиль для веб-сервисов.
  • GraphQL: Позволяет клиенту точно запрашивать только нужные данные в одном запросе, избегая недополучения или переполучения информации.
  • SOAP (Simple Object Access Protocol): Основан на XML, имеет строгую спецификацию (WSDL) и встроенные механизмы безопасности, но более сложен и «тяжел».

Для QA-инженера важно тестировать:

  1. Валидность ответов: Соответствие схеме (JSON Schema), типы данных.
  2. Статус-коды: Корректность возвращаемых кодов (200, 201, 400, 404, 500).
  3. Обработку ошибок: Читаемые и безопасные сообщения об ошибках.
  4. Авторизацию и аутентификацию: Работу с токенами (JWT, OAuth), API-ключами.
  5. Производительность: Время отклика, нагрузочное тестирование.
  6. Idempotency (идемпотентность): Повторный идентичный запрос (например, PUT, DELETE) не должен вызывать дополнительных side-эффектов.