SlideShare uma empresa Scribd logo
COMO CRIAR E EXECUTAR TESTES
PARALELOS WEB USANDO
SELENIUM E CONTAINERS
@eliasnogueira
Problemas na execução de testes
automatizados para web
Compatibilidade
dos browsers
Tempo de execução
dos testes
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
Local
Utiliza máquinas dentro da
nossa infraestrutura, podendo
ser uma máquina real ou
virtual.
Nuvem
Utiliza serviços na nuvem para
criar e conectar máquinas.
Containers
Utilizar containers e o suporte
a orquestração para a criação
de grid sob demanda.
Formas de criar uma grid
O que é
Paralelismo?
1
maven-surefire-plugin
Junit
experimental
ParallelComputer
3
TestNG suite
2
Formas de criar
• Depende de infraestrutura física
• Dificuldade de escalar
• Requer manutenção (atualizações)
Problema com o grid local
Solução proposta
Com o TestNG conseguimos inserir
parâmetros da suíte de teste em xml para
os scripts de teste, removendo
dependência direta de browsers no script.
Com Docker podemos utilizar containers
como hub e como nós, e utilizar quantos
containers forem necessários para as
execuções de teste.
TestNG
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
Executa os dois testes
nos dois nós
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
Executa dos testes nos
dois nós disponíveis
Suite de Teste
HUB
4 testes
Google Chrome
Execução com auto-escala
Cria mais dois nós
Suite de Teste
HUB
Execução com auto-escala
Ao final da execução,
mantém somente os dois nós
Exemplo do paralelismo - código
@BeforeMethod
@Parameters("browser")
public void preCondicao(@Optional("chrome") String browser) {
driver = getDriver(browser);
}
<suite name="Build Dev" parallel="tests" thread-count="99">
<test name="Execução Chrome">
<parameter name="browser" value="chrome"/>
<classes>
<class name="test.ReservarQuartoTest" />
</classes>
</test>
</suite>
Exemplo do paralelismo - código
@BeforeMethod
@Parameters("browser")
public void preCondicao(@Optional("chrome") String browser) {
driver = getDriver(browser);
}
<suite name="Build Dev" parallel="tests" thread-count="99">
<test name="Execução Chrome">
<parameter name="browser" value="chrome"/>
<classes>
<class name="test.ReservarQuartoTest" />
</classes>
</test>
</suite>
Indicando que o paralelismo é
por testes na classe de teste
Exemplo do paralelismo - código
@BeforeMethod
@Parameters("browser")
public void preCondicao(@Optional("chrome") String browser) {
driver = getDriver(browser);
}
<suite name="Build Dev" parallel="tests" thread-count="99">
<test name="Execução Chrome">
<parameter name="browser" value="chrome"/>
<classes>
<class name="test.ReservarQuartoTest" />
</classes>
</test>
</suite>
Verifica associação
do parâmetro
Insere o valor do
parâmetro no
teste
Exemplo do paralelismo - código
@BeforeMethod
@Parameters("browser")
public void preCondicao(@Optional("chrome") String browser) {
driver = getDriver(browser);
}
<suite name="Build Dev" parallel="methods" thread-count="99">
<test name="Execução Chrome">
<parameter name="browser" value="chrome"/>
<classes>
<class name="test.ReservarQuartoTest" />
</classes>
</test>
</suite>
Se a execução não for via suíte,
executa no Google Chrome
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 de pagamentos com 61 testes
em uma grid de 20 nós.
min
Tempo com abordagem de
execução local (sequencial)
de 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
defina 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
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

Mais conteúdo relacionado

Mais procurados

Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automação
Sandy Maciel
 
Testes em todos os niveis de planejamento
Testes em todos os niveis de planejamentoTestes em todos os niveis de planejamento
Testes em todos os niveis de planejamento
Elias Nogueira
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)
I Goo Lee.
 
Introduction to E2E in Cypress
Introduction to E2E in CypressIntroduction to E2E in Cypress
Introduction to E2E in Cypress
Fabio Biondi
 
AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018
AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018
AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018Amazon Web Services Korea
 
Eng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de softwareEng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de software
Manuel Menezes de Sequeira
 
Blazor and more.pptx
Blazor and more.pptxBlazor and more.pptx
Blazor and more.pptx
Jürgen Gutsch
 
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
An Introduction to Test Driven Development
An Introduction to Test Driven Development An Introduction to Test Driven Development
An Introduction to Test Driven Development
CodeOps Technologies LLP
 
Reusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modulesReusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modules
Yevgeniy Brikman
 
Pytest KT.pptx
Pytest KT.pptxPytest KT.pptx
Pytest KT.pptx
RameshN849679
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
Elias Nogueira
 
AWS Secrets Manager: Best Practices for Managing, Retrieving, and Rotating Se...
AWS Secrets Manager: Best Practices for Managing, Retrieving, and Rotating Se...AWS Secrets Manager: Best Practices for Managing, Retrieving, and Rotating Se...
AWS Secrets Manager: Best Practices for Managing, Retrieving, and Rotating Se...
Amazon Web Services
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
David Ehringer
 
Beginners - Get Started With Unit Testing in .NET
Beginners - Get Started With Unit Testing in .NETBeginners - Get Started With Unit Testing in .NET
Beginners - Get Started With Unit Testing in .NET
Baskar K
 
Introduction to React Native Workshop
Introduction to React Native WorkshopIntroduction to React Native Workshop
Introduction to React Native Workshop
Ignacio Martín
 
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)
Jongwon Kim
 
Getting started with Appium 2.0
Getting started with Appium 2.0Getting started with Appium 2.0
Getting started with Appium 2.0
Anand Bagmar
 
Testes em uma arquitetura com messageria/streaming (Kafka)
Testes em uma arquitetura com messageria/streaming (Kafka)Testes em uma arquitetura com messageria/streaming (Kafka)
Testes em uma arquitetura com messageria/streaming (Kafka)
Robson Agapito Correa
 
Angular Unit Testing
Angular Unit TestingAngular Unit Testing
Angular Unit Testing
Alessandro Giorgetti
 

Mais procurados (20)

Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automação
 
Testes em todos os niveis de planejamento
Testes em todos os niveis de planejamentoTestes em todos os niveis de planejamento
Testes em todos os niveis de planejamento
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)
 
Introduction to E2E in Cypress
Introduction to E2E in CypressIntroduction to E2E in Cypress
Introduction to E2E in Cypress
 
AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018
AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018
AWS Support에서 제안하는 멋진 클라우드 아키텍처 디자인::조성열:: AWS Summit Seoul 2018
 
Eng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de softwareEng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de software
 
Blazor and more.pptx
Blazor and more.pptxBlazor and more.pptx
Blazor and more.pptx
 
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
 
An Introduction to Test Driven Development
An Introduction to Test Driven Development An Introduction to Test Driven Development
An Introduction to Test Driven Development
 
Reusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modulesReusable, composable, battle-tested Terraform modules
Reusable, composable, battle-tested Terraform modules
 
Pytest KT.pptx
Pytest KT.pptxPytest KT.pptx
Pytest KT.pptx
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
 
AWS Secrets Manager: Best Practices for Managing, Retrieving, and Rotating Se...
AWS Secrets Manager: Best Practices for Managing, Retrieving, and Rotating Se...AWS Secrets Manager: Best Practices for Managing, Retrieving, and Rotating Se...
AWS Secrets Manager: Best Practices for Managing, Retrieving, and Rotating Se...
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
 
Beginners - Get Started With Unit Testing in .NET
Beginners - Get Started With Unit Testing in .NETBeginners - Get Started With Unit Testing in .NET
Beginners - Get Started With Unit Testing in .NET
 
Introduction to React Native Workshop
Introduction to React Native WorkshopIntroduction to React Native Workshop
Introduction to React Native Workshop
 
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)
 
Getting started with Appium 2.0
Getting started with Appium 2.0Getting started with Appium 2.0
Getting started with Appium 2.0
 
Testes em uma arquitetura com messageria/streaming (Kafka)
Testes em uma arquitetura com messageria/streaming (Kafka)Testes em uma arquitetura com messageria/streaming (Kafka)
Testes em uma arquitetura com messageria/streaming (Kafka)
 
Angular Unit Testing
Angular Unit TestingAngular Unit Testing
Angular Unit Testing
 

Semelhante a Como criar e executar testes paralelos web usando Selenium e containers

Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Elias Nogueira
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Allyson Barros
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnap
Andreano Lanusse
 
Testes Automatizados e testes de carga no Visual Studio Team Service
Testes Automatizados e testes de carga no Visual Studio Team ServiceTestes Automatizados e testes de carga no Visual Studio Team Service
Testes Automatizados e testes de carga no Visual Studio Team Service
Alessandra Soares
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
Diego Santos
 
Entity framework migrations
Entity framework migrationsEntity framework migrations
Entity framework migrations
Priscila Mayumi
 
Solucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.ioSolucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.io
Patrick Monteiro
 
TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016
Fernando Santiago
 
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontaTestando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
tdc-globalcode
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
Reinaldo Junior
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
Samanta Cicilia
 
Testes de regressão automatizados
Testes de regressão automatizadosTestes de regressão automatizados
Testes de regressão automatizados
Cristian R. Silva
 
Usando containers com auto-escala de testes
Usando containers com auto-escala de testesUsando containers com auto-escala de testes
Usando containers com auto-escala de testes
Elias Nogueira
 
PDC - Testes - Usando o Testlink
PDC - Testes - Usando o TestlinkPDC - Testes - Usando o Testlink
PDC - Testes - Usando o Testlink
slides_teltools
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
Diego Tremper
 
Grails
GrailsGrails
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
Diego Tremper
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
Manuel Lemos
 
Ideais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverIdeais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriver
Stefan Teixeira
 
Android: testes automatizados e TDD
Android: testes automatizados e TDDAndroid: testes automatizados e TDD
Android: testes automatizados e TDD
Dextra
 

Semelhante a Como criar e executar testes paralelos web usando Selenium e containers (20)

Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnap
 
Testes Automatizados e testes de carga no Visual Studio Team Service
Testes Automatizados e testes de carga no Visual Studio Team ServiceTestes Automatizados e testes de carga no Visual Studio Team Service
Testes Automatizados e testes de carga no Visual Studio Team Service
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
 
Entity framework migrations
Entity framework migrationsEntity framework migrations
Entity framework migrations
 
Solucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.ioSolucionando a Teoria do Caos com Cypress.io
Solucionando a Teoria do Caos com Cypress.io
 
TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016
 
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontaTestando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
 
Testes de regressão automatizados
Testes de regressão automatizadosTestes de regressão automatizados
Testes de regressão automatizados
 
Usando containers com auto-escala de testes
Usando containers com auto-escala de testesUsando containers com auto-escala de testes
Usando containers com auto-escala de testes
 
PDC - Testes - Usando o Testlink
PDC - Testes - Usando o TestlinkPDC - Testes - Usando o Testlink
PDC - Testes - Usando o Testlink
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Grails
GrailsGrails
Grails
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Ideais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriverIdeais Cowabunga - Headless Testing com GhostDriver
Ideais Cowabunga - Headless Testing com GhostDriver
 
Android: testes automatizados e TDD
Android: testes automatizados e TDDAndroid: testes automatizados e TDD
Android: testes automatizados e TDD
 

Mais de Elias Nogueira

API Testing following the Test Pyramid
API Testing following the Test PyramidAPI Testing following the Test Pyramid
API Testing following the Test Pyramid
Elias Nogueira
 
Coach por Imersão - Buscando a excelência técnica com o time
Coach por Imersão - Buscando a excelência técnica com o timeCoach por Imersão - Buscando a excelência técnica com o time
Coach por Imersão - Buscando a excelência técnica com o time
Elias Nogueira
 
O Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnicoO Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnico
Elias Nogueira
 
Create an architecture for web test automation
Create an architecture for web test automationCreate an architecture for web test automation
Create an architecture for web test automation
Elias Nogueira
 
Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil
Elias Nogueira
 
Papel do QA na Transformação Ágil
Papel do QA na Transformação ÁgilPapel do QA na Transformação Ágil
Papel do QA na Transformação Ágil
Elias Nogueira
 
BDD não é automação de teste - Scrum Gathering
BDD não é automação de teste - Scrum GatheringBDD não é automação de teste - Scrum Gathering
BDD não é automação de teste - Scrum Gathering
Elias Nogueira
 
Improve Yourself -- Learn the Skills, Join the Community - Tests
Improve Yourself -- Learn the Skills, Join the Community - TestsImprove Yourself -- Learn the Skills, Join the Community - Tests
Improve Yourself -- Learn the Skills, Join the Community - Tests
Elias Nogueira
 
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Elias Nogueira
 
BDD não é Automação de Testes
BDD não é Automação de TestesBDD não é Automação de Testes
BDD não é Automação de Testes
Elias Nogueira
 
Como ter sucesso ministrando uma palestra técnica
Como ter sucesso ministrando uma palestra técnicaComo ter sucesso ministrando uma palestra técnica
Como ter sucesso ministrando uma palestra técnica
Elias Nogueira
 
Quais são os steps de que deve conter na sua pipeline?
Quais são os steps de que deve conter na sua pipeline?Quais são os steps de que deve conter na sua pipeline?
Quais são os steps de que deve conter na sua pipeline?
Elias Nogueira
 
Tem que testar mesmo?
Tem que testar mesmo?Tem que testar mesmo?
Tem que testar mesmo?
Elias Nogueira
 
Coaching the Agile Coach
Coaching the Agile CoachCoaching the Agile Coach
Coaching the Agile Coach
Elias Nogueira
 
Java Test Automation for REST, Web and Mobile
Java Test Automation for REST, Web and MobileJava Test Automation for REST, Web and Mobile
Java Test Automation for REST, Web and Mobile
Elias Nogueira
 
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java ApplicationTrust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
Elias Nogueira
 
O que é um Agile Coach
O que é um Agile CoachO que é um Agile Coach
O que é um Agile Coach
Elias Nogueira
 
Criando uma grid para execução de teste automatizado funcional e e2e
Criando uma grid para execução de teste automatizado funcional e e2eCriando uma grid para execução de teste automatizado funcional e e2e
Criando uma grid para execução de teste automatizado funcional e e2e
Elias Nogueira
 
A importancia de testes em todos os aspectos
A importancia de testes em todos os aspectosA importancia de testes em todos os aspectos
A importancia de testes em todos os aspectos
Elias Nogueira
 
Testes de ponta a ponta
Testes de ponta a pontaTestes de ponta a ponta
Testes de ponta a ponta
Elias Nogueira
 

Mais de Elias Nogueira (20)

API Testing following the Test Pyramid
API Testing following the Test PyramidAPI Testing following the Test Pyramid
API Testing following the Test Pyramid
 
Coach por Imersão - Buscando a excelência técnica com o time
Coach por Imersão - Buscando a excelência técnica com o timeCoach por Imersão - Buscando a excelência técnica com o time
Coach por Imersão - Buscando a excelência técnica com o time
 
O Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnicoO Agile Coach pode (e muitas vezes deve) ser técnico
O Agile Coach pode (e muitas vezes deve) ser técnico
 
Create an architecture for web test automation
Create an architecture for web test automationCreate an architecture for web test automation
Create an architecture for web test automation
 
Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil Como 4 Agile Coaches trabalham em uma Transformação Ágil
Como 4 Agile Coaches trabalham em uma Transformação Ágil
 
Papel do QA na Transformação Ágil
Papel do QA na Transformação ÁgilPapel do QA na Transformação Ágil
Papel do QA na Transformação Ágil
 
BDD não é automação de teste - Scrum Gathering
BDD não é automação de teste - Scrum GatheringBDD não é automação de teste - Scrum Gathering
BDD não é automação de teste - Scrum Gathering
 
Improve Yourself -- Learn the Skills, Join the Community - Tests
Improve Yourself -- Learn the Skills, Join the Community - TestsImprove Yourself -- Learn the Skills, Join the Community - Tests
Improve Yourself -- Learn the Skills, Join the Community - Tests
 
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...
 
BDD não é Automação de Testes
BDD não é Automação de TestesBDD não é Automação de Testes
BDD não é Automação de Testes
 
Como ter sucesso ministrando uma palestra técnica
Como ter sucesso ministrando uma palestra técnicaComo ter sucesso ministrando uma palestra técnica
Como ter sucesso ministrando uma palestra técnica
 
Quais são os steps de que deve conter na sua pipeline?
Quais são os steps de que deve conter na sua pipeline?Quais são os steps de que deve conter na sua pipeline?
Quais são os steps de que deve conter na sua pipeline?
 
Tem que testar mesmo?
Tem que testar mesmo?Tem que testar mesmo?
Tem que testar mesmo?
 
Coaching the Agile Coach
Coaching the Agile CoachCoaching the Agile Coach
Coaching the Agile Coach
 
Java Test Automation for REST, Web and Mobile
Java Test Automation for REST, Web and MobileJava Test Automation for REST, Web and Mobile
Java Test Automation for REST, Web and Mobile
 
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java ApplicationTrust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
 
O que é um Agile Coach
O que é um Agile CoachO que é um Agile Coach
O que é um Agile Coach
 
Criando uma grid para execução de teste automatizado funcional e e2e
Criando uma grid para execução de teste automatizado funcional e e2eCriando uma grid para execução de teste automatizado funcional e e2e
Criando uma grid para execução de teste automatizado funcional e e2e
 
A importancia de testes em todos os aspectos
A importancia de testes em todos os aspectosA importancia de testes em todos os aspectos
A importancia de testes em todos os aspectos
 
Testes de ponta a ponta
Testes de ponta a pontaTestes de ponta a ponta
Testes de ponta a ponta
 

Como criar e executar testes paralelos web usando Selenium e containers

  • 1. COMO CRIAR E EXECUTAR TESTES PARALELOS WEB USANDO SELENIUM E CONTAINERS @eliasnogueira
  • 2. Problemas na execução de testes automatizados para web Compatibilidade dos browsers Tempo de execução dos testes
  • 5. Script de Teste Envia Capacidades NÓ Windows NÓ MacOSX NÓ Linux HUB Entende a capacidade e envia para o nó correto
  • 6. NÓ Windows NÓ MacOSX NÓ Linux
  • 7. Local Utiliza máquinas dentro da nossa infraestrutura, podendo ser uma máquina real ou virtual. Nuvem Utiliza serviços na nuvem para criar e conectar máquinas. Containers Utilizar containers e o suporte a orquestração para a criação de grid sob demanda. Formas de criar uma grid
  • 9. • Depende de infraestrutura física • Dificuldade de escalar • Requer manutenção (atualizações) Problema com o grid local
  • 10. Solução proposta Com o TestNG conseguimos inserir parâmetros da suíte de teste em xml para os scripts de teste, removendo dependência direta de browsers no script. Com Docker podemos utilizar containers como hub e como nós, e utilizar quantos containers forem necessários para as execuções de teste. TestNG
  • 11. 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
  • 12. Suite de Teste HUB 2 testes Google Chrome Execução sem auto-escala Executa os dois testes nos dois nós
  • 13. Suite de Teste HUB 4 testes Google Chrome Esperando 2 slots free.... Execução sem auto-escala
  • 14. Suite de Teste HUB 4 testes Google Chrome Execução sem auto-escala Executa dos testes nos dois nós disponíveis
  • 15. Suite de Teste HUB 4 testes Google Chrome Execução com auto-escala Cria mais dois nós
  • 16. Suite de Teste HUB Execução com auto-escala Ao final da execução, mantém somente os dois nós
  • 17. Exemplo do paralelismo - código @BeforeMethod @Parameters("browser") public void preCondicao(@Optional("chrome") String browser) { driver = getDriver(browser); } <suite name="Build Dev" parallel="tests" thread-count="99"> <test name="Execução Chrome"> <parameter name="browser" value="chrome"/> <classes> <class name="test.ReservarQuartoTest" /> </classes> </test> </suite>
  • 18. Exemplo do paralelismo - código @BeforeMethod @Parameters("browser") public void preCondicao(@Optional("chrome") String browser) { driver = getDriver(browser); } <suite name="Build Dev" parallel="tests" thread-count="99"> <test name="Execução Chrome"> <parameter name="browser" value="chrome"/> <classes> <class name="test.ReservarQuartoTest" /> </classes> </test> </suite> Indicando que o paralelismo é por testes na classe de teste
  • 19. Exemplo do paralelismo - código @BeforeMethod @Parameters("browser") public void preCondicao(@Optional("chrome") String browser) { driver = getDriver(browser); } <suite name="Build Dev" parallel="tests" thread-count="99"> <test name="Execução Chrome"> <parameter name="browser" value="chrome"/> <classes> <class name="test.ReservarQuartoTest" /> </classes> </test> </suite> Verifica associação do parâmetro Insere o valor do parâmetro no teste
  • 20. Exemplo do paralelismo - código @BeforeMethod @Parameters("browser") public void preCondicao(@Optional("chrome") String browser) { driver = getDriver(browser); } <suite name="Build Dev" parallel="methods" thread-count="99"> <test name="Execução Chrome"> <parameter name="browser" value="chrome"/> <classes> <class name="test.ReservarQuartoTest" /> </classes> </test> </suite> Se a execução não for via suíte, executa no Google Chrome
  • 21. 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
  • 22. Ganhos reais min Tempo atual para executar uma suíte de pagamentos com 61 testes em uma grid de 20 nós. min Tempo com abordagem de execução local (sequencial) de 61 testes. Tempo de execução para 15 suítes com 394 testes em grid min
  • 23. 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 defina a sua infraestrutura (nós)
  • 24. Suíte de Testes 90 testes 90 testes 30 min 90 testes 30 min 90 testes 30 min Tempo total: 30 min
  • 25. 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
  • 27. 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