En mi vida como desarrollador, he podido trabajar en diferentes lugares. No todos ellos tenían costumbre de crear un banco de pruebas para sus productos, lo que ha hecho darme cuenta de la importancia que tiene el testing en el software.
Un buen banco de pruebas permite crear productos con la mínima cantidad de bugs. No solo eso, sino que nos ayuda a escalar la aplicación y detectar que el funcionamiento de nuestra aplicación es el esperado.
Tipos de testing y rangos de importancia
Si buscamos por internet, podremos encontrar diferentes artículos indicando que existen varios tipos de testing. Bajo mi punto de vista, para un desarrollador los tres tipos fundamentales que deberían predominar son los siguientes:
- Unitarios
- De Integración
- “End to End” (E2E)
Además, el peso de importancia de dichos tests se muestra reflejado en la conocida como “pirámide del testing”:
Como indica la imagen, el mayor peso del testing debería estar centrado en las pruebas unitarias. A ser posible, deberíamos cubrir la mayor parte de nuestro código de manera unitaria. Estos tests tienen un tiempo de ejecución bajo y son una herramienta esencial para comprobar el funcionamiento de nuestra aplicación.
Cómo crear un buen banco de pruebas
Si bien es cierto que las pruebas unitarias nos ayudan a comprobar si nuestro código se comporta de manera esperada, tenemos que ser conscientes de que los casos que probamos en ellos son aislados.
Es por eso que debemos añadir los otros dos tipos de testing para hacer un banco de pruebas adecuado. De esta manera cubrimos también la integración entre los servicios de nuestro proyecto, y los casos de uso que un usuario final podría realizar sobre nuestra aplicación.
Para ello existen metodologías como la del TDD, BDD etc. Sin embargo, deberíamos seguir una metodología que encaje con nosotros, ya sea el equipo de trabajo o nosotros mismos. Por lo tanto, si vemos correcto y viable implementar TDD como metodología de trabajo, pues adelante. Aún así, es posible que para alguien inexperto o nuevo sea una práctica algo abrumadora y lenta.
Lo que tenemos que tener claro es que, a la hora de desarrollar nuestra aplicación, seamos conscientes de que el código que estamos escribiendo está cubierto por tests unitarios. Si vemos que los servicios que estamos desarrollando tienen que comunicarse entre sí en un caso de uso real, entonces deberemos implementar pruebas de integración y, finalmente, tendremos que probar los casos de uso principales empaquetados en un banco de pruebas E2E.
Conclusiones
En definitiva, debemos tener clara una mentalidad a la hora de ser desarrolladores de software. Debemos tener en mente que la calidad del producto que vayamos a entregar viene, en gran parte, de la calidad de las pruebas que hemos implementado para el.
Si afrontamos un proyecto sabiendo que vamos a realizar un buen banco de pruebas, entonces la calidad se verá reflejada en el resultado. Os aseguro que a la larga, vuestro “yo del futuro” os agradecerá haber construido una herramienta tan importante como es, el banco de pruebas.