Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Pruebas generadas desde el contrato de la API

5 tareas · 40 min · Principiante

Si la API tiene un contrato OpenAPI, las pruebas se pueden generar solas: miles de peticiones dentro y fuera de lo que el contrato permite, y una comprobación de que cada respuesta cumple lo prometido. Conjuntos Llovizna corre cada noche un generador así sobre su API de reservas en el entorno de integración. Te entrega el contrato, la configuración de la corrida y su informe.

0 de 5 · 0%

Objetivo de la sala

Si la API tiene un contrato OpenAPI, las pruebas se pueden generar solas: miles de peticiones dentro y fuera de lo que el contrato permite, y una comprobación de que cada respuesta cumple lo prometido. Conjuntos Llovizna corre cada noche un generador así sobre su API de reservas en el entorno de integración. Te entrega el contrato, la configuración de la corrida y su informe.

Un contrato bien escrito es un requisito que una máquina puede leer: dice qué campos entran, de qué tipo, entre qué límites, si se aceptan campos de más, qué códigos puede devolver cada operación y qué forma tiene cada respuesta. Un generador de pruebas basado en el contrato aprovecha eso: arma peticiones válidas y peticiones que lo rompen a propósito (un número fuera de rango, un campo que no existe, una fecha imposible) y marca como fallo lo que el servidor haga distinto de lo prometido: aceptar lo que debía rechazar, responder con un código que no está declarado, caerse con un 500 o devolver una respuesta con campos que el esquema no tiene.

Lo que no puede saber es lo que el contrato no dice. El contrato describe la forma de los datos, no de quién son: una petición bien formada sobre la unidad de otra persona le parece tan correcta como sobre la propia. Para eso siguen haciendo falta las pruebas de autorización con varias cuentas.

Responde para continuar

¿Qué fallo no puede encontrar por sí solo un generador de pruebas basado en el contrato?

Ver pista de ayuda

Pregúntate cuál de los tres no se puede decidir leyendo solo el contrato.

Abre el laboratorio y lee contrato-reservas.yaml: el esquema de la reserva que se devuelve no admite propiedades adicionales. Luego busca en informe-contrato.txt el fallo de una respuesta que no cumple su esquema. Una propiedad no declarada en una respuesta casi nunca es un detalle de forma: suele ser un dato que el modelo interno arrastra y que nadie decidió publicar.

Responde para continuar

¿Qué propiedad devuelve la consulta de una reserva sin estar declarada en el contrato?

Ver pista de ayuda

Mira el fallo de la operación verReserva.

El esquema de la petición para crear una reserva tampoco admite propiedades adicionales, y aun así el informe registra una que el servidor aceptó y guardó. Es asignación masiva vista desde fuera: el generador no sabe qué hace el servidor con el campo, pero sí ve que la respuesta y la reserva guardada lo reflejan.

Responde para continuar

¿Qué propiedad no declarada aceptó la API al crear una reserva y la dejó guardada?

Ver pista de ayuda

Busca el caso de crearReserva que menciona una propiedad no declarada.

Un informe sin fallos en una operación solo dice algo si la operación se probó. Lee configuracion-generador.txt: hay una operación que cambia datos y que la corrida deja fuera, con un motivo que no es de seguridad.

Responde para continuar

¿Qué operación de la API, identificada por su operationId, excluye la configuración de la corrida nocturna?

Ver pista de ayuda

Mira la sección de operaciones excluidas.

La operación del estado de cuenta sale con cero fallos. Fíjate en cuántas respuestas fueron 404, sobre qué unidad fueron las 200 y con cuántas cuentas corre el generador.

Responde para continuar

¿Qué se concluye del cero de verEstadoDeCuenta en el informe?

Ver pista de ayuda

Una sola cuenta y identificadores al azar no prueban de quién es cada unidad.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad