Integración de Selenium Grid con Jenkins

1
12859

Integración de Selenium Grid con Jenkins

0. Índice de contenidos.

1. Entorno

Este tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil Intel Core 2 CPU T7200 @ 2.00GHz x 2
  • Sistema Operativo: Ubuntu 12.04 LTS x32
  • netBeans IDE 7.3

2. Introducción

A la hora de asegurar la calidad del código, es casi imprescindible un servidor de integración continua como puede ser Jenkins, el cual nos permite ejecutar todos los test antes de cada build además de proporcionarnos métricas para medir la calidad del código.

El problema empieza a aparecer cuando nuestro número de test funcionales ( ya sean con Selenium u otras herramientas de automatización ) empieza a crecer, el tiempo de las Builds empieza a aumentar. Por ello, es muy útil usar herramientas como puedan ser Selenium Grid para ejecutar nuestros test funcionales automáticos en diferentes maquinas.

3. Plugin de Selenium en Jenkins

Para empezar, necesitamos tener Jenkins instalado en nuestro servidor de integración continua, e instalar el plugin de Selenium que podemos instalar igual que cualquier otro plugin de Jenkins.

jenkins-selenium

Una vez tenemos instalado el plugin, este nos creará un servidor maestro de Selenium Grid, podemos ver si se ha instalado todo correctamente en la pantalla principal de Jenkins y viendo el nuevo menú que se habrá creado:

jenkins-selenium

4. Conectando los Nodos

Los nodos son los distintos ordenadores en los que se ejecutaran los test que Selenium crea conveniente, también podemos tener un nodo de cada tipo para probar todas las posibilidades ( un Chrome en Windows, un Chrome en Ubuntu, Internet Explorer 32/64 bits etc.. ).

Si queremos conectar algún navegador que no sea Firefox, necesitamos indicarle el driver del navegador elegido, los drivers los podemos descargar aquí, también necesitamos que en cada nodo esté corriendo el servidor de selenium, que podemos descargar aquí, la única dependencia que tiene este servidor es Java.

Una vez tengamos todo descargado, tenemos que iniciar el servidor de Selenium en todos los nodos que queramos conectar, indicándole el driver del navegador que deseemos usar:

~/java -jar selenium-server-standalone-2.28.0.jar -role node -hub http://localhost:4444/grid/register -Dwebdriver.chrome.driver=»/carpetaconeldriver/chromedriver»

De esta manera iniciaremos un servidor que correrá los test indicados en Google Chrome.

Una vez hecho esto podemos comprobar si se ha conectado correctamente entrando a la misma configuración de Selenium en Jenkins que hemos entrado antes:

jenkins-selenium

5. Creando nuestro primer Test

A la hora de crear test de Selenium que se ejecuten en uno de los ordenadores que forman parte de Selenium Grid, tenemos que darle la IP del HUB (en este caso la de nuestro servidor de Jenkins ), y tener una serie de dependencias en el proyecto:

   <dependency>
        <groupId>junit</groupId>
        <artifactId>junit-dep</artifactId>
        <version>4.10</version>
    </dependency>

    <dependency>
       <groupId>org.seleniumhq.selenium</groupId>
       <artifactId>selenium-java</artifactId>
       <version>2.31.0</version>
    </dependency>

El código Java de nuestro test seria el siguiente:

public class RemoteWebDriverTest {
    public static WebDriver driver;

    @BeforeClass
    public static void conectarDriver() throws MalformedURLException {
         driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), DesiredCapabilities.chrome());
    }

    @Test
    public void elTituloDeGoogleEsGoogle(){
        driver.get("http://www.google.es");
        assertEquals(driver.getTitle(), "Google");
    }

    @AfterClass
    public static void cerrarDriver(){
        driver.close();
    }
}

Es un simple test que abrirá una ventana de Chrome, irá a Google y comprobará si el titulo es Google.

6. Ejecutando nuestros test en Jenkins

Una vez tengamos hecho esto, solo tenemos que meter nuestro test en nuestro proyecto de Jenkins e indicarle que queremos realizar una build ahora, una vez descargue las dependencias necesarias, podremos ver como se abrirá una ventana de Google Chrome en el nodo que hayamos conectado.

jenkins-selenium

7. Conclusiones

Gracias a Selenium Grid podemos aprovechar todo el poder de ejecutar test funcionales automáticos sin aumentar el tiempo de nuestras builds excesivamente, ademas de poder probar tu aplicación en distintos navegadores y sistemas operativos sin esfuerzo añadido.

1 COMENTARIO

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad