Thursday, November 7, 2019

¿Cómo le hago para aprender Selenium por mí mismo?

     Cada vez mas vemos que las oportunidades de testing involucran algún tipo de automatización,  con Selenium entre las opciones más populares.  Y al igual que la mayoría de las herramientas, viene con una curva de aprendizaje algo pronunciada.  Ahora bien ¿Cómo hacerle para aprender de manera autodidacta?   Siga estos tres sencillos pasos:

1.  Aprenda a hacer pruebas manuales eficientemente.
2.  Seleccione una suite de regresión pequeña pero efectiva.
3.  Aprenda a programar. (aaaah)

     Es precisamente en el punto número tres que nos vamos atorando la mayoría de los testers:  ¿Cómo aprendo a programar por mí mismo?  Igual que como aprendieron a andar en bicicleta: con algo de apoyo.

1.  Conseguir la bicicleta (o una computadora en que programar)
2.  Póngale rueditas (es decir, instale un IDE para que autocomplete las instrucciones)
3.  Pedalee a un ritmo moderado, y a un ritmo mas acelerado cada vez (Siga un programa como ´Learn Python the Hard Way´ )
4.  Quítele las rueditas a la bicicleta, y consígase a alguien que lo vaya guiando mientras pedalea (Consígase un mentor a quien preguntarle sus dudas, se puede desde el paso 3)
5.  Pedalee, y siga pedaleando.  No deje de pedalear (Siga programando, pues)

    Se dice más fácil de lo que es.  Involucra muchas horas de trabajo, claro está.  Para quien quiera formar parte de una comunidad de testers aprendiendo a automatizar, yo soy Coach de Automatización.  Mándenme un correo si desean formar parte de este club.

Friday, October 25, 2019

Por qué es tan difícil aprender Selenium?

     En los últimos dos años he enseñado un curso de Selenium + Java (y últimamente con Cucumber) tanto de manera presencial como en línea a mas de 200 alumnos.  Me he encontrado que a muchos les parece difícil aprender esta tecnología rápidamente, y me parece que la clave de esta dificultad tiene tres razones principales:

* La mayoría de las personas viene de hacer pruebas manuales de caja negra, donde usualmente interactúan con las páginas como usuarios, pero no como power users que tienen un entendimiento de cómo se construyó el sitio de internet.  Muchos de ellos escuchan de temas como locators por primera vez.

* En general es difícil programar.  La curva de aprendizaje es alta para tópicos básicos (como condicionales, ciclos, tipos de variables, métodos y demás) e intermedios (como Programación Orientada a Objetos, Frameworks de Unit Testing, BDD, etc)

* El último clavo en el ataúd es que no hay un proceso de pruebas manuales robusto, mucho menos uno de automatización.  Aparte de conocer la aplicación a probar, hay que tener un objetivo claro del alcance de las pruebas, desarrollar escenarios de prueba al menos a un alto nivel para tener un objetivo claro que probar, ser observadores y notar como se realiza la transición entre pantallas para aplicar esperas adecuadas, etc.

En resumen, el automatizar no sólo involucra dar clicks, llenar formularios y acomodar el código en una prueba unitaria:  Debemos aclarar cuáles son las capacidades del sistema, para aclarar el alcance del proyecto; Seguir un proceso robusto;  y sobre todo,  organizar el código adecuadamente con frameworks (como Cucumber, JUnit) y patrones de diseño (como Page Objects y ScreenPlay) que nos ayudan a organizar y reutilizar el código más eficientemente.  Y sobre todo, hay que utilizar la herramienta continuamente por meses para llegar a ser competente en ella.