Prólogo
En 1999, Kent Beck escribió Extreme Programming Explained. Esto introdujo al mundo la Programación Extrema (XP). Para muchas personas fue la primera vez que oyeron hablar del desarrollo ágil de software. Durante los 20 años siguientes, muchas de las ideas que subyacían en el libro se desvanecieron, pero hubo una idea que se mantuvo: deberíamos escribir pruebas automatizadas que verifiquen que nuestro código funciona como debería. XP esperaba que estas pruebas se escribieran antes que la lógica de la aplicación, lo que dio lugar al Desarrollo Dirigido por Pruebas (TDD).
Hoy en día, aunque rara vez se practica el TDD estricto, la idea de escribir pruebas prevalece (¡aunque no siempre es popular!). La mayoría de las empresas reconocen ahora la necesidad de algún tipo de prueba automatizada. Muchos de nosotros escribimos pruebas. Incluso las funciones "normales" de control de calidad requieren ahora con frecuencia que se escriba código.
En 2004, Jason Huggins puso en marcha Selenium en una consultoría de desarrollo de software llamada Thoughtworks, especializada en desarrollo ágil. Los empleados estaban impregnados de XP y eran grandes defensores de TDD. Desde el principio, Selenium ha estado estrechamente asociado a las pruebas.
Por aquel entonces, probar sitios web en un navegador era relativamente sencillo. Eran los viejos tiempos, cuando había docenas de navegadores entre los que elegir y JS aún se deletreaba "JavaScript". Los sitios eran pequeños, la funcionalidad limitada, y las interacciones que el usuario podía tener a través del navegador también eran limitadas: quizá sólo rellenar un formulario y pulsar un botón de "enviar". Este es el mundo en el que nació Selenium, y las API y la funcionalidad que ofrecía estaban tan centradas como la plataforma que probaba.
Entonces el mundo descubrió que XMLHttpRequest se escondía en Internet Explorer, se implementó en Firefox y, de repente, "Web 2.0" se convirtió en la nueva palabra de moda. Google Maps mostró al mundo lo que los navegadores podían hacer, ¡y al mundo le encantó! Los sitios web empezaron a ofrecer más funcionalidades, impulsadas por JS cuidadosamente elaborados. Selenium también se adaptó y evolucionó. Escribí las API WebDriver, y éstas pasaron a primer plano. Aunque pretendían guiar a la gente en una dirección determinada, la complejidad subyacente de lo que Selenium intentaba automatizar hizo que se convirtiera en una herramienta más complicada.
Mientras escribo esto, los navegadores son más capaces, potentes y flexibles que nunca. Ya no escribimos "sitios web". Escribimos "aplicaciones web", cuya máxima expresión actual es la "Single Page App" o SPA. Éstas presionan a los navegadores más que nunca, pero son una evolución natural. Afortunadamente, una vez más, Selenium ha evolucionado y crecido para permitir la automatización de este tipo de aplicaciones, añadiendo una serie de nuevas funciones en Selenium 4 para ayudar a hacer frente a las nuevas necesidades de las pruebas. Añadir esta funcionalidad ha convertido a Selenium en una herramienta aún más complicada.
Pero a pesar de haberse ido complicando con los años, Selenium es una herramienta utilizada por personas de todos los niveles de comodidad y capacidad de programación. Escribir una prueba Selenium con éxito es mucho más que "sólo" aprender las API. Hay una gran cantidad de tecnología que lo rodea, desde los marcos de pruebas que puedes utilizar, hasta los Patrones de Diseño que puedes (¡y debes!) seguir al escribir las pruebas, pasando por cómo gestionamos las dependencias binarias que requieren nuestras pruebas. Si queremos que nuestras pruebas se ejecuten en un tiempo razonable, necesitamos tener acceso a una infraestructura que lo permita.
Hay tanto que aprender, y sorprendentemente poca orientación sobre cómo encajan todas las piezas.
Por eso me alegro tanto de que Boni haya escrito este libro. Empieza explicando qué es Selenium y los distintos componentes que lo componen, y luego cada capítulo se basa en los anteriores, introduciendo gradualmente más ideas y conceptos de un modo que resulta natural y obvio.
Y lo que es mejor, Boni va más allá de explicar cómo utilizar las API en bruto. También describe el ecosistema de servicios, herramientas y ejecutores de pruebas que hay que comprender para sacar el máximo partido a la herramienta. Su experiencia en el uso de Selenium y en la provisión de algunas de estas herramientas de apoyo brilla con luz propia: estás en manos de un maestro.
La forma en que está estructurado este libro permite a cualquiera que utilice Selenium sumergirse en el punto que le parezca adecuado. ¿Estás empezando? Entonces empieza por el principio del libro, ya que Boni expone los conceptos básicos de forma atractiva y accesible. ¿Quizá estés familiarizado con Selenium pero quieras saber qué hay de nuevo en Selenium 4, o algunas de las funciones menos conocidas que ofrece? Entonces lánzate a la mitad del libro; hay tanto, ¡que hasta yo aprendí unas cuantas cosas!
Una cosa que espero que la gente se lleve de este libro es que Selenium es sólo una parte del rompecabezas que son las pruebas automatizadas. Boni también se ocupa de esto, presentando a los lectores (¡a ti!) cómo integrarlo en tus marcos de pruebas, las distintas bibliotecas de pruebas unitarias que puedes utilizar y los patrones de diseño que pueden ayudarte a mantener tus pruebas actualizadas y fáciles de mantener. Al fin y al cabo, aunque lleve tiempo escribir una prueba automatizada en primer lugar, puede vivir durante años, y poder trabajar en ella con facilidad es importante.
Este libro allana el camino para dominar Selenium y utilizarlo con eficacia. Espero sinceramente que facilite su uso y -¿me atrevería a decir?- que lo haga más agradable.
Get Selenium WebDriver práctico con Java now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.