Automação Selenium e Jenkins


Automação de Testes usando Selenium, Jenkins e a linguagem JAVA, neste tutorial vamos utilizar as seguintes ferramentas:

  • Eclipse
  • Selenium Webdrive
  • Selenium Server
  • TestNG
  • Maven
  • Jenkins

Vamos precisar instalar e configurar um por um, porém sempre iremos testar o mesmo / configurar o mesmo, porem com o Maven já pegamos o TestNG e o Selenium :)

Eclipse

O primeiro passo é instalar o Eclipse, você pode baixar ele pelo site, vou estar usando a versão 3.8.1:

Tenha em mente que para instalar o mesmo é preciso ter instalado:

Testanto

Depois de instalado / Copiado execute o mesmo, durante essa execução o programa irá pedir para configurar as suas preferências, configure.

Criando seu primeiro projeto

  • File
    • New
      • Java Project

Dê um nome ao seu projeto, NEXT em seguida finish (isso é só o básico), no lado esquerdo fica o esqueleto do(s) seu(s) projeto(s), vá clicando no [+] e procure pela pasta src, clique com o botão direito do mouse na mesma e crie um pacote (package), por sua vez, dentro do pacote crie um classe (class), fica assim (o .java é colocado sozinho)

  1. Projeto.com
    1. com.projeto.pacote
      1. Inicio.java

Meu Inicio.java

package com.projeto.pacote;

public class Inicio {
    public static void main (String args[]){
        System.out.println("Meu Primeiro Projeto java :)");
    }
}

Se você tiver problemas em executar o código, vá em configurar execução (botão direito na sua classe, Run as -> Run Configurations), no lado esquerdo deve ter uma opção “Java Aplication” crie uma nova e coloque as info do seu projeto, o meu está:

Project:
Projeto.com

Main class:
com.projeto.pacote.Inicio

Dicas

  • Não precisa configurar tudo agora no Eclipse, vamos mexer nele mais tarde
  • Workspace é onde ele salvará seus projetos por padrão
  • Se você tiver um projeto aberto com erros isso dará dor de cabeça
    • Não machuca clicar com o botão direito no projeto e selecionar “Close project”
  • Não vire escravo do mesmo, ele fara muitas coisas para você, mas saiba que você pode fazer tudo também!

MarketPlace

Clique em:

  • Help
    • Eclipse Marketplace

Procure e instale os seguintes plugins:

  • Maven Integration for Eclipse (Luna and newer)
  • Maven Integration for Eclipse (Luna)
  • TestNG for Eclipse

Selenium Webdrive / Selenium Server

O Selenium é(são) a(s) biblioteca(s) que vamos usar para subir um browser e executar nossa automação, para isso devemos baixa-las:

Maven

Após instalar o plugin para o Eclipse, é necessário baixar e configurar o Maven, para baixar utilize a URL abaixo:

Após baixar, colque ele em alguma pasta, esta pasta será a home dele, portanto crie uma variável de ambiente chamada M2_HOME com o caminho da pasta que você criou / colocou para o mesmo, também aconselho colocar o M2_HOME/bin no seu path :)

Crie um projeto novo do tipo Maven no seu Eclipse, selecione o layout de “Quick Start”, altere seu arquivo pom.xml e adicione as seguintes dependências:

(ps: pode demorar um puco pois o Maven vai baixar muita coisa durante a criação do projeto)

pom.xml

        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-plugin-api</artifactId>
            <version>3.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.42.2</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-server</artifactId>
            <version>2.42.2</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-remote-driver</artifactId>
            <version>2.42.2</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.8.8</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-ie-driver</artifactId>
            <version>2.42.2</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-chrome-driver</artifactId>
            <version>2.42.2</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-firefox-driver</artifactId>
            <version>2.42.2</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-safari-driver</artifactId>
            <version>2.42.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-report-plugin</artifactId>
            <version>2.17</version>
            <type>maven-plugin</type>
        </dependency>

Também é interessante adicionar as seguintes linhas para que se possa passar para o Jenkins quais testes serão rodados (modifique conforme necessário)

<build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.17</version>
                <configuration>
                    <suiteXmlFiles>
                        <suiteFile>xml/${suiteFile}</suiteFile>
                    </suiteXmlFiles>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

Fique atento a linha

<suiteFile>xml/${suiteFile}</suiteFile>

a variável $suiteFile é definida pela compilação do seu projeto, nesse caso é necessário o argumento -D seguido pela variável, ex:

mvn clean test -DsuiteFile

sendo assim, ele irá passar o nome do arquivo, dessa maneira podemos rodar vários testes dentro do mesmo projeto.

Depois botão direito no seu MavenProject:

  • Maven
    • Update Project

Selecione as opções para atualizar, instalar e limpar o projeto

TestNG

Baixe o plugin para o Eclipse, como já adicionamos o mesmo como dependência em nosso pom.xml, basta clicar no seu projeto com o botão direito:

  • TestNG
    • Convert to TestNG

Nesse momento você será perguntando sobre o nome, id e informações da sua suite, essas info tem significância local, portanto coloque o que bem entender. O mais importante dessa etapa é o arquivo que ele irá gerar testing.xml, ele não precisa se chamar assim ou ficar na raiz, ai é um critério seu.

Dentro do testing.xml você irá definir quais classes irão rodar, e dentro dessas classes deve-se indicar quais testes vão rodar ou não, isso é feito através de sintaxes do próprio testNG:

package com.daitan;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;

public class Teste {
    public static WebDriver driver = new FirefoxDriver();
    
    @BeforeSuite
    public static void abreSite()
    {
        //navega até uma página
        driver.navigate().to("http://www.ragazzid.com.br/");

    }
    
    @Test
    public static void abreSite ( String[] args )
    {
        WebElement campo = driver.findElement(By.id("casa"));   
    }
    
}

Não há classe main, mas mesmo assim isso irá funcionar, pois o testNG verá o @Test e o @BeforeSuite e irá executar conforme mostrado!

Jenkins

Baixe o Jenkis ( o .war) :

Coloque o mesmo em uma pasta, e o execute como jar:

java -jar jenkins.war

O Jenkins já deve estar rodando agora, por padrão na porta 8080. Vá ao seu browser e acesse a URL: http://localhost:8080

Clique em:

  • Gerenciar Jenkins
    • Configurar o sistema

Configure JDK / Maven conforme seu sistema (demarque a opção instalar automaticamente para poder adicionar o caminho da sua instalação)

Salve e volte a index (http://localhost:8080)

Configurando sua primeira task

Na index, clique em novo item, dê um nome e selecione “Construir um projeto de software usando free-style”

Preencha os campos do topo conforme sua necessidade, clique em avançado e use um workspace customizado, apontando o diretório do seu projeto maven (que criamos anteriormente)

No final da página, em build, adicione um passo a build “chamar alvos maven de alto nível” e adicione a seguinte sintaxe:

clean test -DsuiteFile=testng.xml

O comando acima é o que o maven vai executar antes de iniciar o TestNG, portanto substitua o suiteFile=testng.xml pelo que você configurou no seu pom.xml (dentro de build)

Se quiser, adicione um passo pós build para gerar relatórios do Junit, mas ai é seu critério

Pronto :)