criando uma grid para execução de teste automatizado funcional e e2e
TRANSCRIPT
Criando uma grid para execução de teste
automatizado funcional e e2e
Elias Nogueira QA Engineer | Agile Coach, Sicredi
@eliasnogueira
http://eliasnogueira.com
• 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...
GridGrid é 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 gridNo script de teste devemos informar para qual dispositivo (serial/udid) queremos executar o teste
Execução paralelaUma 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
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 GRIDhttp://192.168.1.31:4444
Nó 01http://192.168.1.34:4723
Nó 02http://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.5.2.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
$ 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
Script de Teste + Suíte paralela
Script de Testeprivate AppiumDriver<?> driver;
@Test@Parameters( { "platform", "udid", "platformVersion"})public void testCalculateDefaultTip(String platform, String udid, String platformVersion) throws Exception {
driver = Utils.returnDriver(platform, udid, platformVersion);
MainScreenPageObject mainScreen = new MainScreenPageObject(driver);
mainScreen.fillBillAmount("100");mainScreen.clickCalculateTip();
<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>
Executor Gird
• Use sempre uma máquina Linux
• Boa prática reiniciar o ADB em uma execução paralela
• Para devices reais, use um hub USB energizado
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