<style>.lazy{display:none}</style>Как протестировать приложение с помощью Postman и контейнеров Docker

Как протестировать приложение с помощью Postman и контейнеров Docker

В этой статье мы разберем, как протестировать API с помощью Postman и контейнеров Docker.

Мы протестируем простое CRUD-приложение, созданное с помощью Node.js, Express и Postgres.

В этом примере мы будем использовать:

  • Postman: для тестирования нашего API
  • Newman: для запуска нашей коллекции Postman
  • Play with Docker: чтобы задеплоить наше приложение
  • Docker: для запуска приложения.

Если вы предпочитаете видеоверсию: https://youtu.be/1eeR0LoIs-M

Пошаговая процедура:

  1. Введение
  2. Клонируйте репозиторий и измените файл docker-compose.yml
  3. Запустите и протестируйте приложение локально
  4. Задеплойте приложение
  5. Создайте и экспортируйте коллекции Postman
  6. Протестируйте приложение с помощью контейнеров
  7. Заключение
Больше информации о Docker в нашем КАНАЛЕ "DOCKER ПРОСТЫМИ СЛОВАМИ"

0. 🎬 Введение

Мы будем использовать Docker и Postman:

  • Docker: для запуска нашего приложения
  • Postman: для его тестирования.

🧑‍🚀 Postman

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

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

🐳 Docker

Docker – это платформа для контейнеризации, которая позволяет разработчикам упаковывать приложения и их зависимости в автономные блоки, называемые контейнерами.

Контейнеры изолированы друг от друга и от базовой хост-системы, что делает их переносимыми и удобными для развертывания в различных средах. Docker обеспечивает простой и последовательный способ создания, распространения и запуска приложений, что помогает оптимизировать процесс разработки и сократить время и усилия, необходимые для создания и управления сложными архитектурами приложений.

В этой статье мы будем использовать docker как для запуска нашего приложения, так и для его тестирования с помощью Postman.

1. 🧬 Клонируйте репозиторий

Для примера мы будем использовать проект JavaScript. Это простое CRUD-приложение, использующее Node.js, Express и Postgres.

git clone https://github.com/FrancescoXX/crud-node-live.git

Для входа в хранилище введите следующую команду:

cd crud-node-live

Откройте эту папку с помощью вашей любимой IDE, например, VSCode:

code .

Мы не будем вдаваться в подробности этого приложения. Если вы хотите узнать, как оно было сделано, загляните по этой ссылке: https://youtu.be/1eeR0LoIs-M.

Измените файл docker-compose.yml

Чтобы протестировать это приложение, вы можете создать свой собственный образ (image) или использовать образ из примера ниже.

Это финальный файл docker-compose.yml (обратите внимание, что в нем нет build инструкции):

version: "3.9"

services:
  node_app:
    container_name: node_app
    image: francescoxx/node_live_app
    ports:
      - "3000:3000"
    environment:
      - PG_DB=node_live_db
      - PG_USER=francesco
      - PG_PASSWORD=12345
      - PG_HOST=node_db
    depends_on:
      - node_db

  node_db:
    container_name: node_db
    image: postgres:12
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_DB=node_live_db
      - POSTGRES_USER=francesco
      - POSTGRES_PASSWORD=12345
    volumes:
      - node_db_data:/var/lib/postgresql/data

volumes:
  node_db_data: {}

2. 👟 Запустите и протестируйте приложение локально

Запустите приложение локально

Давайте запустим оба сервиса (контейнера) Docker локально.

Запустите контейнер Postgres:

docker compose up -d node_db

Запустите приложение node:

docker compose up -d node_app

И проверьте, работают ли они оба:

docker ps -a

Результат должен быть примерно таким:

Протестируйте приложение локально

В этом примере мы протестируем только два эндпоинта (endpoints).

Используя Postman, мы можем сделать GET запрос на http://localhost:3000:

И мы можем сделать GET запрос на http://localhost:3000/users:

У нас нет ни одного пользователя, поэтому мы получаем пустой массив.

Теперь мы готовы развернуть этот сервис и протестировать его с помощью контейнеров.

3. 🚢 Деплой приложения

Вы можете использовать любой контейнерный сервис, например AWS, Azure или облачную платформу Google.

Важно иметь конечный публичный IP-адрес, чтобы протестировать его с помощью Postman.

В статье будет применен Play with Docker, который является бесплатным и простым в использовании.

Play with Docker

Перейдите по этой ссылке: https://labs.play-with-docker.com/ и нажмите Старт.

Это позволит провести 4-часовую сессию, в ходе которой вы сможете создать и протестировать свои контейнеры.

Нажмите на + Add new instance.

Нажмите на + Add new instance

Справа вы увидите терминал и экземпляр. У этого экземпляра есть публичный адрес.

Справа вы увидите терминал и экземпляр

Задеплойте приложение

Нам нужно скопировать файл docker-compose.yml и вставить его в Play with Docker.

Вы можете сделать это с помощью ssh или просто перетащить файл.

Деплой приложения в Play with Docker

Проверьте наличие файла docker-compose, набрав команду:

ls
Проверка наличия файла docker-compose

Теперь запустим те же две команды, которые мы выполняли ранее локально:

docker compose up -d node_db
docker compose up -d node_app

И проверим:

docker ps -a

Обратите внимание, что теперь открыто 2 порта:  3000 и 5432

Теперь открыто 2 порта:  3000 и 5432

Если вы нажмете на 3000 рядом с OPEN PORT, вы должны увидеть приложение, запущенное на публичном IP (если вы используете какого-либо облачного провайдера, проверьте публичный IP).

4. 🗃️ Коллекция Postman

Откройте Postman и, если у вас его еще нет, создайте Новое общественное пространство (workspace) с любым названием.

Теперь создайте новую коллекцию, нажав на кнопку Создать коллекцию (Create Collection):

Создание коллекции в Postman

Переименуйте её в postman-docker:

Добавьте новый GET-запрос на публичный IP-адрес приложения и сохраните его (кнопка в правом верхнем углу).

Добавление нового GET-запроса на публичный IP-адрес

Продублируйте его (щелкните правой кнопкой мыши на первом запросе) и назовите новый запрос Get All Users.

Этот запрос будет GET-запросом к <public-server-ip>:/users:

GET-запрос к <public-server-ip>:/users

⚠️ Не забывайте сохранять запросы.

Вы можете протестировать эту Коллекцию, запустив её непосредственно в Postman:

Запуск коллекции в Postman

Теперь мы готовы экспортировать эту коллекцию и протестировать её с помощью контейнеров

6. 🧪 Протестируйте приложение с помощью контейнеров

Мы будем использовать Newman, программу запуска коллекций для Postman из командной строки. Newman позволяет запускать и тестировать коллекции Postman непосредственно из командной строки. Он создан с учетом расширяемости, так что вы можете легко интегрировать его с вашими серверами непрерывной интеграции и системами сборки.

Экспорт коллекции Postman

Теперь экспортируйте эту коллекцию в файл JSON. Это можно сделать, нажав на три точки справа от названия коллекции, а затем нажав на Export.

Экспорт коллекции Postman в файл JSON

Сохраните файл как node-collection (без расширения):

Теперь пришло время запустить эту коллекцию.

Запустите коллекцию Postman, используя Newman

⚠️ Для пользователей Windows: используйте командную строку или Powershell.

Перейдите в папку, в которой находится файл node-collection.

И выполните эту команду:

docker run -v <postman-collection-path>:/etc/newman -t postman/newman run node-collection

Замените <postman-collection-path> на путь к папке, в которой находится файл node-collection.

В нашем случае это /c/workspace/postman-collection-test.

И вы получите список запросов.

7. 🏁 Заключение

Мы сделали это! Мы протестировали приложение, используя следующие инструменты:

  • Postman collection
  • Newman
  • Docker

Видеоверсия: https://youtu.be/1eeR0LoIs-M

Перевод статьи «How to test your app using Docker Containers and Postman».

Оставьте комментарий

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