Los beneficios del testeo automatizado
Para seguir con el artículo anterior sobre las pruebas unitarias, en este artículo voy a resumir los beneficios que puedes esperar al implementar pruebas automatizadas en tu sistema.
1. Menos defectos
La ventaja principal, es que las pruebas automáticas permiten limitar mucho la cantidad de defectos que se introducen en el sistema.
Si usas pruebas de aceptación y que escribes tus pruebas unitarias usando TDD (Test-Driven Development, Desarrollo Guiado por Pruebas), entonces tienes mucha más seguridad de la validez de la nueva funcionalidad que estás implementando.
Además, todas las pruebas que ya están escritas, sirven de pruebas de regresión, es decir, que te permiten detectar al instante si una parte del sistema que funcionaba anteriormente no se dañó con los últimos cambios introducidos.
2. Menos tiempo a probar manualmente
Si tienes una prueba automática para probar una nueva funcionalidad que estás desarrollando, no perderás tanto tiempo probando manualmente usando la interfaz gráfica. No tendrás que crear los datos necesarios para todo el flujo y dar los veinte clics necesarios cada vez que haces cualquier cambio al código.
3. Menos tiempo a depurar defectos
Si eres un desarrollador, ya sabes cómo las sesiones de depuración pueden resultar frustrante. Una ventaja de las pruebas automáticas, es que limitan mucho la frecuencia y la duración de las sesiones de depuración. Eso es debido a que te ayudan a localizar el problema más precisamente y rápidamente (unos pocos minutos después de haber introducido el defecto).
4. Encontrar pronto los problemas
Las pruebas unitarias, especialmente las escritas con TDD, permiten reducir al máximo el bucle de retro-alimentación (feedback loop). Mientras más corto el tiempo entre la introducción de un defecto y su detección, más barato va a resultar resolver este defecto. Esto se puede ilustrar de esta manera: ¿cuál sería el costo para el desarrollador arreglar un defecto que agregó hace cinco minutos, comparado con el costo de un defecto que apareció a un cliente?
Esa es una de las mayores razones de la popularidad de las metodologías ágiles, que intentan reducir lo más posible el bucle de retro-alimentación.
5. Ayuda a desarrollar la cosa correcta
Cuando las pruebas unitarias se escriben usando la metodología TDD, permite al desarrollador concentrarse en lo que tiene que hacer el sistema (la especificación), antes de pensar en detalles de implementación. Muchas veces, por preferir empezar rápidamente con la implementación, el desarrollador se olvida que quizás no sea esa la funcionalidad que se necesita. TDD ayuda a construir la cosa correcta, en lugar de solamente construir la cosa correctamente.
6. Un mejor diseño
Escribir pruebas automáticas puede ayudar a tener un mejor diseño por múltiples razones.
La primera razón, es que TDD fuerza a empezar con lo más sencillo, en lugar de usar la solución más complicada. Eso resulta en general en un mejor diseño, sin reinventar la rueda tibia o hacer sobre-ingeniería.
Segundo, escribir pruebas es mucho más fácil cuando el sistema está modularizado y no tiene mucho acoplamiento entre sus diferentes componentes. Por lo tanto si escribes pruebas todo el tiempo, naturalmente tu código de implementación tendrá un mejor diseño.
7. Una implementación más limpia
Las pruebas permiten el proceso de refactorización, que consiste en cambiar la estructura de un componente sin cambiar su comportamiento, para que sea más fácil de entender y de leer. Sin pruebas, este proceso es demasiado peligroso. Las pruebas te dan algún nivel de seguridad de que el comportamiento realmente no cambió. A veces se comparan las pruebas automáticas a una red de seguridad.
¿Cuantas veces te dijiste: “Tendría que cambiar esto, pero mejor dejarlo así, sino voy a dañar algo.”?
8. Las pruebas sirven de documentación
¿Escribes documentación en tu programa? Si es así, entonces seguramente te diste cuenta que a medida que avanza el proyecto, la documentación no se actualiza al mismo tiempo que el sistema y muchas veces termina siendo obsoleta. Y aunque solamente una parte de la documentación esté obsoleta, los trabajadores ya no tienen confianza en la misma, lo que hace que pierda su propósito.
En cambio, las pruebas automáticas forman las especificaciones de lo que tiene que hacer el sistema, sin ninguna ambigüedad. Y si todas pasan (¡lo que siempre debería suceder!), entonces estás seguro que no están obsoletas.
Esto sigue el manifiesto ágil: Software funcionando sobre documentación extensiva
.
9. Costos de mantenimiento drásticamente reducidos
Una consecuencia de todos los beneficios anteriores, es que los costos de mantenimiento son drásticamente reducidos gracias a las pruebas automatizadas. Es mucho más rápido, más seguro y más barato mantener un producto que tiene pruebas.
10. Un producto más adaptable
Gracias a la seguridad otorgada por las pruebas, cambiar el programa es muy facilitado, lo que permite por ejemplo adaptar el producto a un nuevo mercado o a un nuevo contexto.
En este mundo que se vuelve tan competitivo y tan veloz, ese es un beneficio vital para tu empresa.
11. Un trabajo más agradable
Una consecuencia de los otros beneficios, es que las pruebas automáticas suelen aliviar el estrés de los programadores y del resto de la organización, por el hecho que todas las personas involucradas tienen más control. Los trabajadores no tienen que apagar tantos fuegos con urgencia, en cambio pueden concentrarse en hacer un trabajo más interesante y agregar valor al producto y a la empresa.
También los programadores van a tener más orgullo de trabajar sobre un producto de calidad, lo que resulta en un mejor desempeño de los mismos.
Conclusión
Todos esos beneficios se potencian a lo largo de la vida del producto, lo que hace que las pruebas automáticas representen una inversión muy importante en el futuro.
Lo más importante de todos los beneficios, es que el producto va a ser más reconocido por tus clientes como siendo un producto de calidad, adaptado a sus necesidades.
Las pruebas automatizadas te pueden dar una ventaja competitiva muy importante.
En mi próximo artículo, te presentaré los costos de las pruebas automatizadas, ya que a pesar de que tengan muchos beneficios, también tienen costos altos; sin embargo lo importante, es que los beneficios sean mayores que los costos.
Si te interesó este artículo y estás pensando en introducir pruebas automáticas en tu empresa, yo les puedo asesorar y acompañar en este proceso, para potenciar esos beneficios y disminuir los costos. ¡No hesites en contactarme!
Si es el caso, puedes suscribirte a mi newsletter, para siempre recibir los nuevos posts en tu email.