SlideShare uma empresa Scribd logo
Criando uma grid (device farm)
para execução de teste paralelo
com Appium
Elias Nogueira QA Engineer | Agile Coach, Sicredi
@eliasnogueira
http://eliasnogueira.com
Desafios
HTML/Browser Híbrido Nativo
Foco correto para cada tipo de app
Fragmentação das plataformas - Android
Desafios
Versão Codename API Distribuição
2.3.3 – 2.3.7 Gingerbread 10 0.6%
4.0.3 – 4.0.4 Ice cream Sanduich 15 0.6%
4.1.x
Jelly Bean
16
4.2.x 17
4.3 18
4.4 KitKat 19
5.0
Lollipop
21
5.1 22
6.0 Marshmallow 23
7.0
Nougat
24
7.1 25
https://developer.android.com/about/dashboards/index.html
Gingerbread
0%
Ice Cream
1% Jelly Bean
7%
KitKat
15%
Lollipop
29%
Marshmallow
32%
Nougat
16%
Fragmentação das plataformas - iOS
Desafios
https://developer.apple.com/support/appstore
Anteriores
2%
iOS 9
9%
iOS 10
89%
Fragmentação de Dispositivos
• 16 iOS
• 24,093 Android
Desafios
http://iossupportmatrix.com/ https://opensignal.com/reports/2015/08/android-fragmentation/
Tamanho de Tela
Desafios
http://iossupportmatrix.com/ https://opensignal.com/reports/2015/08/android-fragmentation/
Foco de execução
• Cloud vs Device vs Emulador
Desafios
vs vs
Diversas frentes para testar
https://www.ministryoftesting.com/2012/06/getting-started-with-mobile-testing-a-mindmap/
Definir o trabalho em conjunto com um processo
http://www.softwaretestingclass.com/introduction-to-mobile-application-testing/
Criando uma grid para
execução de teste
automatizado funcional e e2e
• Execução automatizada de teste é feita ”um a um”
• Não há uma rápida resposta à cobertura de restrições
• Fabricante
• Tamanho de tela
• Versão de plataforma
O problema...
Grid
Grid é uma forma de conectar todos os seus dispositivos em um
único controlador (hub).
Cada dispositivo deve ser gerenciado pelo seu serial/udid
Execução na grid
No script de teste devemos informar para qual dispositivo
(serial/udid) queremos executar o teste
Execução paralela
Uma execução paralela é aquela onde os testes selecionados são
executados em mais de um dispositivo na grid ao mesmo tempo
Como funciona um grid?
• A máquina que gerencia as execuções é chamada de hub
• As máquinas (dispositivos) que receberão o teste são
chamadas de nó
• Os nós devem se registrar no hub com uma série de
informações
Como funciona um grid?
Arquitetura base de um grid
Script de Teste
Nó 01 Nó 02
HUB
• Validação de suporte a outros idiomas
• Validação em diferentes versões de plataforma
• Validação em diferentes resoluções
• Validações em diferentes fabricantes
• Minimizar o tempo de execução de teste
Benefícios do Teste em Paralelo
• Selenium Server [1]
• Instalação do Appium via npm [2]
• Dispositivos emulados ou reais
• Script de Teste com:
• Suporte a execução paralela (TestNG)
• Arquitetura de teste que suporte a execução paralela
• Criação do driver (execução no dispositivo sob demanda)
O que eu preciso?
[1] http://www.seleniumhq.org/download/#mainContent
[2] https://www.npmjs.com/package/appium
• Iniciar Selenium Grid como role hub
• Iniciar os nós (dispositivos)
• Apontando para a URL e porta da GRID
• Com portas do Appium (-p) e Bootstrap (-bp) diferentes dos demais
• Informando o udid do dispositivo
Passos para iniciar a Grid
Arquitetura base de um grid
Script de Teste
TestNG
Selenium GRID
http://192.168.1.31:4444
Nó 01
http://192.168.1.34:4723
Nó 02
http://192.168.1.35:4724
registra na grid ->
<- executa teste
arquivo .json arquivo .json
registra na grid ->
<- executa teste
Informar alvos (nomes dispositivos)
para execução
$ java -jar selenium-server-standalone-3.9.1.jar -role hub -hubConfig grid.json
Iniciando a grid
{
"port": 4444,
"newSessionWaitTimeout": -1,
"servlets" : [],
"withoutServlets": [],
"custom": {},
"capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
"throwOnCapabilityNotPresent": true,
"cleanUpCycle": 2000,
"role": "hub",
"debug": false,
"browserTimeout": 0,
"timeout": 1800
}
grid.json
$ java -jar selenium-server-standalone-3.9.1.jar -role hub -hubConfig grid.json
Iniciando a grid
{
"port": 4444,
"newSessionWaitTimeout": -1,
"servlets" : [],
"withoutServlets": [],
"custom": {},
// demais configurações ignoradas
grid.json
$ appium --nodeconfig json/android-6.json -p 4723 -bp 5523 -U emulator-5554
Iniciando um nó
{
"capabilities":
[
{
"browserName":"Android Marshmallow",
"version":"6.0",
"platform":"ANDROID",
"maxInstances": 1
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":20000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url": "http://127.0.0.1:4723/wd/hub",
"host": "127.0.0.1",
"port": 4723,
"maxSession": 1,
"register": true,
"registerCycle": 1000,
"hubPort": 4444,
"hubHost": "192.168.0.102",
"session-override": true
}
}
android-6.json
$ appium --nodeconfig json/android-6.json -p 4723 -bp 5523 -U emulator-5554
Iniciando um nó
{
"capabilities":
[
{
"browserName":"Android Marshmallow",
"version":"6.0",
"platform":"ANDROID",
"maxInstances": 1
}
],
android-6.json
$ appium --nodeconfig json/android-6.json -p 4723 -bp 5523 -U emulator-5554
Iniciando um nó
{
"configuration":
{
"cleanUpCycle":2000,
"timeout":20000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url": "http://127.0.0.1:4723/wd/hub",
"host": "127.0.0.1",
"port": 4723,
android-6.json
$ appium --nodeconfig json/android-6.json -p 4723 -bp 5523 -U emulator-5554
Iniciando um nó
"host": "127.0.0.1",
"port": 4723,
"maxSession": 1,
"register": true,
"registerCycle": 1000,
"hubPort": 4444,
"hubHost": "192.168.0.102",
"session-override": true
}
}
android-6.json
Script de Teste + Suíte paralela
private AppiumDriver<?> driver;
@Test
@Parameters( { "platform", "udid", "platformVersion"})
public void testCalculateDefaultTip(String platform, String udid,
String platformVersion) throws Exception {
<test name="Android-AVD">
<parameter name="platform" value="android"/>
<parameter name="udid" value="emulator-5554"/>
<parameter name="platformVersion" value="7.0"/>
<classes>
<class name="com.eliasnogueira.unique_script.TipTest"/>
</classes>
</test>
Script de Teste + Suíte paralela
private AppiumDriver<?> driver;
@Test
@Parameters( { "platform", "udid", "platformVersion"})
public void testCalculateDefaultTip(String platform, String udid,
String platformVersion) throws Exception {
<test name="Android-AVD">
<parameter name="platform" value="android"/>
<parameter name="udid" value="emulator-5554"/>
<parameter name="platformVersion" value="7.0"/>
<classes>
<class name="com.eliasnogueira.unique_script.TipTest"/>
</classes>
</test>
• Use sempre uma máquina Linux
• Boa prática reiniciar o ADB em uma execução paralela
• Para device reais, use um hub USB energizado
• [Appium] Use o selenium-server < 3.8
• O Appium ainda não está suportando totalmente o protocolo no W3C
• Exception apresentada: CapabilityNotPresentOnTheGridException
Minhas recomendações
Hora do truque...
Obrigado
@eliasnogueira
http://eliasnogueira.com
https://slideshare.net/elias.nogueira
https://facebook.com/elias.nogueira.teste
https://github.com/eliasnogueira/appium-parallel-execution

Mais conteúdo relacionado

Mais procurados

Automação e virtualização de serviços
Automação e virtualização de serviçosAutomação e virtualização de serviços
Automação e virtualização de serviços
Elias Nogueira
 
Introduction to AWS Device Farm
Introduction to AWS Device FarmIntroduction to AWS Device Farm
Introduction to AWS Device Farm
Amazon Web Services
 
Behavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberBehavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using Cucumber
KMS Technology
 
Test automation of ap is using postman
Test automation of ap is using postmanTest automation of ap is using postman
Test automation of ap is using postman
BugRaptors
 
Karate - powerful and simple framework for REST API automation testing
Karate - powerful and simple framework for REST API automation testingKarate - powerful and simple framework for REST API automation testing
Karate - powerful and simple framework for REST API automation testing
Roman Liubun
 
Cypress - Best Practices
Cypress - Best PracticesCypress - Best Practices
Cypress - Best Practices
Brian Mann
 
Appium: Automation for Mobile Apps
Appium: Automation for Mobile AppsAppium: Automation for Mobile Apps
Appium: Automation for Mobile Apps
Sauce Labs
 
Karate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter ThomasKarate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter Thomas
intuit_india
 
API Testing
API TestingAPI Testing
API Testing
Bikash Sharma
 
UiPath Test Automation Webinar Recap
UiPath Test Automation Webinar RecapUiPath Test Automation Webinar Recap
UiPath Test Automation Webinar Recap
Auxis Consulting & Outsourcing
 
Cypress e2e automation testing - day1 intor by: Hassan Hameed
Cypress e2e automation testing -  day1 intor by: Hassan HameedCypress e2e automation testing -  day1 intor by: Hassan Hameed
Cypress e2e automation testing - day1 intor by: Hassan Hameed
Hassan Muhammad
 
Testing fundamentals
Testing fundamentalsTesting fundamentals
Testing fundamentals
Raviteja Chowdary Adusumalli
 
Mobile Application Testing Training Presentation
Mobile Application Testing Training PresentationMobile Application Testing Training Presentation
Mobile Application Testing Training Presentation
MobiGnosis
 
Testing Applications with AWS Device Farm
Testing Applications with AWS Device FarmTesting Applications with AWS Device Farm
Testing Applications with AWS Device Farm
Amazon Web Services
 
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesTOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
Samanta Cicilia
 
Mobile Application Testing
Mobile Application TestingMobile Application Testing
Mobile Application Testing
Noor Orfahly
 
Application Architecture: The Next Wave | MuleSoft
Application Architecture: The Next Wave | MuleSoftApplication Architecture: The Next Wave | MuleSoft
Application Architecture: The Next Wave | MuleSoft
MuleSoft
 
Testing With OutSystems
Testing With OutSystemsTesting With OutSystems
Testing With OutSystems
OutSystems
 
Mobile App Testing Strategy by RapidValue Solutions
Mobile App Testing Strategy by RapidValue SolutionsMobile App Testing Strategy by RapidValue Solutions
Mobile App Testing Strategy by RapidValue Solutions
RapidValue
 
Android & iOS Automation Using Appium
Android & iOS Automation Using AppiumAndroid & iOS Automation Using Appium
Android & iOS Automation Using Appium
Mindfire Solutions
 

Mais procurados (20)

Automação e virtualização de serviços
Automação e virtualização de serviçosAutomação e virtualização de serviços
Automação e virtualização de serviços
 
Introduction to AWS Device Farm
Introduction to AWS Device FarmIntroduction to AWS Device Farm
Introduction to AWS Device Farm
 
Behavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberBehavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using Cucumber
 
Test automation of ap is using postman
Test automation of ap is using postmanTest automation of ap is using postman
Test automation of ap is using postman
 
Karate - powerful and simple framework for REST API automation testing
Karate - powerful and simple framework for REST API automation testingKarate - powerful and simple framework for REST API automation testing
Karate - powerful and simple framework for REST API automation testing
 
Cypress - Best Practices
Cypress - Best PracticesCypress - Best Practices
Cypress - Best Practices
 
Appium: Automation for Mobile Apps
Appium: Automation for Mobile AppsAppium: Automation for Mobile Apps
Appium: Automation for Mobile Apps
 
Karate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter ThomasKarate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter Thomas
 
API Testing
API TestingAPI Testing
API Testing
 
UiPath Test Automation Webinar Recap
UiPath Test Automation Webinar RecapUiPath Test Automation Webinar Recap
UiPath Test Automation Webinar Recap
 
Cypress e2e automation testing - day1 intor by: Hassan Hameed
Cypress e2e automation testing -  day1 intor by: Hassan HameedCypress e2e automation testing -  day1 intor by: Hassan Hameed
Cypress e2e automation testing - day1 intor by: Hassan Hameed
 
Testing fundamentals
Testing fundamentalsTesting fundamentals
Testing fundamentals
 
Mobile Application Testing Training Presentation
Mobile Application Testing Training PresentationMobile Application Testing Training Presentation
Mobile Application Testing Training Presentation
 
Testing Applications with AWS Device Farm
Testing Applications with AWS Device FarmTesting Applications with AWS Device Farm
Testing Applications with AWS Device Farm
 
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesTOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
 
Mobile Application Testing
Mobile Application TestingMobile Application Testing
Mobile Application Testing
 
Application Architecture: The Next Wave | MuleSoft
Application Architecture: The Next Wave | MuleSoftApplication Architecture: The Next Wave | MuleSoft
Application Architecture: The Next Wave | MuleSoft
 
Testing With OutSystems
Testing With OutSystemsTesting With OutSystems
Testing With OutSystems
 
Mobile App Testing Strategy by RapidValue Solutions
Mobile App Testing Strategy by RapidValue SolutionsMobile App Testing Strategy by RapidValue Solutions
Mobile App Testing Strategy by RapidValue Solutions
 
Android & iOS Automation Using Appium
Android & iOS Automation Using AppiumAndroid & iOS Automation Using Appium
Android & iOS Automation Using Appium
 

Semelhante a Criando uma grid para execução de testes paralelo com Appium

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
 
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
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!
Fabio Vieira Mello
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
tdc-globalcode
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android Embarcado
Odair Sousa
 
Python 08
Python 08Python 08
Python 08
Bruno Catão
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
Thiago Soares
 
Testando a integração com APIs - RSonRails/11
Testando a integração com APIs - RSonRails/11Testando a integração com APIs - RSonRails/11
Testando a integração com APIs - RSonRails/11
Rafael Souza
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
Giovanni Bassi
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Amazon Web Services LATAM
 
Implementando uma Device Farm Android
Implementando uma Device Farm AndroidImplementando uma Device Farm Android
Implementando uma Device Farm Android
Thialison Souza
 
Html5
Html5Html5
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniter
Eric Silva
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha Básica
Sensedia
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
Rafael Benevides
 
2016/08/19 - Uma visão geral da AWS para desenvolvedores
2016/08/19 - Uma visão geral da AWS para desenvolvedores2016/08/19 - Uma visão geral da AWS para desenvolvedores
2016/08/19 - Uma visão geral da AWS para desenvolvedores
Jardel Weyrich
 
Workshop - Ionic + firebase
Workshop - Ionic + firebaseWorkshop - Ionic + firebase
Workshop - Ionic + firebase
Stefan Horochovec
 
Aula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gapAula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gap
Roberson Alves
 
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
GUTS-RS
 

Semelhante a Criando uma grid para execução de testes paralelo com Appium (20)

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
 
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
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 
Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
Treinamento Android Embarcado
Treinamento Android EmbarcadoTreinamento Android Embarcado
Treinamento Android Embarcado
 
Python 08
Python 08Python 08
Python 08
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
 
Testando a integração com APIs - RSonRails/11
Testando a integração com APIs - RSonRails/11Testando a integração com APIs - RSonRails/11
Testando a integração com APIs - RSonRails/11
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
 
Implementando uma Device Farm Android
Implementando uma Device Farm AndroidImplementando uma Device Farm Android
Implementando uma Device Farm Android
 
Html5
Html5Html5
Html5
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniter
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha Básica
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
 
2016/08/19 - Uma visão geral da AWS para desenvolvedores
2016/08/19 - Uma visão geral da AWS para desenvolvedores2016/08/19 - Uma visão geral da AWS para desenvolvedores
2016/08/19 - Uma visão geral da AWS para desenvolvedores
 
Workshop - Ionic + firebase
Workshop - Ionic + firebaseWorkshop - Ionic + firebase
Workshop - Ionic + firebase
 
Aula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gapAula Aula03 estrutura phone_gap
Aula Aula03 estrutura phone_gap
 
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
 

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
 
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
 
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
 
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?
 
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
 
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
 
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
 

Criando uma grid para execução de testes paralelo com Appium

  • 1. Criando uma grid (device farm) para execução de teste paralelo com Appium Elias Nogueira QA Engineer | Agile Coach, Sicredi @eliasnogueira http://eliasnogueira.com
  • 2. Desafios HTML/Browser Híbrido Nativo Foco correto para cada tipo de app
  • 3. Fragmentação das plataformas - Android Desafios Versão Codename API Distribuição 2.3.3 – 2.3.7 Gingerbread 10 0.6% 4.0.3 – 4.0.4 Ice cream Sanduich 15 0.6% 4.1.x Jelly Bean 16 4.2.x 17 4.3 18 4.4 KitKat 19 5.0 Lollipop 21 5.1 22 6.0 Marshmallow 23 7.0 Nougat 24 7.1 25 https://developer.android.com/about/dashboards/index.html Gingerbread 0% Ice Cream 1% Jelly Bean 7% KitKat 15% Lollipop 29% Marshmallow 32% Nougat 16%
  • 4. Fragmentação das plataformas - iOS Desafios https://developer.apple.com/support/appstore Anteriores 2% iOS 9 9% iOS 10 89%
  • 5. Fragmentação de Dispositivos • 16 iOS • 24,093 Android Desafios http://iossupportmatrix.com/ https://opensignal.com/reports/2015/08/android-fragmentation/
  • 6. Tamanho de Tela Desafios http://iossupportmatrix.com/ https://opensignal.com/reports/2015/08/android-fragmentation/
  • 7. Foco de execução • Cloud vs Device vs Emulador Desafios vs vs
  • 8. Diversas frentes para testar https://www.ministryoftesting.com/2012/06/getting-started-with-mobile-testing-a-mindmap/
  • 9. Definir o trabalho em conjunto com um processo http://www.softwaretestingclass.com/introduction-to-mobile-application-testing/
  • 10. Criando uma grid para execução de teste automatizado funcional e e2e
  • 11. • Execução automatizada de teste é feita ”um a um” • Não há uma rápida resposta à cobertura de restrições • Fabricante • Tamanho de tela • Versão de plataforma O problema...
  • 12. Grid Grid é uma forma de conectar todos os seus dispositivos em um único controlador (hub). Cada dispositivo deve ser gerenciado pelo seu serial/udid Execução na grid No script de teste devemos informar para qual dispositivo (serial/udid) queremos executar o teste Execução paralela Uma execução paralela é aquela onde os testes selecionados são executados em mais de um dispositivo na grid ao mesmo tempo Como funciona um grid?
  • 13. • A máquina que gerencia as execuções é chamada de hub • As máquinas (dispositivos) que receberão o teste são chamadas de nó • Os nós devem se registrar no hub com uma série de informações Como funciona um grid?
  • 14. Arquitetura base de um grid Script de Teste Nó 01 Nó 02 HUB
  • 15. • Validação de suporte a outros idiomas • Validação em diferentes versões de plataforma • Validação em diferentes resoluções • Validações em diferentes fabricantes • Minimizar o tempo de execução de teste Benefícios do Teste em Paralelo
  • 16. • Selenium Server [1] • Instalação do Appium via npm [2] • Dispositivos emulados ou reais • Script de Teste com: • Suporte a execução paralela (TestNG) • Arquitetura de teste que suporte a execução paralela • Criação do driver (execução no dispositivo sob demanda) O que eu preciso? [1] http://www.seleniumhq.org/download/#mainContent [2] https://www.npmjs.com/package/appium
  • 17. • Iniciar Selenium Grid como role hub • Iniciar os nós (dispositivos) • Apontando para a URL e porta da GRID • Com portas do Appium (-p) e Bootstrap (-bp) diferentes dos demais • Informando o udid do dispositivo Passos para iniciar a Grid
  • 18. Arquitetura base de um grid Script de Teste TestNG Selenium GRID http://192.168.1.31:4444 Nó 01 http://192.168.1.34:4723 Nó 02 http://192.168.1.35:4724 registra na grid -> <- executa teste arquivo .json arquivo .json registra na grid -> <- executa teste Informar alvos (nomes dispositivos) para execução
  • 19. $ java -jar selenium-server-standalone-3.9.1.jar -role hub -hubConfig grid.json Iniciando a grid { "port": 4444, "newSessionWaitTimeout": -1, "servlets" : [], "withoutServlets": [], "custom": {}, "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher", "throwOnCapabilityNotPresent": true, "cleanUpCycle": 2000, "role": "hub", "debug": false, "browserTimeout": 0, "timeout": 1800 } grid.json
  • 20. $ java -jar selenium-server-standalone-3.9.1.jar -role hub -hubConfig grid.json Iniciando a grid { "port": 4444, "newSessionWaitTimeout": -1, "servlets" : [], "withoutServlets": [], "custom": {}, // demais configurações ignoradas grid.json
  • 21. $ appium --nodeconfig json/android-6.json -p 4723 -bp 5523 -U emulator-5554 Iniciando um nó { "capabilities": [ { "browserName":"Android Marshmallow", "version":"6.0", "platform":"ANDROID", "maxInstances": 1 } ], "configuration": { "cleanUpCycle":2000, "timeout":20000, "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", "url": "http://127.0.0.1:4723/wd/hub", "host": "127.0.0.1", "port": 4723, "maxSession": 1, "register": true, "registerCycle": 1000, "hubPort": 4444, "hubHost": "192.168.0.102", "session-override": true } } android-6.json
  • 22. $ appium --nodeconfig json/android-6.json -p 4723 -bp 5523 -U emulator-5554 Iniciando um nó { "capabilities": [ { "browserName":"Android Marshmallow", "version":"6.0", "platform":"ANDROID", "maxInstances": 1 } ], android-6.json
  • 23. $ appium --nodeconfig json/android-6.json -p 4723 -bp 5523 -U emulator-5554 Iniciando um nó { "configuration": { "cleanUpCycle":2000, "timeout":20000, "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", "url": "http://127.0.0.1:4723/wd/hub", "host": "127.0.0.1", "port": 4723, android-6.json
  • 24. $ appium --nodeconfig json/android-6.json -p 4723 -bp 5523 -U emulator-5554 Iniciando um nó "host": "127.0.0.1", "port": 4723, "maxSession": 1, "register": true, "registerCycle": 1000, "hubPort": 4444, "hubHost": "192.168.0.102", "session-override": true } } android-6.json
  • 25. Script de Teste + Suíte paralela private AppiumDriver<?> driver; @Test @Parameters( { "platform", "udid", "platformVersion"}) public void testCalculateDefaultTip(String platform, String udid, String platformVersion) throws Exception { <test name="Android-AVD"> <parameter name="platform" value="android"/> <parameter name="udid" value="emulator-5554"/> <parameter name="platformVersion" value="7.0"/> <classes> <class name="com.eliasnogueira.unique_script.TipTest"/> </classes> </test>
  • 26. Script de Teste + Suíte paralela private AppiumDriver<?> driver; @Test @Parameters( { "platform", "udid", "platformVersion"}) public void testCalculateDefaultTip(String platform, String udid, String platformVersion) throws Exception { <test name="Android-AVD"> <parameter name="platform" value="android"/> <parameter name="udid" value="emulator-5554"/> <parameter name="platformVersion" value="7.0"/> <classes> <class name="com.eliasnogueira.unique_script.TipTest"/> </classes> </test>
  • 27. • Use sempre uma máquina Linux • Boa prática reiniciar o ADB em uma execução paralela • Para device reais, use um hub USB energizado • [Appium] Use o selenium-server < 3.8 • O Appium ainda não está suportando totalmente o protocolo no W3C • Exception apresentada: CapabilityNotPresentOnTheGridException Minhas recomendações