11

Aprende los conceptos básicos de testing

Implementar pruebas en un proyecto de software es un paso muy importante en nuestra carrera como desarrolladores. Al inicio vamos a estar trabajando en proyectos personales y tal vez veamos el proceso de pruebas como una pérdida de tiempo más que como un valor agregado, pero te voy a dar un spoiler:en un proyecto profesional NO vamos a ser los únicos involucrados.

https://images.unsplash.com/photo-1531206715517-5c0ba140b2b8?ixlib=rb-1.2.1&q=85&fm=jpg&crop=entropy&cs=srgb

Así es, vamos a trabajar en equipo.

Pero, ¿qué son las pruebas de software?

Al inicio del proyecto de deben haber definido los requerimientos que el producto final debe cumplir. Las pruebas de software son un proceso que nos ayuda a validar que estos requerimientos se vayan cumpliendo durante el desarrollo y no esperar a que el producto esté terminado para verificar si funciona como esperamos que lo haga.

Tipos de pruebas y herramientas

  • Pruebas unitarias - Jest / Mocha / Ava
  • Pruebas de integración - Jest / Mocha / Ava
  • Pruebas End to End - Cypress / Puppeteer

Pruebas unitarias

Son pruebas realizadas a cada uno de nuestros componentes de manera aislada. En cada prueba unitaria logramos conocer si el componente se comporta de la forma que especifica el diseño inicial.

Realizar pruebas unitarias es bastante sencillo, pero debemos tener cuidado por que el componente puede estar funcionando muy bien aislado de los demás, pero cuando interactúa con otros se puede romper.

Pruebas de integración

Son las pruebas que realizamos a nuestros componentes interactuando entre sí, en este tipo de pruebas vemos como los datos fluyen de un componente hacia otro y como los componentes que estamos integrando reaccionan a las interacciones.

Pruebas End to End

Las pruebas End to End son realizadas pensando un poco más del lado del usuario final y requieren de un conjunto de herramientas más completas como Cypress o Puppeteer que nos proveen un navegador para hacer las interacciones con la aplicación. En este tipo de pruebas hacemos un uso total de la aplicación como lo haría un usuario y se observa el flujo de los datos desde la capa del frontend hasta el almacenamiento de los datos de los usuarios.

Características de un buen test

  • Un buen test debe poder correrse rápido, y aquí pensamos nuevamente en el trabajo en equipo debido a que si encontramos tests que toman demasiado tiempo para dar un resultado simplemente no vamos a querer correrlos porque impiden realizar nuestro trabajo más que agregar valor
  • Un buen test no debe romperse con frecuencia, si esto pasa debes revisar la implementación que hiciste, puedes tener algo mal en ella
  • Es fácil de leer, su nombre es descriptivo y podemos entender rápidamente qué es lo que se está probando
  • Nos ayuda a prevenir errores en lugar de generarlos

Coverage de nuestras pruebas

El test coverage nos indica qué porcentaje de nuestro código está siendo probado. No es recomendable tener un 100% de coverage por que es casi imposible probar cada línea de código que escribimos, en proyectos profesionales se recomienda un coverage mínimo del 70%.

Hablemos sobre Jest

Jest es una de las herramientas más populares en el ecosistema de JavaScript para implementar pruebas. Mira The State of JavaScript.

Jest es un test runner basado en Node que nos brinda todo un conjunto de herramientas en un solo lugar, lo podemos usar para realizar pruebas en nuestras aplicaciones tanto del lado del backend como del lado del frontend.

Aunque Jest nos brinda jsdom como herramienta para tener las funcionalidades de un browser en el entorno de Node, para realizar pruebas a nuestras aplicaciones de React es recomendable usar herramientas extras como Enzyme o Testing Library que nos permiten acceder de una forma más óptima a los elementos HTML.

Caracteristicas de Jest

  • Jest es fácil de usar, requiere cero configuración en la mayoría de proyectos de JavaScript
  • Nos permite conocer el test coverage de nuestro proyecto
  • Viene con las herramientas básicas y necesarias para comenzar a realizar nuestras pruebas

Conclusión

Más allá de las herramientas que usamos, debemos entender los conceptos detrás de las pruebas de software y por qué es importante aprender además de implementarlas a entenderlas ya que también nos vamos a encontrar con pruebas que otras personas escriban.

Te invito conocer a profundidad la herramienta que usas para realizar pruebas en tus proyectos, esto te dará mucha ventaja cuando comiences a trabajar con otra por algún motivo debido a que son muy similares en su estructura.

Escribe tu comentario
+ 2
2
9315Puntos

Hay algún recurso que puedas compartir acerca Testing Library?