leanmind logo leanmind text logo

Artículos

Por Carlos Bléel 07/07/2019

Cómo escribir tests rentables

Hucha del cerdito

Los tests automáticos son una herramienta que nos permite ganar velocidad de desarrollo y evitar problemas de mantenimiento severos, siempre y cuando sean adecuados. Las personas que no tienen suficiente experiencia escribiendo tests a menudo ignoran el gran impacto que la calidad de los tests tienen en el ciclo de vida del producto. El código de los tests requiere el mismo nivel de cuidado que el código que se despliega en producción, no se trata de código de segunda clase. Escribir tests requiere una inversión de tiempo; recuperarla o no depende de la calidad de los mismos. Si quieres que tu proyecto siempre huela a “green field”, necesitas buenas y abundantes baterías de pruebas. ¿Cuáles son los principios que buscamos en los tests?

Un libro relativamente actualizado y muy bueno sobre los tests es Effective Unit Testing de Lasse Koskela, que pese al nombre “unit” aplica muy bien a “integration” tests también.

Cuando escribo tests busco un balance entre los pros y los contras que me ofrecen los distintos tipos de tests automáticos que existen. Los principios que sopeso son:

Concretando, lo que busco es:

Ejemplo de tipos de tests que haría en una aplicación web con un backend tipo API Rest hecho con SpringBoot y un frontend hecho con React:

Por tanto tendré muchos tests unitarios, menos tests de integración y menos tests end2end.

No es importante para mí debatir sobre si “integración” significa que sólo atraviesan una clase o varias clases, lo importante es que hagan el mejor balance posible de las cualidades que buscamos en los tests. Tampoco encuentro valor en discutir si “unitario” significa que sólo ejecuta una función o varias ya que el foco está en el comportamiento observado por fuera del sistema y no en la implementación.

En cuanto a los tests de “aceptación”, cuando se refieren a validar que las reglas de negocio se cumplen, de este artículo puede entenderse que en nuestro caso muchos tests de aceptación serán unitarios. Existe la idea de que aceptación son tests end2end, pero no tiene por qué ser así. De hecho mi recomendación es que haya pocos tests end2end.

¿Cómo son tus tests? ¿qué valoras de ellos?

¿Quieres más? te invitamos a suscribirte a nuestro boletín para avisarte cada vez que recopilemos contenido de calidad que compartir.

Si disfrutas leyendo nuestro blog, ¿imaginas lo divertido que sería trabajar con nosotros? ¿te gustaría?