Schemathesis v4.15.0: Fuzzing de API, Parametrización en Pytest
TL;DR
- Nuevo comando
st fuzzpara fuzzing continuo de API en secuencias de operaciones. schemathesis.pytest.parametrize()facilita las pruebas con múltiples schemas.- Generación estructurada mejorada para headers HTTP clave y validación de
discriminator.
Key Changes
Schemathesis v4.15.0 trae mejoras significativas para los flujos de trabajo de pruebas de API.
Nuevas Funcionalidades:
La adición más destacada es el comando st fuzz, diseñado para el fuzzing continuo y multi-paso de API a través de secuencias de operaciones. Esta nueva capacidad permite a los ingenieros de QA explorar interacciones complejas de API y descubrir casos límite que podrían pasarse por alto con casos de prueba estáticos, lo que lleva a una validación más sólida del comportamiento de la API. La generación de datos mejora con la generación estructurada para los headers HTTP específicos: If-Match, If-None-Match, If-Modified-Since, If-Unmodified-Since y Range. Esto asegura que los casos de prueba generados sean más realistas y se adhieran a los detalles de la especificación HTTP, mejorando la calidad de las pruebas relacionadas con los headers. Para los usuarios de Pytest, se introduce schemathesis.pytest.parametrize(), que permite aplicar una única función de prueba de manera eficiente a múltiples schemas nombrados. Esta característica optimiza la organización de la suite de pruebas y reduce el código repetitivo al probar varios endpoints o versiones de API. Además, los valores de la propiedad discriminator ahora se validan contra mapeos de schema conocidos dentro de response_schema_conformance, y la propiedad discriminator se fija con precisión al valor correcto al generar datos para schemas oneOf/anyOf. Estos cambios mejoran la precisión de las verificaciones de adherencia al schema, especialmente para estructuras de datos polimórficas.
Mejoras:
La opción --wait-for-schema ahora reintenta en respuestas HTTP 503, aumentando la fiabilidad de las configuraciones de prueba que dependen de servicios externos que podrían experimentar indisponibilidad temporal. El plugin de Pytest ofrece etiquetas de estado de subtest más claras al eliminar sufijos de parámetros redundantes, haciendo que los informes de prueba sean más fáciles de leer e interpretar. Además, response_schema_conformance y response_headers_conformance ahora reportan todos los errores distintos de JSON Schema por respuesta, proporcionando feedback más granular y detallado sobre las violaciones del schema, lo que ayuda a una depuración más rápida.
Correcciones de Errores: Se ha corregido un error crítico que afectaba las restricciones de longitud incorrectas para patrones con grupos repetidos de múltiples caracteres. Esto asegura que los datos generados para campos de API con patrones regex complejos ahora reflejen con precisión los requisitos de longitud previstos por el schema, evitando falsos negativos o positivos en las pruebas.
Impact for QA Teams
Esta actualización equipa a los equipos de QA con capacidades avanzadas de fuzzing de API, permitiendo pruebas más exhaustivas y continuas. Las mejoras en la integración con Pytest y la generación estructurada de headers simplifican la creación y el mantenimiento de pruebas, mientras que la mejora en el reporte de errores ofrece una visión más clara de los problemas de conformidad de la API. Para más detalles, consulte las notas de lanzamiento oficiales de Schemathesis.
