Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Pruebas unitarias de una regla

5 tareas · 40 min · Principiante

Una regla de detección escrita en Python se puede probar como cualquier función: se le da un conjunto de eventos y se comprueba qué responde. En Transportes Río Manso el equipo tiene una regla de fuerza bruta con cuatro pruebas en verde y la dirección quiere saber si eso basta. Lees la regla, sus pruebas y lo que mostró pytest, y aprendes a distinguir una prueba que protege de una que solo da tranquilidad: las que no se ejecutan, las que no comprueban nada y las que no tocan el límite.

0 de 5 · 0%

Objetivo de la sala

Una regla de detección escrita en Python se puede probar como cualquier función: se le da un conjunto de eventos y se comprueba qué responde. En Transportes Río Manso el equipo tiene una regla de fuerza bruta con cuatro pruebas en verde y la dirección quiere saber si eso basta. Lees la regla, sus pruebas y lo que mostró pytest, y aprendes a distinguir una prueba que protege de una que solo da tranquilidad: las que no se ejecutan, las que no comprueban nada y las que no tocan el límite.

pytest busca archivos cuyo nombre empieza por test_ y, dentro, funciones cuyo nombre también empieza por test. Ejecuta cada una; si no salta ninguna excepción, la prueba pasa. Una comprobación se escribe con assert: si la condición es falsa, la prueba falla.

Un resultado en verde dice que los casos escritos dieron lo esperado. No dice nada de los casos que nadie escribió. Una buena lectura empieza por esa frontera: qué se comprobó y qué no.

Abre /reglas/resultado_pytest.txt y /reglas/politica.txt antes de contestar.

Responde para continuar

La ejecución registrada muestra todas las pruebas en verde. ¿Qué se puede afirmar con eso?

Una prueba sin assert pasa siempre, salvo que el código que llama lance una excepción. Llamar a la función y no mirar lo que devuelve es como comprobar que un detector de humo está enchufado sin acercarle una llama. En el informe aparece en verde y suma al número de pruebas.

Abre /reglas/test_regla_fuerza_bruta.py y revisa una por una qué comprueba cada función de prueba.

Responde para continuar

Escribe el nombre de la función de prueba que no contiene ninguna comprobación.

Ver pista de ayuda

Busca la función de prueba en la que ninguna línea empieza con la palabra que pytest usa para comprobar.

pytest solo recoge lo que sigue su convención de nombres. Una función escrita con todo el cuidado pero llamada de otra manera no falla ni avisa: simplemente no existe para el programa de pruebas. Es la forma más silenciosa de tener una cobertura menor de la que se cree.

La comparación útil es entre lo que está escrito en el archivo de pruebas y lo que pytest anuncia haber recogido: cuenta las funciones y compáralas con el número de la ejecución.

Responde para continuar

Escribe el nombre de la función del archivo de pruebas que pytest no recogió.

Ver pista de ayuda

pytest anuncia cuántas pruebas recogió; compara ese número con las funciones del archivo y descarta la que no es una prueba.

Los errores de una regla de umbral viven en el límite: «5 o más» y «más de 5» parecen lo mismo hasta que entra un usuario con exactamente el número del límite. Las buenas pruebas eligen valores justo debajo, justo en y justo encima del umbral.

Compara el criterio de la política con los casos que prueban los tres tests con eventos. Una de las cantidades que importa no se ejercita en ninguna prueba.

Responde para continuar

Escribe el número de fallos de la política que ninguna prueba ejercita.

Ver pista de ayuda

La política da una cantidad exacta de fallos; mira con cuántos fallos trabajan las pruebas de la carpeta y cuál falta.

La prueba que falta es la del valor del límite. Si se escribe con exactamente los fallos que la política declara, y la política dice que alerta, el resultado esperado es una alerta. Esa prueba, antes de aprobar la regla, es la que dice si la regla lee lo que el equipo de seguridad escribió.

Una buena práctica es escribir el caso del límite primero y dejar que falle si el código no lo cumple: la prueba que falla por una razón correcta vale más que diez que pasan sin tocar el límite.

Responde para continuar

¿Qué prueba habría que añadir a `test_regla_fuerza_bruta.py`?

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