Deja de probar todo manualmente: empieza a confiar en tus pruebas automatizadas

Publicado: Hace 27 días

En nuestros inicios como desarrolladores frontend solemos probar nuestras aplicaciones manualmente: abrir el navegador, llenar formularios, hacer clics, modificar datos directamente desde el backend… y cruzar los dedos para que todo salga bien.

¿Te suena familiar?


Pruebas manuales

Las pruebas manuales son el primer tipo de pruebas que conocemos en nuestros inicios como desarrolladores: backend o frontend. 

Pueden parecer confiables al principio, porque nos permiten validar visualmente si algo “funciona”.


Sin embargo, tienen varias desventajas importantes:


  • Son lentas
  • Repetitivas
  • Pesadas mentalmente
  • Y sobre todo, propensas a errores humanos

Como personas, nos distraemos con facilidad, nos cuesta hacer tareas repetitivas y es difícil mantenernos enfocados al probar muchas cosas manualmente. En cambio, las pruebas automatizadas son todo lo contrario.


Pruebas automatizadas

Como su nombre lo indica, las pruebas automatizadas automatizan tareas. En el contexto del desarrollo de software, son bloques de código que validan el comportamiento de otros bloques de código.


¿Pero qué estás diciendo? Puede sonar confuso al principio, pero te aseguro que es una herramienta muy poderosa que todo desarrollador debería tener en su caja de herramientas.


¿Cómo funcionan?

Podemos tener distintos bloques de pruebas para validar comportamientos específicos de nuestra aplicación. 

Por ejemplo:


  • Que un correo tenga el formato correcto
  • Que un monto esté dentro de un rango permitido
  • Que al hacer clic un botón ocurra una acción específica

Ventajas de las pruebas automatizadas


Refactorizar sin miedo. Si cada bloque de código tiene responsabilidades bien definidas y está cubierto por pruebas, sabrás exactamente si un cambio impacta en otra parte de la aplicación

Ahorrar tiempo. Al ser ejecutadas por la maquina, son mucho más rápidas que las validaciones manuales. Puedes probar en segundos lo que tomaría minutos haciendo clics.

Detectar errores al instante. Pueden definir múltiples casos de prueba y detectar anomalías antes de que afecten al negocio o al usuario final.

Generan confianza. En el desarrollo de software, la confianza lo es todo. Las pruebas automatizadas te dan esa seguridad. Son bloques que verifican que las funcionalidades se comporten como se espera.

Servir como documentación. Las pruebas también funcionan como guía para entender cómo debe comportarse una funcionalidad. Esto es útil no solo para ti, sino también para cualquier persona involucrada en el proyecto.

Tipos de pruebas

Las pruebas automatizadas se clasifican en tres tipos:


Pruebas unitarias. Validan unidades pequeñas de código de forma aislada. Una función, un componente, una lógica de negocio en concreto.


Pruebas de integración. Se aseguran que dos o más piezas de código se comuniquen correctamente entre si.


Pruebas de extremo a extremo. Simulan el comportamiento de un usuario real: entrar a tu app, hacen clics, llenan formularios, navegan entre pantallas.


Ahora bien, seguro te estás preguntas ¿Debería utilizar todos estos tipos de pruebas en mis desarrollos? La respuesta es: no, necesariamente. 

Debe existir un equilibrio entre qué tipos de pruebas usar y en qué cantidad. Para ayudarnos a definir ese balance, existe un concepto muy utilizando en el mundillo de las pruebas: la pirámide de automatización de pruebas.

Pirámide de automatización

La pirámide de automatización es una estrategia para estructuras los diferentes tipos de pruebas según su costo, velocidad y confiabilidad.

Relación entre la estrategia de Mike Cohn y los diferentes tipos de pruebas. A medida que subimos a la pirámide, las pruebas tienden a ser más confiables, pero también más lentas y costosas. En cambio, en la base de la pirámide, las pruebas son más rápidas y baratas, aunque con menor confiabilidad.


Expliquemos cada una de las capas:
  1. Capa UI. 
  • Corresponde a las pruebas extremo a extremo
  • Valida toda la interacción visual del usuario con la aplicación
  • Son más lentas, frágiles y costosas de mantener.
  1. Capa Service. 
  • Representa las pruebas de integración
  • Verifica la comunicación entre distintos módulos y componentes
  • Buen balance entre velocidad, cobertura y confiabilidad
  1. Capa Unit. 
  • Son las pruebas unitarias
  • Validan funciones, métodos o componentes en aislamiento
  • Son las más rápidas y económicas de ejecutar

¿Qué tipo de pruebas debería usar más?

Generalmente, deberías priorizar las pruebas de integración, ya que ofrecen un buen equilibrio entre velocidad y confianza.


Pero eso no significa que las demás no sean útiles.

Cada tipo de prueba tiene su propósito, y lo importante es saber:


  • Qué probar
  • Cuándo hacerlo
  • Y cómo hacerlo

Ese conocimiento es lo que marca la diferencia entre un desarrolladores que simplemente “prueba cosas” y uno que crea software de calidad.

Conclusión

Hacer pruebas automatizadas no se trata de escribir código por escribir.
 Se trata de tener confianza en que tus funcionalidades funcionan como esperas. Y para lograr eso, necesitamos una estrategia para saber qué probar, cómo estructurar tus pruebas y cuándo usar cada tipo.


La pirámide de automatización es una estrategia útil para estructurar nuestras pruebas según su costo, velocidad y confiabilidad. Sin embargo, no es una regla que debamos seguir al pie de la letra. Cada desarrollo es único, siempre ocupemos lo que mejor funcione para tu equipo y tu aplicación.


Recuerda: o se trata de tener más pruebas, si no de tener las pruebas correctas.


Si quieres dar ese paso y comenzar a escribir pruebas que de verdad te ayuden, en mi libro “Testing en React” te muestro cómo hacerlo desde cero, con ejemplos reales, buenas prácticas y explicaciones claras usando Jest y React Testing Library.


Y si aún dudas de por qué necesitas pruebas automatizadas…

Cuando hago un cambio sin pruebas automatizadas… y espero que nada se rompa.