Что такое автоматизация API?

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

Автоматизация API реализуется с помощью программных инструментов, которые отправляют запросы к API, анализируют ответы и сравнивают их с ожидаемыми результатами. Целью автоматизации API является повышение надежности и последовательности процесса тестирования, что позволяет экономить время и ресурсы.

Что такое REST API?

REST API расшифровывается как Representational State Transfer API (передача состояния представления API), что представляет собой архитектуру, основанную на веб-стандартах для создания веб-сервисов. Это распространенный способ взаимодействия между клиентами и серверами через интернет.

REST API используют HTTP-запросы для управления данными, чтобы POST (создать), PUT (обновить), GET (читать) и DELETE (удалять). Автоматизация API позволяет эффективно и тщательно тестировать REST API. Это реализуется за счет нескольких вызовов API и проверки ответов, что помогает выявить и устранить ошибки и проблемы на ранних стадиях процесса разработки.

Пример REST API

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

Вот как это работает:

Эндпоинт: Клиентское приложение создает запрос для определенного URL, так называемого эндпоинта, который представляет собой коллекцию книг. Например: "https://www.example.com/api/books".

Методы HTTP: Клиент использует один из следующих методов HTTP для выполнения запроса:

  • GET: Получение информации о книге или коллекции книг.

  • POST: Добавление новой книги в коллекцию.

  • PUT: Обновление информации о книге.

  • DELETE: Удаление книги из коллекции.

Response (ответ): Сервер отвечает данными в определенном формате, например, JSON, которые клиент может использовать для получения информации о книгах. Например, клиент может сделать GET-запрос на "https://www.example.com/api/books", чтобы получить список всех книг в коллекции. В ответ сервер получит полезную нагрузку в формате JSON, содержащую информацию о каждой книге, например, ее название, имя автора и номер ISBN.

Этот пример показывает, как REST API обеспечивает стандартный, программный способ взаимодействия клиентских приложений с данными сайта о книгах.

Cypress для автоматизации API

Cypress - это основанный на JavaScript фреймворк для тестирования веб-приложений. Он позволяет проводить сквозное тестирование пользовательского интерфейса и API вашего приложения. Это делает его отличным инструментом для автоматизации API.

Вот пример того, как использовать Cypress для тестирования API:

  1. Установите Cypress: npm install cypress --save-dev

  2. Создайте тестовые файлы для методов GET, POST, PUT и DELETE с cypress/e2e/cypress_api_tc.cy.js

Метод GET

Давайте посмотрим, как работают методы GET для получения данных о пользователе.

it("GET API testing Using Cypress API Plugin", () => {
   cy.request("GET", "https://reqres.in/api/users?page=2").should((response) => {
     expect(response.status).to.eq(200);
   });
 });

Метод POST

Вот как работают методы POST для добавления данных о пользователе.

it("POST API testing Using Cypress API Plugin", () => {
   cy.request("POST", "https://reqres.in/api/users", {
     name: "morpheus",
     job: "leader",
   }).should((response) => {
     expect(response.status).to.eq(201);
   });
});

Метод PUT

Давайте посмотрим, как работают методы PUT для обновления данных пользователя.

it("PUT API testing Using Flip Plugin", () => {
   cy.request("PUT", "https://reqres.in/api/users/2", {
     name: "QAAutomationLabs",
     job: "QA Automation Engg",
   }).should((response) => {
     expect(response.status).to.eq(200);
   });
 });

Метод DELETE

Давайте посмотрим, как работают методы DELETE для удаления данных пользователя.

it("DELETE API testing Using Cypress API Plugin", () => {
  cy.request("DELETE", "https://reqres.in/api/users/2").should((response) => {
    expect(response.status).to.eq(204);
  });
});

В этом примере функция cy.request() используется для отправки запроса к конечной точке. Ответ от API сохраняется в переменной response и затем может быть использован для написания утверждений с помощью Chai.js.

Результаты выполнения тестовых примеров

Вот отчет о тестах из нашего примера:

Завершить статью хочу приглашением на бесплатный вебинар, в рамках которого разберём основы тестирования API и реализуем тестирование API с помощью тестового фреймворка vitest (работает на vite).

Комментарии (4)


  1. gigimon
    00.00.0000 00:00
    +4

    1. Почему это названо "как профессионал"? Вы ничего нового или крутого не показали

    2. Почему выбран Cypress? "Это делает его отличным инструментом для автоматизации API." - ПОЧЕМУ?

    3. Зачем используется вообще Cypress, который все таки специализируется на UI тестировании?


    1. vagon333
      00.00.0000 00:00
      +2

      Почему это названо "как профессионал"?

      Переводная статья.


  1. DVegasa
    00.00.0000 00:00
    +1

    Как-то маловато для статьи. 70% базовой теории и потом один пример. Можно было и не разделять на части.

    Надеюсь, дальше расскажут и про другие способы автотестов апи.


    1. stgmakarov
      00.00.0000 00:00

      Еще есть Postman, есть Insomnia. Мне постман больше нравится.