Инструмент читает описание API, сам генерирует тысячи запросов, включая заведомо неправильные, и проверяет каждый ответ на соответствие той же спецификации. Здесь он гоняет копию Swagger Petstore в Docker.
The tool reads the API description, generates thousands of requests (deliberately broken ones included) and checks every response against that same spec. Here it runs against a private Swagger Petstore in Docker.
Точный оракул: «питомец Rex создан». Покрыто ровно то, о чём вы подумали.
Exact oracle: "Rex was created". Covers exactly what you thought of.
Фазы идут по порядку. Все примеры ниже взяты из настоящего прогона против Petstore.
The phases run in order. Every example below comes from the real run against Petstore.
Строки — операции, столбцы — дефекты. Число — сколько уникальных расхождений Schemathesis записал в baseline. Наведите на ячейку.
Rows are operations, columns are defects; the number is how many unique failures went into the baseline. Hover a cell.
Идея та же, что у test.fail() с номером дефекта в Playwright-тестах. Выберите случай и посмотрите, куда он пойдёт.
Same idea as test.fail() with a defect id in the Playwright tests. Pick a case and follow it.
| Playwright API tests | Schemathesis | Pact (в планах)(planned) | OWASP / ZAP | ||
|---|---|---|---|---|---|
| Вопрос | Question | Работает ли бизнес-логика?Does the business logic work? | Совпадает ли сервер со своей спецификацией на любых входных данных?Does the server match its spec for any input? | Совместимы ли потребитель и поставщик?Are consumer and provider compatible? | Можно ли это взломать?Can it be attacked? |
| Кто пишет кейсы | Who writes cases | инженерengineer | генератор по OpenAPIgenerator from OpenAPI | потребитель, в кодеconsumer, in code | сканер + инженерscanner + engineer |
| Оракул | Oracle | точные ожиданияexact expectations | общие свойства + схемаgeneral properties + schema | контракт-файлcontract file | правила уязвимостейvulnerability rules |
| Объём | Volume | ~100 | ~3 600 / run | десятки взаимодействийtens of interactions | сотни атакhundreds of attacks |
| Лучше всего ловит | Best at | регрессии сценариевscenario regressions | дрейф контракта, 500 на странных данныхcontract drift, 500s on odd data | ломающие изменения до деплояbreaking changes before deploy | BOLA, инъекции, заголовкиBOLA, injection, headers |
Нужны Docker Desktop и Python 3.10+. В CI то же самое делает .github/workflows/fuzz.yml каждую ночь и при изменениях в fuzz/.
Needs Docker Desktop and Python 3.10+. In CI, .github/workflows/fuzz.yml does the same nightly and on changes to fuzz/.