Criando uma grid para execução de teste automatizado funcional e e2e

15
Criando uma grid para execução de teste automatizado funcional e e2e Elias Nogueira QA Engineer | Agile Coach, Sicredi @eliasnogueira http://eliasnogueira.com

Transcript of Criando uma grid para execução de teste automatizado funcional e e2e

Page 1: Criando 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 QA Engineer | Agile Coach, Sicredi

@eliasnogueira

http://eliasnogueira.com

Page 2: 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...

Page 3: Criando uma grid para execução de teste automatizado funcional e e2e

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?

Page 4: Criando uma grid para execução de teste automatizado funcional e e2e

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

Page 5: Criando uma grid para execução de teste automatizado funcional e e2e

Arquitetura base de um grid

Script de Teste

Nó 01 Nó 02

HUB

Page 6: Criando uma grid para execução de teste automatizado funcional e e2e

• 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

Page 7: Criando uma grid para execução de teste automatizado funcional e e2e

• 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

Page 8: Criando uma grid para execução de teste automatizado funcional e e2e

• 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

Page 9: Criando uma grid para execução de teste automatizado funcional e e2e

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

Page 10: Criando uma grid para execução de teste automatizado funcional e e2e

$ 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

Page 11: Criando uma grid para execução de teste automatizado funcional e e2e

$ 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

Page 12: Criando uma grid para execução de teste automatizado funcional e e2e

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

Page 13: Criando uma grid para execução de teste automatizado funcional e e2e

• 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

Page 14: Criando uma grid para execução de teste automatizado funcional e e2e

Hora do truque...

Page 15: Criando uma grid para execução de teste automatizado funcional e e2e

Obrigado

@eliasnogueira

http://eliasnogueira.com

https://slideshare.net/elias.nogueira

https://facebook.com/elias.nogueira.teste

https://github.com/eliasnogueira/appium-parallel-execution