FrameworkDemoiselle.gov.brCommunity Documentation
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
O Phantomjs pode ser instalado pelo comando sudo npm install -g 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
java -jar selenium-server-standalone-2.37.0.jar
Configuração do Projeto
//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
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.
Relatório Geral 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:
Link para detalhes da história
Após clicar no link "html" da tela de visão geral, a seguinte tela será exibida:
Detalhamento da História
Na tela acima é apresentado o detalhamento dos cenários contidos na história.
Cenário com Erro (Desktop)
Caso algum erro venha a ocorrer, este será apresentado junto com um print screen da tela (Desktop e Web).