Тестируйте API, как профессионал Часть 1

от автора

Что такое автоматизация 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).


ссылка на оригинал статьи https://habr.com/ru/company/otus/blog/722128/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *