Te va a interesar!

6/recent/ticker-posts

Test Automation: Source Control y por qué es vital.


Algo en lo que no nos paramos a pensar ni bien estamos empezando nuestro camino en Automation Testing, es, sin dudas, el tema Source Control. Estamos tan enfocados en hacer andar ese click en un botón con Selenium, en que el script encuentre el WebElement en cuestión, que pareciera ser un tema muy lejano en el que no vamos a entrar nunca.

Pero...qué es el Source Control? 

Empecemos por entender qué es antes de decir por qué es necesario. El Source Control es, haciendo caso a su nombre, la manera en que controlamos nuestro código fuente. Nuestro código va a ser organizado, manejado y distribuido idealmente mediante alguna herramienta de Source Control. Si les está costando entender el concepto, vamos con un ejemplo: 
Juan escribió un framework para hacer Testing automatizado de la página web de la empresa. Lo tiene salvado en su máquina local, obviamente. En unos meses se sumó Federico, el cuál va a estar trabajando en la misma página web, también haciendo Automation. Va a necesitar ese código, ese framework que Juan hizo. Cómo se lo puede pasar?
Juan podría hacer un zip de la carpeta y mandarla por mail. Federico recibiría el zip, lo descomprime donde mejor le parezca y empieza a trabajar. Supongamos que Federico crea un método bastante útil y reutilizable que le viene como anillo al dedo a Juan para sus nuevos tests. Sería genial tener el código de nuestro amigo Fede en el framework de Juan. Podría Federico hacer lo mismo: Zippearlo y mandarle todo el trabajo fantástico que hizo...pero el problema es que en todo este tiempo Juan también estuvo trabajando, por lo que debería pisar sus archivos con los de Juan. Bastante desprolijo, no? Peor...si Juan o Federico se mandan una macana y la salvan...cómo revierten eso al estado previo al desastre? Otro lío más...y no me hagan hablar de CI y cómo harían para meter ese framework en Jenkins de manera eficiente! 
En este ejemplo se ve bastante claro las limitaciones tempranas que nos encontramos al no tener implementado el source control en un equipo de Automation. Ahora...vamos a pensar cómo solucionarles la vida a Juan y Fede!

Opciones en el mercado para todos los gustos (y presupuestos)!


Hay muchísimas opciones afortunadamente, opensource, gratis y de uso super amplio con grandes comunidades detrás. También las hay pagas. Eso va a depender de qué usen en la compañía en la que trabajes y a qué tengas acceso. Entre las gratis más usadas están BitBucket, Github, Mercurial y SVN por mencionar algunas. Del otro lado, en las pagas, solo he usado Team Foundation Server con el ecosistema Microsoft.
En los tutoriales que van a encontrar en mi Patreon, van a ver que uso BitBucket para enseñar todo lo referido a Source Control, ya que es gratis, con una buena comunidad y bastante potente!

Qué ventajas tengo al usar Source Control?

Bueno, vamos a lo importante, qué obtenemos a cambio de aprender oootra cosa más para automatizar? Bueno, se las voy a enumerar para que hagan una lista y convenzan a sus equipos/managers y no creyentes del código de que es el mejor camino:
  1. Como les mencionaba con el ejemplo de Juan y Federico, una pieza clave y la idea central del Source Control es la COLABORACIÓN. Teniendo una política clara de Source Control podemos trabajar varias personas en un mismo proyecto de manera eficiente, sin pisarnos, retomando en donde otro dejó, reutilizando assets creados por otros, etc. Digan CHAU a pasarse proyectos zippeados por mail o red internet, por favor!
  2. Poder recuperarse de metidas de pata (errores humanos). Imaginemos que Juan modifica toda una clase enorme de Federico (no deberías hacer clases enormes Fede), solo para darse cuenta que al ejecutar los tests rompió todo. Algunos tienen esa facilidad para romper el código de sus compañeros. En ese caso, con un Source Control bien implementado, eso no llegaría a pasar en primer lugar. Y eso es porque deberíamos estar trabajando con Branches, mergeando al Master solamente las builds que funcionan a la perfección, previo análisis mediante Pull Requests. Más adelante les voy a traer un post sobre el flujo de trabajo recomendado para proyectos de Automation con varias personas o empresas grandes.
  3. Implementación de Continuous Delivery: Si aspiran a sumarse al mundillo DevOps, testear de forma eficiente y tener toda una maquinaria aceitada corriendo jobs ni bien se mandan cambios al código de la aplicación o bien si quieren tener una agenda de tests corriendo y monitoreando el estado general, van a tener que saber que Jenkins, Bamboo y los demás amigos del palo tienen integraciones con BitBucket y herramientas de Source Control para orquestar la ejecución de los scripts, haciendo pull del código y corriendo lo que le pidamos mediante Gradle, Maven o lo que sea que queramos usar en nuestros Frameworks. 

Es la solución a todos mis males?


Ni. Si no implementan una política apropiada para el manejo de los archivos de los proyectos que tengan, van a terminar con un enredo igual o peor que si se mandasen los archivos zippeados. Imaginen que Tanto Juan como Federico se ponen a trabajar en un mismo archivo y hacen un commit/checkin del código. Va a haber conflictos que resolver viendo línea por línea qué cosa de cada uno va. Me ha tocado tener este tipo de problemas hace mucho tiempo en equipos de Automation donde los conflictos entre versiones de un mismo archivo eran casi diarios. Ni les digo la alegría de las pobres almas que tenían que resolver los conflictos...
También me ha pasado usando Team Foundation Server y Coded UI, de tener errores casi irreparables con las clases generadas (las .designer de ese Framework eran un parto) y tener que hacer unos rollbacks que ni les digo. 

A los que estén siguiendo los tutoriales del Patreon, sepan que están en camino unos tutoriales intermedios sobre cómo usar Source Control con el framework que tenemos creado en esa misma plataforma!

Esto es todo por este post, dejen sus comentarios sobre sus experiencias, malas y buenas usando Source Control y cualquier pregunta que tengan, que siempre estoy leyendo y respondiendo!

Publicar un comentario

0 Comentarios