Las pruebas de software o testing automatizado consiste en la aplicación de determinadas herramientas de software con el objetivo de automatizar ciertos procesos para poder validar y verificar determinado software. Actualmente, la mayoría de los proyectos ágiles y DevOps modernos incluyen pruebas automatizadas desde el principio. Sin embargo, para apreciar plenamente el valor de las pruebas automatizadas, es útil comprender qué ocurría antes de que fueran de uso corriente.
En tiempos en que las pruebas manuales eran la norma, era común que las empresas de software cuenten con un equipo de control de calidad interno. Este equipo desarrollaba ciertos «planes de prueba» o listas de verificación paso a paso, con los cuales se comprobaba que la función de un proyecto de software se comporta como se esperaba.
Luego, el equipo de control de calidad ejecutaba manualmente estas listas de verificación cada vez que había una nueva actualización o cambio dentro del proyecto de software, y luego enviaba los resultados al equipo de ingeniería para su revisión y cualquier desarrollo posterior para resolver problemas.
El proceso era lento, costoso y propenso a errores. Las pruebas automatizadas aportan enormes beneficios a la eficiencia del equipo de control de calidad (ver empresas). Los planes de prueba se desarrollan junto con el desarrollo regular de las características de la hoja de ruta y luego se ejecutan automáticamente mediante herramientas de integración continua de software. Este tipo de pruebas son útiles para reducir la cantidad de personas de un equipo de control de calidad, lo cual permite que estos profesionales se puedan concentrar en funciones más importantes.
¿Qué tipos de pruebas de software deben automatizarse primero?
Quizás las pruebas más valiosas para la implementación son las pruebas de extremo a extremo (E2E). Las pruebas E2E simulan interacciones a nivel de usuario en todo el software. Los planes de prueba de E2E generalmente cubren historias a nivel de usuario como «el usuario puede iniciar sesión», «el usuario puede depositar», «el usuario puede cambiar la configuración del correo electrónico».
Estas pruebas son muy valiosas de implementar porque brindan la confianza de que los usuarios reales tienen una experiencia fluida y sin errores, incluso cuando se avanzan las nuevas confirmaciones.
Las pruebas E2E capturan y reproducen las acciones del usuario, por lo que los planes de prueba de E2E se convierten en registros de los flujos clave de interacción del usuario. Si el producto de software no tiene ningún tipo de cobertura de pruebas automatizadas, obtendrá el máximo valor mediante la implementación de pruebas E2E en los flujos comerciales más importantes.
Las pruebas E2E pueden ser costosas de capturar y registrar secuencias de flujo de usuario. Si el producto de software no ejecuta lanzamientos diarios rápidos, puede ser más rentable que un equipo humano ejecute manualmente los planes de prueba de E2E.
Por otro lado, las pruebas unitarias cubren unidades individuales de código. Las unidades de código se miden mejor en las definiciones de funciones. Una prueba unitaria cubrirá una sola función. Las pruebas unitarias son necesarias para afirmar si determinada entrada esperada de cierta función coincide con la debida salida esperada.
El código que es computacionalmente sensible (como podría ser de finanzas, salud o aeroespacial) se cubre mejor con pruebas unitarias. Las pruebas unitarias son económicas y rápidas de implementar y proporcionan un alto retorno de la inversión.