Recientemente, nos pidieron que contribuyéramos a un artículo de blog que se suponía trataba sobre las "mejores prácticas" para implementar la automatización de pruebas en un entorno DevOps. Si bien no estamos en desacuerdo con la premisa del artículo (es decir, que la automatización de pruebas en un entorno DevOps es una buena idea), pensamos que escribir un artículo sobre 'automatización de pruebas' fue un esfuerzo en vano, ya que la mayor parte de la información ya estaba disponible.
Entonces, en lugar de escribir un artículo sobre la implementación de la automatización de pruebas en un marco DevOps, decidimos escribir un artículo sobre por qué querría implementar la automatización de pruebas en primer lugar, ya que todavía hay muchos casos de uso en los que un conjunto de pruebas impulsado manualmente tiene mucho sentido.

Las pruebas manuales no son ideales
La idea detrás de la implementación prueba de automatización en un entorno DevOps es eliminar el elemento humano de las pruebas. Idealmente, le gustaría automatizar la mayor cantidad posible del proceso de prueba, de modo que incluso si no es un experto en Devops, al menos pueda confiar en que las pruebas se han realizado con alta calidad.
Sin embargo, las pruebas manuales son un proceso lento y engorroso, propenso a errores y una experiencia frustrante para cualquiera que tenga que realizarlo varias veces. Para un evaluador de pruebas manual, cada prueba puede tardar horas, incluso días, en realizarse.
Imagine tener que hacer la misma tarea una y otra vez, durante 10 horas al día, durante un mes seguido, sólo para completar todo el proceso de prueba y encontrar unos cientos de errores. Eso es un mes de tu vida perdido, sólo para encontrar unos cientos de errores, a un ritmo de un caso de prueba cada dos días.
Aún peor es el hecho de que las pruebas manuales a menudo se realizan de manera ad hoc, sin un plan o estrategia real. Dado que suele ser un proceso que requiere mucho tiempo y no hay ningún incentivo para hacerlo más rápido, es posible que algunas de las pruebas nunca se repitan y muchos de los atajos que pueden automatizarse fácilmente terminan siendo ignorados.
La automatización de pruebas permite una mejor planificación y reduce el desperdicio
Ahora bien, al planificar su estrategia de prueba, en realidad no puede planificar todos los escenarios. Sin embargo, con las pruebas automatizadas, puede escribir un script que desencadenará un conjunto esperado de eventos y, dado que estos eventos son completamente deterministas, puede calcular con bastante precisión cuánto tiempo llevará ejecutar el conjunto de pruebas.
Como resultado, puede estimar con bastante precisión cuántos recursos (horas-hombre) necesitará para el proyecto, suponiendo que todas las pruebas estén pasando. Por supuesto, esto variará dependiendo de si te encuentras con algún inconveniente en el camino, pero generalmente es una buena idea planificar lo peor, para no terminar sorprendiéndote al encontrar un montón de errores, después de todo. .
Además, dado que las pruebas automatizadas suelen ser un proceso bastante rápido y sencillo, puede realizarlas junto con el desarrollo del software. Esto significa que tanto el desarrollador como el ingeniero de pruebas pueden seguir trabajando en la misma base de código y, al mismo tiempo, garantizar que las pruebas se ejecuten como se esperaba y de manera oportuna.
Por ejemplo, digamos que está implementando una aplicación web con Node.js, Backbone y Marionette y debes probar la funcionalidad de la aplicación. Tu puedes fácilmente configurar una canalización de CI/CD que activará automáticamente una VM, instalará todas las dependencias requeridas y ejecutará las pruebas cada vez que se envíe un cambio a la rama maestra.
Como resultado, no solo obtiene un conjunto consistente de pruebas que se pueden ejecutar una y otra vez, sino que también puede obtener más valor de sus esfuerzos de automatización, al reducir la cantidad de intervención manual que generalmente es necesaria.
Los beneficios de la automatización de pruebas son numerosos
Como dijimos anteriormente, la automatización de pruebas permite una mejor planificación y estrategia, ya que puedes realizar un seguimiento fácilmente de todas las pruebas, su estado y los problemas que encuentran.
Esto significa que puede determinar fácilmente qué se debe hacer para solucionar los problemas y pasar a la siguiente prueba, en lugar de tener que empezar de cero cada vez que algo sale mal. También significa que puede proporcionar fácilmente a la persona que ejecuta las pruebas la formación y el apoyo adecuados, cuando sea necesario.
Además, la automatización de pruebas puede ser una excelente manera de encontrar y monitorear nuevos errores y problemas que surgen en el software con el tiempo. Una de las principales razones por las que las personas evitan las pruebas automatizadas es porque piensan que no es posible escribir una prueba que cubra todas las eventualidades.
Sin embargo, esto está lejos de ser cierto, ya que cada error y problema que se encuentra se registra en un registro en algún lugar y, a partir de ahí, es solo cuestión de buscar el registro e implementar la solución. El hecho de que este suele ser un proceso sencillo y requiere una mínima intervención manual hace que valga la pena.
Además, con las pruebas automatizadas, puede crear fácilmente un conjunto de pruebas estándar, que se ejecutarán una y otra vez, como parte del proceso de compilación. Como resultado, todos los miembros del equipo pueden ver rápidamente cómo está funcionando el programa, sin tener que ejecutarlo ellos mismos ni depender de que otra persona interprete los resultados por ellos.
Además, dado que las pruebas generalmente se escriben en forma de "caja negra", lo que significa que no dependen de ningún detalle de implementación en particular, aparte del conjunto de entradas esperadas, deberían ser portátiles a cualquier plataforma y, por lo tanto, menos propensas a sufrir errores. errores y más fácilmente verificables.
Resumen
En definitiva, implementar la automatización de pruebas en un entorno DevOps puede ser una buena idea, siempre que se cuente con el equipo y el enfoque adecuados. En primer lugar, asegúrese de contar con alguien que tenga experiencia en la redacción de pruebas funcionales y de rendimiento.
Además, asegúrese de que el equipo tenga suficiente propiedad del proceso, de modo que estén motivados para llevarlo hasta el final y trabajarán con usted, como una sola unidad, para identificar obstáculos y encontrar soluciones.
Por último, asegúrese de tener a alguien que sea responsable de planificar, coordinar y ejecutar las pruebas, ya que esto determinará el resultado de sus esfuerzos, más que cualquier otra cosa.