Категории

Стресс-тестер 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 }

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

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

Обзор

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

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

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

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

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

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

Автоматизированное тестирование валидации входных данных на стороне сервера (например, проверка обработки слишком длинных строк или отрицательных чисел).
Поиск слепых зон в документации API, где фактическое поведение бэкенда отличается от описанного в контракте.
Быстрое создание негативных сценариев для QA-инженеров без необходимости писать тесты вручную.

Примеры

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

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

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

Backend-разработчик
Контекст
После обновления микросервиса необходимо проверить, не сломалась ли валидация данных по сравнению с утвержденным контрактом API.
Проблема
Нужно быстро прогнать негативные тесты на живом сервере и найти несоответствия между OpenAPI и реальными ответами.
Как использовать
Вставьте спецификацию, укажите базовый URL тестового стенда, добавьте Bearer-токен в заголовок авторизации и включите опцию «Выполнять реальные запросы».
Пример конфигурации
{"baseUrl": "https://staging.api.example.com", "executeRequests": true, "authorizationHeader": "Bearer abc123xyz", "timeoutMs": 10000}
Результат
Инструмент отправляет сгенерированные запросы на сервер и возвращает отчет, подсвечивая эндпоинты, где сервер вернул успешный статус вместо ожидаемой ошибки при невалидных данных.

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

development

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

FAQ

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

Инструмент поддерживает спецификации OpenAPI версии 3.x в форматах YAML и JSON.

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

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

Как инструмент генерирует граничные значения?

Он анализирует ограничения схемы (например, minLength, enum, minimum) и создает запросы с отсутствующими обязательными полями, неверными типами данных и значениями за пределами допустимых диапазонов.

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

Да, вы можете передать токен доступа или другой ключ в поле «Заголовок авторизации» (например, Bearer <token>).

Что делать, если запросы обрываются по таймауту?

Вы можете увеличить значение таймаута запроса в настройках (до 30 000 мс), если ваш сервер отвечает медленно.

Документация 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]