• compartir en linkedin

Tres pruebas que debes conocer para el desarrollo frontend

En desarrollo de software existen numerosas pruebas que pueden realizarse y se clasifican en dos grupos:

Pruebas funcionales cuyo enfoque es comprobar que el código cumpla con los requisitos funcionales definidos, probando desde pequeñas unidades de código utilizando pruebas unitarias, hasta componentes más grandes implementando pruebas de integración, pruebas betas entre otras.

Pruebas no funcionales donde el objetivo es comprobar criterios que afecten la operación de la aplicación, como la disponibilidad, accesibilidad, usabilidad, rendimiento, para esto pueden utilizarse las pruebas de estrés, pruebas de compatibilidad, pruebas de usabilidad etc.

Cada una cumple con funciones específicas, pero todas tienen en común lo siguiente:

  •  Aumentan la confianza en el nivel de calidad.
  •  Facilitan información para la toma de decisiones.
  •  Evitan la aparición de defectos en el producto que estamos desarrollando.

Si bien es cierto que cada prueba tiene su importancia y mientras más se apliquen ¡mejor! la realidad es que algunas de estas tienen altos costes de implementación y mantenimiento, por esta razón considerando los recursos que tendremos a disposición y los plazos de desarrollo, es que algunas pruebas se implementan más que otras.

Pero, hay tres que considero importante conocer para el desarrollo frontend y son las siguientes.

Pruebas Unitarias

Son las pruebas de más bajo nivel cuyo objetivo es comprobar el funcionamiento de una unidad de código, por ejemplo si hablamos de programación funcional está unidad pudiese ser una función, en caso de programación orientada a objetos podría ser una clase.

La idea es probar cada una de estas unidades por separado, de manera que podamos afianzar su independencia del resto del código.

Por ejemplo, verificar que una función lance una excepción en un caso determinado sería un comportamiento excelente que se podría evaluar con una prueba unitaria.

Su implementación en el desarrollo ofrecen múltiples ventajas, te menciono algunas: 

  • Generan confianza: En la integración continua y la calidad del código.
  • Ayudan a refactorizar: Facilitan hacer cambios y mejoras en el código puesto que permiten asegurar que los nuevos cambios no han introducidos defectos.
  • Documenta el código: De por si estás pruebas son documentación del código, ya que ahí se ve cómo utilizarlo.
  • Desacopla el código: Nos fuerza a separar el lado lógico y operacional del lado presentacional de manera que el código queda más desacoplado lo que ayuda en la mantenibilidad.
  • Los errores están más acotados y son más fáciles de localizar: Dado que las  pruebas unitarias se enfocan en pequeñas porciones de código.

Pruebas de integración

Como su nombre lo indica con estas pruebas verificamos que la integración de los elementos unitarios funcionen como se espera, la intención es probar los diferentes componentes y servicios en conjunto de manera que podamos verificar que la interacción entre ellos no generen fallos y cumplan con los requisitos funcionales definidos.

Es un gran desafío lograr que todas estas unidades que en ocasiones son desarrolladas por diferentes personas ¡encajen! puede que funcione todo de maravilla a nivel de pruebas unitarias pero si no logramos que estos componentes funcionen bien en conjunto, no estamos logrando mucho, por esta razón es de gran importancia tener pruebas que validen esto.

Lo malo, es que las dependencia entre los diversos componentes, entornos y servicios externos, hacen que estas pruebas en algunos casos sean costosas ya que requiere que varias partes de la aplicación estén ejecutándose, es un punto que debemos considerar, pero que no menoscaban todas las ventajas que ofrece.

Pruebas End to End

Son pruebas de más alto nivel, donde se trata de simular el comportamiento de un usuario en un entorno de ejecución completo, poniendo a prueba diferentes flujos de la aplicación con el objetivo de verificar que estos funcionen como se espera, pueden ser flujos tan simple como iniciar una sesión, enviar un formulario o escenarios más complejos que verifiquen las notificaciones por correo electrónico, realizar un pago en línea etc. 

Estas pruebas son muy útiles, pero son caras de realizar y pueden ser difíciles de mantener cuando están automatizadas. Se recomienda realizar algunas pruebas clave ejecutando los flujos más importantes de la aplicación y confiar en los tipos de pruebas de nivel inferior (pruebas de unidad e integración) para poder identificar rápidamente los cambios de última hora.

Conclusión

Saber implementar estas pruebas le darán un gran valor añadido no solo a tus habilidades como desarrollador, sino también a la aplicación donde se pongan en práctica, por los múltiples beneficios en términos de calidad, mantenibilidad, confianza y agilidad en el desarrollo.

Puede que algunas pruebas tengan más relevancia que otras, dependerá mucho de las necesidades, plazos y recursos con la que cuente el proyecto, en otros casos dependerá de la organización y la distribución del trabajo ya que hay empresas donde contratan personas especializadas en pruebas ó QA, pero por mi experiencia como desarrollador estas tres son las más comunes y nunca estarán de más tenerlas en tu skill, de hecho son el tipo de habilidades que te ayudarán a identificarte como un buen desarrollador.