Successfully reported this slideshow.

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

3

Share

Upcoming SlideShare
Testes de ponta a ponta
Testes de ponta a ponta
Loading in …3
×
1 of 15
1 of 15

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

3

Share

Download to read offline

Description

Keynote ministrado no Google Developer Group Campinas no evento Quality Fest em 16/09/2017 falando sobre a como criar um grid de dispositivos com o Appium e executar os testes de forma paralela

Transcript

  1. 1. Criando uma grid para execução de teste automatizado funcional e e2e Elias Nogueira QA Engineer | Agile Coach, Sicredi @eliasnogueira http://eliasnogueira.com
  2. 2. • 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...
  3. 3. 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?
  4. 4. • 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?
  5. 5. Arquitetura base de um grid Script de Teste Nó 01 Nó 02 HUB
  6. 6. • 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
  7. 7. • 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
  8. 8. • 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
  9. 9. 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
  10. 10. $ 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
  11. 11. $ 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
  12. 12. Script de Teste + Suíte paralela Script de Teste private 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
  13. 13. • 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
  14. 14. Hora do truque...
  15. 15. Obrigado @eliasnogueira http://eliasnogueira.com https://slideshare.net/elias.nogueira https://facebook.com/elias.nogueira.teste https://github.com/eliasnogueira/appium-parallel-execution

Description

Keynote ministrado no Google Developer Group Campinas no evento Quality Fest em 16/09/2017 falando sobre a como criar um grid de dispositivos com o Appium e executar os testes de forma paralela

Transcript

  1. 1. Criando uma grid para execução de teste automatizado funcional e e2e Elias Nogueira QA Engineer | Agile Coach, Sicredi @eliasnogueira http://eliasnogueira.com
  2. 2. • 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...
  3. 3. 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?
  4. 4. • 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?
  5. 5. Arquitetura base de um grid Script de Teste Nó 01 Nó 02 HUB
  6. 6. • 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
  7. 7. • 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
  8. 8. • 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
  9. 9. 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
  10. 10. $ 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
  11. 11. $ 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
  12. 12. Script de Teste + Suíte paralela Script de Teste private 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
  13. 13. • 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
  14. 14. Hora do truque...
  15. 15. Obrigado @eliasnogueira http://eliasnogueira.com https://slideshare.net/elias.nogueira https://facebook.com/elias.nogueira.teste https://github.com/eliasnogueira/appium-parallel-execution

More Related Content

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

×