Creación, mantenimiento y asistencia web

Automatizar un navegador para hacer pruebas sobre tu web

Automatizar un navegador para hacer pruebas sobre tu web

En este artículo hablo sobre la ponencia de Javier Gómez impartida en el J & Beyond 2015, al que tuve el privilegio de poder asistir. Trata de cómo automatizar un navegador para realizar pruebas sobre tu web o sobre una extensión de Joomla.

Está escrito sobre todo para desarrolladores.

Estas pruebas están pensadas para comprobar que nuestra web sigue realizando las tareas más importantes para las que está destinada.

También están pensadas para que los desarrolladores de extensiones y del propio Joomla puedan realizar comprobaciones de que todo funciona correctamente.

Como bien apunta Javier, los fallos no son exclusivos de la creación de sitios web o de la programación de software, sino que están presentes en todos los ámbitos. Lo que hay es que diseñar métodos para encontrarlos y ponerles solución.

Para eso están las pruebas de calidad.

Nos habla del TDD (Test Driven Development o, en español, desarrollo guiado por pruebas) que es un método de programación mediante el cual se escribe, además del código, sus pruebas. De hecho, se escriben primero las pruebas y luego el código.

A continuación nos habla de diversos métodos de realizar pruebas y por qué Codeception es la solución más adecuada para este caso:

  1. Legibilidad del código, ya que es muy similar a PHP.
  2. Facilidad de escritura y depuración (incluso con capturas de pantalla de los problemas detectados).
  3. Integración con múltiples plataformas y con PHPUnit.

Después nos enseña Selenium y nos muestra un vídeo de cómo se realiza la grabación de una serie de pruebas sobre un sitio web para luego realizarlas de manera automática. También cómo con Selenium se pueden obtener los "localizadores", que son la forma de identificar los elementos con los que interactuar dentro de un sitio web. Por ejemplo, si estamos hablando de un botón concreto en el que hay que pulsar, se puede diferenciar del resto de elementos por un identificador, por una clase CSS, por una ruta dentro del DOM (xpath), etc.

Nos habla sobre Joomla Browser, que es un modelo hecho con Codeception que nos proporciona ciertas funcionalidades hechas. Sabe que en Joomla existe una parte pública y otra para la administración, que para entrar en esta última es necesario iniciar sesión, sabe instalar extensiones, etc, etc. Es un navegador inteligente que sigue creciendo con más funcionalidades. Si estás interesado en saber más sobre este tema puedes visitar la página de la documentación de Joomla dedicada a la realización de pruebas con Codeception.

Se nos muestra un vídeo de cómo se realiza, de manera completamente automatizada, la instalación de Joomla y a continuación las pruebas sobre la extensión com_weblinks.

A este componente, que está siendo separado del núcleo de Joomla, se le hacen diversas pruebas para saber que funciona correctamente y se ve cómo el navegador va dando los distintos pasos a gran velocidad.

Javier nos explica también que se está utilizando Travis CI en el desarrollo de Joomla para que, cada vez que se realiza un pull request en Github, se ejecuten automáticamente una serie de pruebas que confirmen que el código que se está tratando de modificar o añadir no provoca ningún tipo de problema en el funcionamiento normal del CMS.

Esto es debido a que hay muchos contribuidores al código y hay que asegurarse de que nada falla después de una contribución.

Más adelante en la ponencia nos explica que se realizan pruebas en diferentes máquinas virtuales con versiones de PHP distintas. Nos enseña cómo está configurada la máquina virtual para que tenga todas las dependencias necesarias para que Joomla funcione.

A continuación Javier realiza una demostración de cómo realiza una serie de pruebas a pesar de que, como él dice, su madre le tiene avisado de que no haga este tipo de ejercicios en tiempo real en una ponencia ;)

Para ello introduce página de la documentación de Joomla dedicada a la realización de pruebas con Codecption, una aplicación que nos permite ejecutar tareas de PHP de forma sencilla. Si nos fijamos en el proceso, se descarga la versión en desarrollo de Joomla y a continuación la instala ejecutando el navegador Firefox, pasando de pantalla en pantalla a gran velocidad. En la consola de comandos nos muestra todos los pasos realizados. Una vez desplegado Joomla se instala la extensión a probar, en este caso Weblinks. Las pruebas programadas consisten en crear un par de categorías y comprobar algunos detalles como por ejemplo que al intentar crear una categoría sin título el sistema nos avise de que ese campo no puede estar vacío. Todo esto en 45,5 segundos.

¿Te has fijado que estas herramientas utilizadas son libres y gratuitas?

Al día siguiente, en este mismo evento en la República Checa, tuvo lugar una sesión llamada "Make it happen". Se trataba de unirse a uno de los grupos de trabajo disponibles (code sprint, documentación, traducción, resolución de errores, marketing, UX y UI, etc.) para colaborar con el proyecto Joomla y hacer que crezca entre todos, demostrando una vez más la gran comunidad que es. Entre estos grupos estaba el de Javier, en el que se nos enseña cómo funciona todo esto y se despliega en nuestro ordenador todo lo necesario para empezar a realizar estas pruebas automáticas. Tuve el privilegio de poder participar y, no sin tropiezos, llegar a lanzar una serie de pruebas automatizadas, aunque esto ya fue de madrugada ;)

¡¡Gracias una vez más Javi!!

Si estás interesado en este tema, estás invitado a sumarte al grupo que se ocupa de ello: Automated Testing Working Group. Es uno de los diversos grupos de voluntarios a los que podemos unirnos para hacer crecer Joomla.

Apúntate y recibe gratis directamente en tu buzón de correo la Guía rápida de iniciación a Joomla.

Además, cada cierto tiempo envío trucos y novedades para aplicar a tu sitio web.

No me gusta el correo basura. Protejo tus datos.

Creación o renovación de tu sitio web, la sede online sobre la que tengas control total
Mejora continua de tu sitio web; no pierdas tiempo con los aspectos técnicos

Formación en desarrollo web: cursos y ponencias presenciales así como formación online