Bienvenidos sean a este post, hoy veremos como se compone un test.
Aunque no lo parezca en realidad los tests no dejan de ser un pedazo de codigo cuyo unico proposito es verificar a nuestro sistema, vamos a suponer que llamamos una funcion pasando dos argumentos de tipo enteros, que un objeto tenga una propiedad llamada patoruzu o cuando haces un pedido a una API, despues de un minuto puedes verlo diseccionado en elementos basicos, en la base de datos, esto es usualmente compuesto de tres secciones:
- Preparacion, aqui preparamos el escenario, todos los datos, objetos y servicios necesarios
- Ejecucion, aqui es donde ejecutamos un poco de logica contra la que estamos chequeando, ejecutamos una accion con los elementos anteriormente preparados
- Verificacion, aqui verificamos los resultados y vemos si son acordes a los resultados esperados,
Si bien esta es la estructura basica de un testeo existen otras construcciones que podemos encontrar:
- Setup, este es muy comun de encontrar en varios tipos de testeos, usualmente se lo utiliza para establecer conexiones, informacion que sea necesaria para el testeo, etc
- Teardown, es lo opuesto a lo anterior, estos toman lugar cuando los tests han sido corridos, usualmente es para eliminar infomacion que no sea necesaria
- Fixtures, son las piezas de datos usados en los tests, si trabajamos con un conjunto de estos nos da la posibilidad tener salidas predictibles permitiendo que los tests realicen verificaciones contra ellos
Para realizar los testeos usaremos a la libreria pytest debido a que es una herramienta muy versatil y poderosa pero sobre esto hablaremos mas adelante pasemos al siguiente tema.
Pautas para tests
Como todos software los testeos pueden ser buenos o malos y en algunos casos en el medio, a continuacion veremos una serie de pautas para hacer un testeo correcto:
- Mantenerlo lo mas simple posible, como dijimos anteriormente mientras mas legible y simple el codigo mas facil es encontrar los posibles errores
- Deberian verificar una cosa y solo una, esto significa que sea corto, este contenido y un solo proposito
- Los tests no deben hacer suposiciones innecesarias cuando verificamos datos
- Se debe utilizar mas el que en lugar del como, es decir que debemos enfocar en testear en que debe hacer la funcion en lugar de como lo hace
- Se debe usar el minimo conjunto de fixtures para realizar el trabajo, si descuidamos este punto podemos caer en una gran cantidad de fixtures, generando redundancias innecesarias y extendiendo necesariamente el testeo
- Deben correr lo mas rapido posible, lo ideal seria que el testeo del codigo base no tome mucho mas tiempo que la ejecucion del codigo en si
- Deben consumir la menor cantidad posible de recursos, no siempre es posible pero el desarrollador deberia poder correr estos testeos sin tener que quedarse sin los recursos de su equipo
En resumen, hoy hemos hablado sobre como es la anatomia basica de los tests, como podemos tener otras estructuras y por ultimo unas simples pautas para obtener buenos testeos, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
