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
Criando uma grid para execução de teste automatizado funcional e e2e
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. • 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. 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. • 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?
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. • 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. • 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. 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
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. • 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