Test Unitarios

¿Qué son?

Los  Test unitarios son un método de pruebas de software que se realizan escribiendo fragmentos de código que testeará unidades de código fuente. El objetivo es asegurar que cada unidad funciona como debería de forma independiente.

Necesidad

Como hemos visto antes, los test unitarios nos dan la posibilidad de garantizar el correcto funcionamiento de nuestro software. Al igual que un fabricante de coches realiza sus pruebas para garantizarnos el correcto funcionamiento de la mecánica y que no tengamos problemas en el futuro, el desarrollo de software se debe tratar como un todo entre, el desarrollo de la funcionalidad y los test asociados. El desarrollo de test nos proporcionara varias ventajas:

  1. Se producirán menos errores en producción ya que el código ha sido evaluado de manera individual.

  2. Se podrán solucionar los errores de una manera mas rápida gracias a su detección temprana.

  3. Ayudan a comprender tanto el código como los resultados que deben mostrar.

  4. Este tipo de pruebas conllevan que se puedan realizar mejoras en el código gracias a que es más fácil de validar que el nuevo código funciona.

  5. Se pueden localizar los errores de una manera más sencilla ya que se indica claramente el componente que falla.

  6. Aumento de productividad y reducción de costes.

Estructura de las pruebas

Para la realización de los test unitarios se deberían seguir los siguientes pasos:

  1. Organizar: Se deben establecer las condiciones iniciales para poder realizarlas así que pensar el resultado que se espera obtener.

  2. Ejecutar: Se deben implementar tanto nuestra lógica del programa como los test asociados a dicha lógica

  3. Comprobar: Se debe comprobar que el resultado obtenido es igual al resultado deseado.

Buenas prácticas

Para conseguir la máxima optimización tanto en el rendimiento de los test como en una mejor optimización de tiempo se deberían tener en cuenta los siguientes puntos:

  1. Debe ser rápido.

  2. Debe ser reutilizable, es decir, comportarse igual bajo las mismas condiciones

  3. Que tengan nombres descriptivos para no tener duda de lo que hacen

  4. Solo debe fallar si el código esta mal, no dependiendo del entorno o de ficheros.

  5. Se debe escribir el mínimo código necesario para que el test sea superado tanto por temas de complejidad como de optimización.

¿Cuándo se deben realizar los test?

Aunque por norma general hay que implementar los test siempre, hay ciertas ocasiones en las que no se deben realizar por distintos requerimientos del proyecto/producto:

  1. Cuando el código que se está desarrollando cambie mucho en muy poco tiempo.

  2. Cuando el periodo de vida del proyecto/producto es extremadamente corto.

  3. Aquellos componentes que tengan poca relevancia dentro del código en caso de contar con tiempos de entrega muy reducidos.

Frameworks recomendados

Junit

Mockito

Extensión: Test unitarios de arquitectura.

Extendiendo los test unitarios, que como hemos comentado vertifican una funcionalidad concreta del código, se encuentran los test unitarios de arquitecuta, los cuales verifican la propia arquitectura del código software (Java) utilizando cualquier marco de prueba unitario.

En resumen, dichos test servirán para asegurarse que la implementación del código cumple con la arquitectura original definida. Para realizar dichos test utilizaremos la biblioteca de ArchUnit.