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.