Стресс-тестер API-контрактов

Создает граничные тесты по OpenAPI 3.x и при необходимости отправляет их в реальный backend для поиска расхождений с контрактом.

Вставьте документ OpenAPI 3.x в поле "Спецификация OpenAPI". Поддерживаются YAML и JSON.

Что нужно указать:

  • Валидный документ OpenAPI 3.x с paths, parameters, request bodies и responses
  • При необходимости ссылки в components.schemas для разворачивания схем тела запроса
  • Необязательный Base URL, если вы хотите отправлять сгенерированные кейсы в реальный backend

Как работают поля:

  • Спецификация OpenAPI: вставьте полный контракт в YAML или JSON
  • Базовый URL: оставьте пустым для офлайн-генерации кейсов или укажите что-то вроде https://api.example.com для выполнения запросов
  • Выполнять реальные запросы: при включении инструмент отправляет сгенерированные невалидные и граничные запросы на Base URL
  • Заголовок авторизации: необязательное сырое значение, например Bearer
  • Максимум кейсов на поле: ограничивает число граничных кейсов для каждого параметра или поля тела запроса
  • Таймаут запроса (мс): ограничивает время выполнения каждого реального запроса

Что проверяется:

  • Отсутствующие обязательные поля
  • Пустые, слишком короткие и слишком длинные строки
  • Недопустимые значения enum
  • Числа ниже minimum или выше maximum
  • Неверные скалярные или массивные типы для задокументированных полей

Примечания:

  • Если реальные запросы выключены, инструмент только генерирует план контрактного тестирования.
  • Если включены, в отчете отмечается, задокументирован ли каждый наблюдаемый HTTP-статус в responses.
  • Покрываются path, query, header и JSON body; текущая версия ориентирована на application/json.

Примеры результатов

1 Примеры

Сгенерировать граничные кейсы для API регистрации

Проверьте minLength, enum и числовые ограничения до подключения mock server или CI.

{
  "summary": {
    "endpoints": 1,
    "generatedCases": 7,
    "executedCases": 0,
    "mismatches": 0
  },
  "cases": [
    {
      "fieldPath": "body.email",
      "title": "Missing required field"
    },
    {
      "fieldPath": "body.role",
      "title": "Invalid enum member"
    }
  ]
}
Показать параметры ввода
{ "openApiSpec": "openapi: 3.0.0\npaths:\n /users:\n post:\n requestBody:\n required: true\n content:\n application/json:\n schema:\n type: object\n required: [email, role]\n properties:\n email: { type: string, minLength: 5 }\n role: { type: string, enum: [admin, member] }\n age: { type: integer, minimum: 18 }\n responses:\n \"201\": { description: created }\n \"400\": { description: bad request }\n", "executeRequests": false, "maxCasesPerField": 3 }

Ключевые факты

Категория
Разработка и Web
Типы входных данных
textarea, text, checkbox, number
Тип результата
json
Покрытие примерами
4
API доступен
Yes

Обзор

Стресс-тестер API-контрактов автоматически генерирует граничные и негативные тест-кейсы на основе спецификации OpenAPI 3.x. Инструмент позволяет не только создать подробный план тестирования для проверки обязательных полей, ограничений длины строк и числовых диапазонов, но и выполнить реальные HTTP-запросы к вашему бэкенду для выявления расхождений между документацией и фактическим поведением API.

Когда использовать

  • Перед релизом нового API для проверки соответствия реализации заявленному контракту OpenAPI.
  • При подготовке тестовых сценариев для быстрой генерации негативных тест-кейсов без написания кода.
  • Для поиска необработанных исключений на сервере путем автоматической отправки некорректных типов данных и выхода за границы значений.

Как это работает

  • Вставьте вашу спецификацию OpenAPI 3.x в формате YAML или JSON в соответствующее поле.
  • Укажите базовый URL и заголовок авторизации, если хотите, чтобы инструмент автоматически выполнил сгенерированные запросы к серверу.
  • Настройте лимит тест-кейсов для каждого поля и таймаут запросов, затем запустите генерацию.
  • Получите подробный JSON-отчет с описанием сгенерированных граничных условий и, при выполнении реальных запросов, статусами ответов сервера.

Сценарии использования

Автоматическая генерация негативных тестов для эндпоинтов регистрации и авторизации.
Валидация обработки сервером некорректных enum-значений и чисел вне допустимого диапазона.
Проверка полноты документации OpenAPI путем сопоставления реальных HTTP-ответов сервера с описанными в спецификации.

Примеры

1. Генерация граничных кейсов для API регистрации

QA-инженер
Контекст
Команда разработала новый эндпоинт регистрации пользователей, описанный в OpenAPI. Необходимо проверить, как сервер обрабатывает невалидные данные.
Проблема
Вручную придумывать и описывать запросы с отсутствующими полями, короткими паролями и неверными значениями слишком долго.
Как использовать
Вставьте YAML-спецификацию эндпоинта, установите «Максимум кейсов на поле» на 3 и отключите «Выполнять реальные запросы».
Пример конфигурации
{
  "executeRequests": false,
  "maxCasesPerField": 3
}
Результат
Инструмент мгновенно сгенерирует JSON-отчет с тест-кейсами для проверки minLength, enum и отсутствующих обязательных полей, готовый для использования в автотестах.

2. Поиск расхождений контракта на тестовом стенде

Backend-разработчик
Контекст
После рефакторинга API необходимо убедиться, что сервер возвращает правильные HTTP-статусы (например, 400 Bad Request) при получении некорректных данных.
Проблема
Нужно быстро прогнать негативные сценарии на живом тестовом сервере и сравнить ответы с документацией.
Как использовать
Вставьте JSON-спецификацию, укажите «Базовый URL» (например, https://staging.api.com), добавьте токен в «Заголовок авторизации» и включите «Выполнять реальные запросы».
Пример конфигурации
{
  "baseUrl": "https://staging.api.com",
  "executeRequests": true,
  "authorizationHeader": "Bearer test-token",
  "timeoutMs": 8000
}
Результат
Инструмент отправит сгенерированные запросы на сервер и подсветит в отчете незадокументированные HTTP-статусы, например, если сервер вернул 500 вместо ожидаемого 400.

Проверить на примерах

development

Связанные хабы

FAQ

Поддерживает ли инструмент формат YAML?

Да, вы можете вставить спецификацию OpenAPI 3.x как в формате YAML, так и в JSON.

Обязательно ли выполнять реальные запросы к серверу?

Нет, если оставить поле «Базовый URL» пустым или отключить опцию «Выполнять реальные запросы», инструмент просто сгенерирует план тестирования в формате JSON.

Какие именно граничные случаи проверяются?

Инструмент проверяет отсутствие обязательных полей, пустые или слишком длинные строки, недопустимые значения enum, выход чисел за пределы minimum/maximum и неверные типы данных.

Можно ли тестировать защищенные эндпоинты?

Да, для этого предусмотрено поле «Заголовок авторизации», куда можно передать токен, например, в формате Bearer <token>.

Какие форматы тела запроса поддерживаются?

В текущей версии инструмент ориентирован на генерацию и тестирование JSON-тел запросов (application/json), а также параметров пути, запроса и заголовков.

Документация API

Конечная точка запроса

POST /ru/api/tools/api-contract-stress-tester

Параметры запроса

Имя параметра Тип Обязательно Описание
openApiSpec textarea Да -
baseUrl text Нет -
executeRequests checkbox Нет -
authorizationHeader text Нет -
maxCasesPerField number Нет -
timeoutMs number Нет -

Формат ответа

{
  "key": {...},
  "metadata": {
    "key": "value"
  },
  "error": "Error message (optional)",
  "message": "Notification message (optional)"
}
Данные JSON: Данные JSON

Документация MCP

Добавьте этот инструмент к конфигурации сервера MCP:

{
  "mcpServers": {
    "elysiatools-api-contract-stress-tester": {
      "name": "api-contract-stress-tester",
      "description": "Создает граничные тесты по OpenAPI 3.x и при необходимости отправляет их в реальный backend для поиска расхождений с контрактом.",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=api-contract-stress-tester",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

Вы можете объединять несколько инструментов, например: `https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`, максимум 20 инструментов.

Если вы столкнулись с проблемами, пожалуйста, свяжитесь с нами по адресу [email protected]