Основы API в доступной форме

Что такое API с точки зрения обывателя? 

Представьте, что вы играете с машиной на дистанционном управлении. Пульт посылает сигналы машине, а та понимает, что вы от нее хотите. API (интерфейсы прикладного программирования) похожи на пульты, а API — на официантов в ресторане. Как клиент, вы просто делаете заказ из меню, а официант приносит его вам с кухни (back-end). Он действует как мост между двумя компонентами для выполнения определенной задачи.

Что такое API с технической точки зрения? 

API означает интерфейс прикладного программирования, который действует как мост, позволяющий двум программным приложениям взаимодействовать. Он определяет, как одна система может запрашивать данные или услуги у другой стандартизированным способом.

Для чего существует API:

  • Обмен ресурсами и услугами между приложениями, организациями и устройствами. Например: карты Google, встроенные в другие приложения. 
  • API помогают разработчикам интегрировать нужные функции, не изобретая велосипед. Например: API погоды в приложении доставки. 
  • API позволяют запускать свой продукт быстрее. Например: приложения, которые взаимодействуют с API Twitter или Meta, публикуя сообщения от вашего имени или читая твиты. 
  • API могут сами быть продуктами. Например: Программы как сервис (SAAS), такие как платежные API Stripe или API Twilio для обмена текстовыми сообщениями и электронной почты.

Что будет без API?

Без API это все равно что без пульта дистанционного управления автомобилем — вам пришлось бы вручную перемещать машину, что очень неудобно! В программном обеспечении без API вы бы напрямую соединили front-end с back-end. Это может сделать ваше приложение беспорядочным и сложным в обслуживании.

Как работает расчет стоимости API?

  • Платите по мере использования: Как и при заказе по меню, вы платите за каждое использование.
  • На основе подписки: Как в буфете, вы платите фиксированную плату за неограниченный доступ.
  • Freemium: Бесплатно для базовых функций, но вы платите за премиум-блюда.

API против Back-end:

  • Бэк-энд (кухня): Здесь происходит настоящая готовка (обработка).
  • API (Официант): Принимает ваш запрос (заказ) и возвращает ответ (блюдо).

Категории API:

  • Аппаратные API:Камера вашего телефона использует аппаратный API для передачи изображений на экран при съемке.
  • Программные библиотечные API: Музыкальное приложение использует программный библиотечный API для воспроизведения аудиофайлов без создания проигрывателя с нуля.
  • Веб API: Такие приложения, как Uber, Zomato, используют веб-интерфейс API для получения данных о трафике в реальном времени из интернета, что помогает в навигации.

Типы API:

  • Публичные API: Как ресторан, открытый для всех.
    Например: API Google Maps — любой может использовать этот API для получения данных о местоположении для своего приложения или сайта.
  • Приватные API: Как столовая только для сотрудников.
    Например:Внутренние API банка — У банка могут быть частные API, доступные только его сотрудникам для управления внутренними транзакциями или системами.
  • Партнерские API: Как ресторан, открытый только для VIP-персон.
    Например: Интеграция Spotify и Instagram- Spotify может предоставить партнерский API для Instagram, позволяя пользователям делиться своими плейлистами непосредственно в историях Instagram.

Пререквизиты для запроса API:

1. Базовый URL / конечная точка: Адрес API для отправки запросов.

Протокол: Здесь указывается используемый протокол связи. HTTP не является безопасным, в то время как HTTPS обеспечивает безопасное соединение.
Пример: https:// или http://.

Домен: Домен — это имя веб-сайта. Это может быть и ip-адрес.
Пример: api.example.com.

Порт (необязательно): Порт — это как дверь, которая позволяет данным входить или выходить из компьютера через Интернет.
Пример: Порт 80 (http), Порт 443 (https), Порт 25 (почта).

Базовый путь: Часть URL, которая указывает на корень API или сервиса, обычно /v1 или /api.
Пример: /v1.

Путь к конечной точке: Здесь указывается ресурс или операция, к которой вы пытаетесь получить доступ на сервере.
Пример: /users, /posts/{id}.

Параметры запроса (необязательно): Пары ключ-значение, добавляемые после ?, которые изменяют или фильтруют запрос.
Пример: ?id=123, ?limit=10

2. Аутентификация: Аутентификация — это процесс проверки личности пользователя перед предоставлением доступа к системе.

Основная аутентификация:
Описание: Клиент отправляет имя пользователя и пароль в заголовке запроса .
Экс: Когда вы входите на веб-сайт, система проверяет ваше имя пользователя и пароль.

Аутентификация по ключу API:
Описание: Ключ API — это уникальный идентификатор, передаваемый клиентом в заголовке запроса или URL для аутентификации.
Например: Когда вы подписываетесь на API погодного сервиса, вы получаете ключ API, который вы включаете в каждый запрос для доступа к погодным данным.

Аутентификация с помощью токена носителя (OAuth 2.0):
Описание: Токен (JWT или OAuth-токен) передается с каждым запросом для подтверждения аутентификации пользователя.
Например: Вход в веб-приложение через Google или Facebook (SSO-логины).

Дайджест-аутентификация:
Описание
: Похожа на базовую аутентификацию, но более безопасна, так как хэширует пароль перед отправкой.
Ex: Пароль пользователя хэшируется, и хэш-значение отправляется в запросе. Если ваш пароль «hello123», хэш может выглядеть как «5d41402abc4b2a7».

3. Методы HTTP.

GET: Получение информации
Например: Проверка меню ресторана.
Сценарий: Вы открываете приложение и ищете пиццерию. Приложение показывает список пиццерий и их меню.

POST: Создание чего-то нового
Например: Оформление заказа на еду.
Сценарий: Вы выбираете пиццу, добавляете начинку и оформляете заказ.

PUT: Обновление существующих данных
Например: Изменение адреса доставки.
Сценарий: После оформления заказа вы понимаете, что адрес доставки указан неверно. Вы заходите в свой профиль и обновляете адрес. Все данные профиля будут обновлены заново, если запрос был только на адрес.

PATCH: Частичное обновление данных
Например: Изменение только начинки вашей пиццы. Обновляются только конкретные ингредиенты.
Сценарий: Вы заказали пиццу «Маргарита», но теперь хотите добавить еще сыра. Будет обновлено только запрошенное изменение.DELETE: Удаление данных
Ex: Отмена заказа.
Сценарий: Вы случайно сделали дополнительный заказ и теперь хотите его отменить.

4. Заголовки:

В API-запросах это дополнительные части информации (метаданные), отправляемые вместе с запросом. Они помогают серверу понять, как правильно обработать запрос.
Например: Представьте, что вы заказываете пиццу по телефону. API считывает заголовки, чтобы проверить пользователя, понять формат запроса и ответить соответствующим образом.

   Authorization: Bearer your_api_token  
                Content-Type: application/json  
                Accept: application/json  
                User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)  
                Referer: https://fooddeliveryapp.com  
                Cache-Control: no-cache

Архитектурные стили API:

  1. REST (Representational State Transfer): REST — это способ разработки API, который позволяет различным системам взаимодействовать через интернет. Он работает путем отправки запросов и получения ответов. REST может работать с несколькими типами данных, такими как JSON, XML, Text и HTML.
  2. GraphQL: Это способ получения и отправки данных, который дает вам больше контроля, чем REST. Вместо нескольких запросов на различные части данных, вы можете запросить именно то, что вам нужно, за один раз. Обычно ответ приходит в формате JSON.
  3. Веб-сокеты: Веб-сокеты обеспечивают двусторонний канал связи между клиентом и сервером. Как только соединение открыто, обе стороны могут отправлять сообщения туда и обратно. Обычно используется с JSON (чаще всего), текстовыми или бинарными данными.
    Пример: Используется для таких вещей, как чаты, обновления в реальном времени и игры.
  4. Web hooks: Web hooks это автоматические уведомления. Когда что-то происходит в одной системе, она посылает сообщение другой системе, чтобы уведомить ее о событии. Обычно используются данные в формате JSON.
    Например: Платежный сервис отправляет веб-хук на ваш сервер, когда платеж завершен.
  5. SOAP (Simple Object Access Protocol): SOAP — это протокол для обмена структурированной информацией, использующий XML-сообщения. Он более строгий и формальный, чем REST, со встроенными функциями безопасности и транзакций.
    Пример: SOAP работает с веб-сервисами в больших, формальных бизнес-системах, таких как банковские, страховые и т. д.

Почему API важны для QA-инженеров?

  • API позволяют проверять функциональность, производительность и безопасность на сервисном уровне, не полагаясь на пользовательский интерфейс.
  • UI-тесты часто бывают медленными и ненадежными, в то время как API-тесты выполняются быстрее и более надежны, так как выполняются без интерфейса. API помогают оценить время отклика и масштабируемость системы.
  • API можно тестировать на ранних этапах цикла разработки, сокращая количество дефектов до того, как они достигнут фронтенда.
  • API проверяют главную бизнес-логику, что упрощает проверку потока данных, обработку запросов-ответов и особые случаи.
  • Нагрузочное и стресс-тестирование на уровне API помогает выявить узкие места до запуска системы в работу.

Инструменты тестирования API:

  • Postman: Удобный инструмент для ручного и автоматизированного тестирования API.
  • SoapUI (SmartBear): Комплексный инструмент для тестирования как SOAP, так и REST API, поддерживающий функциональное нагрузочное тестирование.
  • Katalon Studio: Low-code инструмент автоматизации тестирования для веб-, мобильного и API-тестирования, объединяющий различные виды тестирования в одной платформе.
  • JMeter: Инструмент для тестирования производительности и нагрузки, который в основном используется для проверки масштабируемости и производительности API под большой нагрузкой.
  • Rest Assured (для продвинутых пользователей): Библиотека на базе Java для тестирования REST API, обеспечивающая полный контроль над запросами и ответами с минимальным количеством кода.
  • Swagger UI (OpenAPI): Инструмент для просмотра и взаимодействия с документацией по API, позволяющий проводить живое тестирование конечных точек API прямо из документации.

На чем нужно сосредоточиться, тестируя API?

Ключевые показатели.

  • Корректность конечных точек: Убедись, что API выдает правильные ответы на правильные запросы.
  • Методы запросов: Проверка GET, POST, PUT, DELETE и других HTTP-методов, чтобы убедиться, что они ведут себя правильно.
  • Проверка правильности ввода: Убедись, что API правильно обрабатывает валидные и невалидные вводимые данные, выдавая соответствующие коды ошибок и сообщения.
  • Тело ответа: Убедись, что данные в ответе соответствуют ожидаемому формату (JSON, XML и т. д.) и структуре.
  • Заголовки: Проверка заголовков ответа на корректность (например, тип содержимого, токены аутентификации).
  • Время отклика: Убедись, что API отвечает в пределах допустимого времени, отдельно в условиях нормальной и пиковой нагрузки.
  • Аутентификация и авторизация:

Аутентификация: Речь идет о том , кто ты есть ( например, проверка имени пользователя/пароля или токена).

Авторизация: Речь идет о том, что ты можешь делать (например, к каким ресурсам и действиям тебе разрешен доступ).

  • Сообщения об ошибках: Обеспечение того, чтобы API возвращало осмысленные и точные сообщения об ошибках, когда что-то идет не так.
  • CRUD-операции: Проверка того, что операции создания, чтения, обновления и удаления работают так, как ожидалось.
  • Коды состояния: Проверка того, что для различных типов запросов возвращаются правильные коды состояния HTTP (200, 404, 500 и т.д.). Более подробную информацию о кодах состояния ты найдешь здесь.

Medium

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас