Qué es automatización de pruebas

La automatización de pruebas funcionales es uno de los temas del momento en la industria del software. La automatización conviene cuando las pruebas se deben repetir muchas veces. Esto permite recuperar la inversión realizada en la automatización cada vez que se repite la prueba, comparándola con haberla hecho en forma manual. Se estima que el retorno en la inversión se comienza a dar a partir de la tercera o cuarta vez que se repite una prueba, ya que el proceso de automatizar requiere más trabajo que hacer una prueba manual. Así que en la práctica la automatización de pruebas funcionales es la práctica que permite controlar la ejecución de un producto software de manera automática, comparando los resultados obtenidos con los resultados esperados.

Pero lo primero que hay que decir al respecto, es que la automatización de pruebas de software no garantiza la calidad del software. ¿Sorprendido? Entonces recuerda que la calidad de software va mucho más allá del testing. Cuando hablamos de calidad de software hemos de tener en cuenta tres núcleos bajo el triángulo de la triple restricción:

  • Los proyectos deben entregarse a tiempo cumpliendo la calidad del proceso de creación de código.

  • Los proyectos deben cumplir con el alcance acordado.

  • Los proyectos deben estar dentro de la proyección de costos cumpliendo los requisitos de calidad del cliente.

Al planificar un proyecto de desarrollo de software hay que considerar varios puntos: la tecnología, los objetivos generales del proyecto, el costo, los distintos equipos de trabajo, el tiempo, entre otros. Una de las actividades fundamentales a considerar es, cómo integrar las actividades de testing en el proyecto para que sea exitoso y ahorre dinero. El testing es uno de los pilares sobre los que se sostiene el éxito de un proyecto. Un software con problemas pierde la confianza del usuario y tal vez no hay una segunda oportunidad para volverla a generar.

Beneficios de la automatización de pruebas funcionales

El principal beneficio es el tiempo y dinero que se pueden ahorrar con las pruebas automatizadas. Además al automatizar las actividades comunes y repetitivas que no requieren de intervención humana la productividad de los equipos de software puede aumentar, ya que los testers pueden dedicar mayor tiempo a realizar pruebas sobre escenarios más críticos y caminos más elaborados dejando los caminos básicos y repetitivos a las pruebas automatizadas. Adicionalmente, la automatización de las pruebas aporta tranquilidad al ajustar y mejorar las principales funcionalidades, ya que brindan información sobre el impacto de los cambios realizados.

¿Qué otros beneficios aporta la automatización? Podemos incluir los siguientes:

  • Rapidez: Las herramientas de testing automatizado ejecutan pruebas significativamente más rápido que los testers humanos.

  • Fiabilidad: Las pruebas ejecutan precisamente las mismas operaciones cada vez que se corre un script automatizado, eliminando el error humano.

  • Repetición: Se puede testear cómo reacciona el software bajo repetidas ejecuciones de las mismas operaciones.

  • Programable: Se pueden programar pruebas sofisticadas y complejas que muestren información oculta de la aplicación.

  • Reusabilidad: Se pueden rehusar los scripts con pruebas automatizadas, las funciones, etc.

¿Cuándo realizar automatización de pruebas?

Dadas las características de la automatización de pruebas que hemos descrito podemos deducir que tener una estrategia de automatización nos puede ayudar a reducir tiempo y dinero. Sin embargo, el tipo de pruebas End-to-End son diseñadas para simular los escenarios reales del usuario y validar que la aplicación y sus componentes están completamente integrados, pero no para gestionar toda la calidad del código. En muchos proyectos el desarrollo del software consume gran parte de los plazos de tiempo, y otras actividades como el Testing quedan relegadas arriesgando a liberar el software con fallas.

Una buena práctica de planificación de proyectos es involucrar a los responsables del equipo de Testing en la fase de planificación del proyecto para dimensionar adecuadamente los objetivos, actividades, recursos, plazos y equipo. Una vez el equipo de Testing conoce la información del proyecto y las necesidades del negocio, se podrá planificar las estrategias de testing, las técnicas, el alcance y las herramientas a utilizar.

Una de las estrategias más importantes para iniciar la automatización de pruebas se basa en la Pirámide de Cohn, o mejor conocida como la Pirámide de Pruebas. En ella Cohn estable que hay varios niveles de pruebas, y señala el grado en el que deberíamos de iniciar la automatización.

  • Unit Tests: En este punto el desarrollador deberia de crear la mayor cantidad de tests unitarios automáticos, porque un primer punto primordial para detectar fallos es a nivel de desarrollador. Si una funcionalidad en este punto falla, podrían fallar las pruebas en los siguientes niveles de la pirámide.

  • Integration Tests: En esta fase es donde más tests se pueden automatizar, debido a la gran cantidad de componentes que depende el aplicativo de software a nivel de API, integración de servicios, etc.

  • System Tests: La pruebas de sistema nos permite determinar, si el software cumple con los requisitos funcionales especificados por el cliente, se centran en las entradas y salidas de cada función, incluyendo la navegación, la entrada de datos, el procesamiento y la obteción de resultados.

  • End-to-End Tests: Ya hemos hablado de este tipo de tipo de pruebas en el capítulo anterior, pero están en la última parte de la pirámide donde el usuario final se integra con las actividades del testing.

Como se puede evidenciar, la Pirámide del Testing nos indica que las pruebas automatizadas deben iniciar una vez inicia el desarrollo del producto, por lo cual es indispensable que el equipo de Testing participe desde la fase de planeación del proyecto para tener una buena estrategia de automatización de pruebas.

Last updated