FrameworkDemoiselle.gov.brCommunity Documentation

Capítulo 9. Execução de Testes

9.1. Execução com Ghost Driver (Funcionalidade Experimental)
9.2. Execução Paralela
9.3. Modo Background
9.4. Integração Contínua
9.5. Testes Remotos
9.6. Relatórios JBehave

Este capítulo apresenta recursos avançados para execução de testes com o Demoiselle Behave, que podem auxiliar a montagem de um ambiente para execução de testes funcionais.

Ghost Driver é um WebDriver remoto que usa PhantomJS como back-end. É uma implementação JavaScript do Protocolo do WebDriver para PhantomJS a fim de rodar testes headless em Selenium.

Para ativá-lo informe o driver GhostDriver nas propriedades do dbehave (behave.properties):

behave.runner.screen.type=GhostDriver

Também é necessário informar o local do binário do PhantmJS na propriedade behave.runner.screen.driverPath:

behave.runner.screen.driverPath=/usr/lib/node_modules/phantomjs/lib/phantom/bin/phantomjs

Outro caminho possível é:

behave.runner.screen.driverPath=/usr/local/bin/phantomjs

A execução de testes de forma paralela pode ser uma alternativa para reduzir o tempo de execução das baterias. Neste caso observe que esta abordagem aumenta a necessidade de processamento da máquina de ativação dos testes. Além disso se deve garantir a independência entre os testes para evitar falsos positivos.

O Demoiselle Behave recomenda a utilização do maven-surefire-plugin que gerencia a execução do teste conforme os seguintes parâmetros:

Segue abaixo o exemplo para configuração do plugin no arquivo pom.xml do projeto:

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-surefire-plugin</artifactId>
			<version>2.16</version>
			<configuration>
				<forkCount>3</forkCount>
				<threadCount>1</threadCount>
				<reuseForks>false</reuseForks>
				<parallel>classes</parallel>
			</configuration>
		</plugin>
	</plugins>
</build> 

Para executar seu teste de forma paralela acione o menu “Run as → Maven Test” do eclipse ou no terminal execute “mvn test”.

A execução de testes em modo background é um recurso importante quando se deseja criar um ambiente dedicado para execução de testes. Normalmente estes ambientes não possuem interface gráfica que impedem o acionamento de navegadores.

Outra situação comum acontece quando o testador executa os testes em sua estação de trabalho e necessita utilizar outros programas que concorrerão com sua tela, devido a utilização de navegadores.

Para ambientes Linux, que possuem ferramentas para emulação de tela, o Demoiselle Behave recomenda a utilização da ferramenta Xvfb.

Instalação:

apt-get install xvfb

Execução do Xvfb:

Xvfb :2 -screen 0 1024x768x24

É possível instanciar vários processos Xvfb por meio de identificadores diferentes. No exemplo acima foi definido com o identificador “2”.

Para executar um aplicativo que utiliza a interface gráfica acione o comando DISPLAY:

DISPLAY=:2 firefox

Para rodar um teste no Xvfb, basta rodar:

DISPLAY=:2 mvn test

Para visualizar processos rodando no Xvfb use o x11vnc (apt-get install x11vnc) que instanciará o serviço vnc para um identificador Xvfb específico:

x11vnc -display :2

Para execução de testes funcionais em modo background, sob um ambiente de integração contínua é necessária a instalação de plugins que permitam gerenciar o Xvfb. O Jenkins possui o plugin: https://wiki.jenkins-ci.org/display/JENKINS/Xvfb+Plugin que permite realizar este controle.

Xvfb Plugin

Após instalar o plugin configure-o pelo menu “Gerenciar o Jenkins → Configurar o sistema” na seção Xvfb installation, informe um nome “padrão” e a pasta em que o executável do Xvfb foi instalado “/usr/bin”.

Configuração do Sistema

Para cada projeto Jenkins configure na seção “Ambiente de Construção” a instalação, seu timeout, as dimensões da tela e seu display:

Configuração do Projeto

Ao executar seu projeto, o Jenkins iniciará o Xvfb antes da construção da build e finalizará o processo ao final da build:

Console

A execução de testes remotos, na qual o navegador rodará numa estação diferente da estação originadora dos testes, é realizada por meio do Selenium Server. Este roteiro auxilia a criação rápida deste ambiente.

Instalação do Selenium Server

Configuração do Projeto

  • demoiselle.properties: Abra o arquivo demoiselle.properties do seu projeto e configure as seguintes propriedades:
    //Altera o driver para o modo remoto
    behave.runner.screen.type=RemoteWeb
    
    //informa o navegador. Opções disponíveis: firefox, chrome, internetExplorer, safari, htmlUnit
    behave.runner.screen.remote.name=firefox
    
    //informa a url na qual encontra-se o Selenium Server
    behave.runner.screen.remote.url=http://127.0.0.1:4444/wd/hub
    
  • Navegadores: Caso necessite executar seu teste em um navegador diferente do Firefox, além de configurar a propriedade “behave.runner.screen.remote.name”, inicie o Selenium Server informando o caminho do driver específico ao seu navegador:
    java -jar selenium-server-standalone-2.37.0.jar -Dwebdriver.chrome.driver=/path/chromedriver

Ao final da execução dos testes automatizados são gerados relatórios na pasta target/jbehave/view. O arquivo principal é o index.html, passível de abertura com qualquer navegador. Ao abrir o arquivo deve-se clicar em "Story Reports" para ter acesso ao relatório da execução.

Para acessar os detalhes de cada história existe um link na última coluna (view), na direita da tabela, como mostra a imagem abaixo:

Após clicar no link "html" da tela de visão geral, a seguinte tela será exibida:

Na tela acima é apresentado o detalhamento dos cenários contidos na história.

Caso algum erro venha a ocorrer, este será apresentado junto com um print screen da tela (Desktop e Web).