Schemathesis v4.15.0: Fuzzing API, параметризация Pytest
TL;DR
- Новая команда
st fuzzдля непрерывного многошагового API-фаззинга. schemathesis.pytest.parametrize()упрощает тестирование нескольких схем.- Улучшена структурированная генерация HTTP-заголовков и валидация
discriminator.
Key Changes
Schemathesis v4.15.0 предлагает значительные улучшения для рабочих процессов тестирования API, ориентированные на более глубокое тестовое покрытие и улучшенный опыт разработчиков.
Новые Возможности:
Главное нововведение — команда st fuzz, предназначенная для непрерывного, многошагового API-фаззинга по последовательностям операций. Эта новая возможность позволяет инженерам по контролю качества исследовать сложные взаимодействия API и выявлять граничные случаи, которые могут быть пропущены статическими тестовыми сценариями, что приводит к более надежной проверке поведения API. Генерация данных улучшена за счет структурированной генерации для конкретных HTTP-заголовков: If-Match, If-None-Match, If-Modified-Since, If-Unmodified-Since и Range. Это гарантирует, что генерируемые тестовые сценарии более реалистичны и соответствуют деталям спецификации HTTP, улучшая качество тестов, связанных с заголовками. Для пользователей Pytest представлен schemathesis.pytest.parametrize(), позволяющий эффективно применять одну тестовую функцию к нескольким именованным схемам. Эта функция оптимизирует организацию тестового набора и сокращает объем шаблонного кода при тестировании различных API-эндпоинтов или версий. Кроме того, значения свойства discriminator теперь валидируются по известным сопоставлениям схем в response_schema_conformance, а свойство discriminator точно привязывается к правильному значению при генерации данных для схем oneOf/anyOf. Эти изменения повышают точность проверок соответствия схеме, особенно для полиморфных структур данных.
Улучшения:
Опция --wait-for-schema теперь повторяет попытки при получении HTTP 503 ответов, повышая надежность тестовых настроек, зависящих от внешних сервисов, которые могут временно быть недоступны. Плагин Pytest предоставляет более четкие метки статуса подтестов, удаляя избыточные суффиксы параметров, что делает отчеты о тестах более легкими для чтения и интерпретации. Более того, response_schema_conformance и response_headers_conformance теперь сообщают обо всех различных ошибках JSON Schema для каждого ответа, предлагая более гранулированную и детальную обратную связь о нарушениях схемы, что способствует более быстрой отладке.
Исправления Ошибок: Исправлена критическая ошибка, связанная с неверными ограничениями длины для паттернов с многосимвольными повторяющимися группами. Это гарантирует, что данные, генерируемые для полей API со сложными регулярными выражениями, теперь точно отражают предполагаемые требования схемы к длине, предотвращая ложные отрицательные или положительные результаты в тестах.
Impact for QA Teams
Это обновление предоставляет командам QA расширенные возможности API-фаззинга, позволяя проводить более тщательное и непрерывное тестирование. Улучшения интеграции с Pytest и структурированная генерация заголовков упрощают создание и поддержку тестов, а улучшенная отчетность об ошибках предоставляет более четкое представление о проблемах соответствия API. Для получения более подробной информации обратитесь к официальным примечаниям к выпуску Schemathesis.
