USANDO CONTAINER COM
AUTO-ESCALA PARA
EXECUÇÃO DE AUTOMAÇÃO WEB
@eliasnogueira
Problemas na execução de testes
automatizados para web
Compatibilidade
dos browsers
nrotestes
Tempo de execução
dos testes
tempo
Solução: Grid
Grid
Hub
Nós
Script de Teste
Envia Capacidades
NÓ Windows NÓ MacOSX NÓ Linux
HUB
Entende a capacidade
e envia para o nó correto
NÓ Windows NÓ MacOSX NÓ Linux
O que é
Paralelismo?
Mesmo teste em diferentes alvos
Diferentes testes em diferentes alvos
SCONTAINERS
SELENIUM
• Containers separados para hub e nós
• selenium-hub
• selenium-node-chrome
• selenium-node-firefox
• Necessidade de criar containers
adicionais para melhora do paralelismo
• Containers através da imagem elgalu/selenium
• Auto-escala de containers baseado na
quantidade de testes que será recebido
• Live Preview com VNC
• Gravação de Vídeos
• Dashboard
Suite de Teste
HUB
2 testes
Google Chrome
Execução sem auto-escala
Suite de Teste
HUB
4 testes
Google Chrome
Esperando 2 slots free....
Execução sem auto-escala
Suite de Teste
HUB
4 testes
Google Chrome
Execução sem auto-escala
Suite de Teste
HUB
4 testes
Google Chrome
Execução com auto-escala
Suite de Teste
HUB
4 testes
Google Chrome
Execução com auto-escala
Suite de Teste
HUB
Execução com auto-escala
Exemplo do auto-escala Zalenium
# Pull docker-selenium
docker pull elgalu/selenium
# Pull Zalenium
docker pull dosel/zalenium
# Run Zalenium
docker run --rm -ti --name zalenium -p 4444:4444 
-v /var/run/docker.sock:/var/run/docker.sock 
-v /tmp/videos:/home/seluser/videos 
--privileged dosel/zalenium start 
--screenWidth 1366 --screenHeight 768 --timeZone "America/Sao_Paulo” 
--desiredContainers 2 --maxDockerSeleniumContainers 10 --maxTestSessions 1
Ganhos reais
min
Tempo atual para executar uma
suíte com 61 testes em uma grid
de 20 nós.
min
Tempo com abordagem de
execução local (sequencial)
de uma suíte com 61 testes.
Tempo de execução para 15 suítes
com 394 testes em grid
min
ProTip: Criar uma estratégia de
execução de testes em grid
• Dividir a execução em diversas suítes de teste
• Criar suítes de smoke e execute-as primeiro
• Entender a carga de execução (números de testes) e
definir a sua infraestrutura (nós)
Suíte de Testes
90 testes
90 testes
30 min
90 testes
30 min
90 testes
30 min
Tempo total: 30 min
Suíte de Testes
30 testes
30 testes
10 min
30 testes
10 min
30 testes
10 min
Tempo total: 10 min
Suíte de Testes
30 testes
Suíte de Testes
30 testes
OBRIGADO!
@eliasnogueira
https://github.com/eliasnogueira/public-speaking
Referências
Paralelismo com maven-surefire-plugin
https://maven.apache.org/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html
Paralelismo com TestNG suite
http://testng.org/doc/documentation-main.html#parallel-tests
Paralelismo com JUnit experimental ParallelComputer
http://techblog.constantcontact.com/software-development/parallelizing-junit-test-execution/
Docker Selenium
https://github.com/SeleniumHQ/docker-selenium
Zalenium
https://opensource.zalando.com/zalenium/
Elgalu
https://github.com/elgalu/docker-selenium

Usando containers com auto-escala de testes