Задача: «Оркестр» из API: анализ и тестирование бизнес-процессов. Соберите «оркестр» из API и превратите сложные бизнес-процессы в простые надежные тесты. Покупка в один клик, оформление кредита, интеграция с маркетплейсом — все это цепочки из десятков API-вызовов, где ошибка на любом шаге может нарушить весь процесс. Сегодня их тестирование — это кастомные скрипты, ручная работа и головная боль. Ваша задача: создать ИИ-инструмент для тестирования, который позволяет легко описывать, запускать и проверять такие многошаговые сценарии через взаимодействие с API. Как именно вы это сделаете — решать вам. Главное, чтобы тестировщики и разработчики могли с его помощью ловить ошибки до того, как они попадут к пользователям.
API Orchestra — инструмент для тестирования многошаговых бизнес-процессов через API.
Он позволяет описывать сложные сценарии покупки, кредитования, интеграции с маркетпл��йсом и др., а затем выполнять их как надежные тесты, выявляя ошибки до попадания в продакшн.
- Описание сценариев в YAML: шаги, запросы, проверки, извлечение переменных.
- Выполнение HTTP-запросов (GET, POST, PUT, DELETE).
- Проверка HTTP-статусов и значений в JSON-ответах (
assertions). - Извлечение данных из ответов для использования в следующих шагах (
extract). - Лёгкое подключение к JUnit для автоматического тестирования.
src/
├── main/
│ ├── java/org/example/
│ │ ├── executor/ # Выполнение сценариев
│ │ ├── http/ # HTTP клиент
│ │ ├── io/ # Загрузка YAML сценариев
│ │ ├── model/ # Модели сценариев и шагов
│ │ └── Main.java # Запуск сценария
│ └── resources/scenarios/ # YAML-сценарии
└── test/
└── java/org/example/ # Тесты JUnit
id: purchase-1click
description: "Покупка в один клик"
variables:
baseUrl: "https://postman-echo.com"
steps:
- id: create-order
type: http
request:
method: POST
url: "${baseUrl}/post"
headers:
Content-Type: application/json
body:
productId: "sku-123"
quantity: 1
extract:
echoId: "/json/productId"
assertions:
- status: 200
- jsonPath: "/json/productId"
equals: "sku-123"Из IntelliJ IDEA:
ПКМ → Run Main.main()
Через Maven:
mvn clean compile exec:java -Dexec.mainClass="org.example.Main"- Секции зависимостей и дальнейшего развития
- Списки лучше оформлять с
-и пробелом. - Использовать кодовые блоки для команд или файлов.
Пример:
- Требуется JDK 21 и Maven.
- Все зависимости подтягиваются через
pom.xml:- OkHttp для HTTP-запросов
- Jackson для JSON/YAML
- SLF4J для логирования
- JUnit 5 для тестов
- Поддержка JSONPath для сложных проверок.
- Подключение других типов шагов: базы данных, GraphQL, Kafka и др.
- Генерация HTML/Allure отчётов.
- Визуальный интерфейс для создания сценариев.