Android Dev Conference 2017 - Automação de Testes na Cloud

Post on 21-Jan-2018

48 views 0 download

Transcript of Android Dev Conference 2017 - Automação de Testes na Cloud

Testes automatizados na cloud

Mauro Tardivo Filho - @maurotfilho

ciandt.com

Agradecimentos

ciandt.com

Mauro Tardivo Filho

- Engenheiro de Computação pela Unicamp

- Android (7 anos), IOS (1 ano) e Web (9 anos)

- Arquiteto de Software na CI&T.

ciandt.com

Quem sou eu?

A CI&T é especialista global em soluções digitais que está conduzindo iniciativas de crescimento e inovação digital para companhias líderes como

Coca-Cola, Netshoes, Motorola e Alelo.

Arquiteto de Software na CI&T

- Código, Provas de Conceito- Revisão de código- Design de projeto- Gestão técnica do projeto e do time

- Check & Adapt- Análise de Riscos- Eficiência dos desenvolvedores (builds, ambientes estáveis, …)- Qualidade dos desenvolvedores e do que eles produzem

O que o Arquiteto de Software na CI&T faz?

ciandt.com

O que o Arquiteto de Software na CI&T faz?

ciandt.com

Perguntas que devemos fazer sempre

- Como garantir que a qualidade está sendo entregue de forma eficiente?

- Como verificar a qualidade do time?

- Como garantir que as alterações realizadas não produzem bugs?

- Como garantir que o refactor não cause side-effects?

Testes

ciandt.com

Pirâmide de testes

ciandt.com

Unitários

Integração

Aceitação

ManuaisT

em

poC

ust

o$$$

$

T

t

Planejamento de testes- O que vai ser testado?- Quando/Com que frequência vai ser testado?- Como/Onde vai ser testado?

Cloud Tests

ciandt.com

Cenários das empresas

ciandt.com

- Fingem que testam

- Testar em toda alteração para não ter surpresas- Inviável para testes manuais

- Testar quando acontece uma mudança grande

- Testar apenas quando vai fazer release- Período que os devs não podem integrar código e

ficam aguardando os testes

Cenários de Testes nas empresas

ciandt.com

Como convencer seu chefe?

ciandt.com

Dev Manual Automatizado

Feature 1 8h 2h 3h

Feature 2 8h 2h 3h

Feature 3 8h 2h 3h

Feature 4 8h 2h 3h

32h 8h 12h

Testes de regressão com features não dependentes

Como convencer seu chefe?

ciandt.com

Dev Manual Automatizado

Feature 1 8h 2h 3h

Feature 2 8h 2h + 2h 3h

Feature 3 8h 2h + 2h + 2h 3h

Feature 4 8h 2h+2h+2h+2h 3h

32h 20h 12h

Testes de regressão com features dependentes

Como convencer seu chefe?

ciandt.com

Dev Manual (1) Manual (3) Automatizado

Feature 1 8h 2h 6h 3h

Feature 2 8h 4h 12h 3h

Feature 3 8h 6h 18h 3h

Feature 4 8h 8h 24h 3h

32h 8h 60h 12h

Testes de regressão com features dependentes em múltiplos devices ou ambientes

- Cenário com múltiplos devices é o mais comum.

- Muitas empresas acabam não realizando todos estes testes em todos os devices quando executa testes manuais.- Economia de tempo e dinheiro- Prejudica a qualidade

Como as empresas agem

ciandt.com

Como as empresas agem

ciandt.com

- Testes automatizados por si só já são uma boa alternativa, já que é possível executar os testes em dispositivos diferentes (mesmo que emulados).

- Emuladores não acabam simulando o cenário real, com diferentes devices ou diferentes condiçÕes

- Se sua aplicação é global, como fazer para verificar bugs ou testar a aplicação em devices exclusivos dos países?

Testes (automatizados) na cloud

ciandt.com

- AWS Device Farm (Amazon)- Xamarin Test Cloud (Microsoft)- Mobile Azure Center (Microsoft)- Firebase Test Lab (Google)- ....

Opções disponíveis

ciandt.com

AWS Device Farm

ciandt.com

- Android e iOS- Diversidade de tipos de testes:

- Calabash (Ruby) - Espresso (Java)- UI Automator (Android)- XC Tests (ObjectiveC, Swift)- Appium (Java, Python, ...)- Fuzzy, Explorer (baseado na UI)- Remote Control

- Integração com Jenkins - aws device farm plugin

AWS Device Farm

ciandt.com

AWS Device Farm

ciandt.com

Como configurar um teste na AWS Device Farm

AWS Device Farm

ciandt.com

AWS Device Farm

ciandt.com

AWS Device Farm

ciandt.com

AWS Device Farm

ciandt.com

AWS Device Farm

ciandt.com

AWS Device Farm + Jenkins CI

AWS Device Farm

ciandt.com

- Plugin para Jenkins- Definir configurações globais

AWS Device Farm

ciandt.com

AWS Device Farm

ciandt.comhttp://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html?icmpid=docs_iam_console

AWS Device Farm

ciandt.comhttp://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html?icmpid=docs_iam_console

AWS Device Farm

ciandt.com

AWS Device Farm

ciandt.com

Calabash + AWS Device Farm

175 testes- 45 testes/hora => 1 ciclo de testes = ~4 horas (1 device) - Plano 0.17USD/min = 10.2 USD/hora- 39.66 USD/ciclo de testes

Se for rodar mais do que ~6 (250/4) ciclos de testes por mês, 250USD é mais vantajoso. Caso contrário, o plano de 0.17USD/min é mais vantajoso.- Rodar 1 ciclo de testes em 1 device a cada 4 horas

equivale a 6 devices testados por dia (180 devices por mês).

ciandt.com

Xamarin Test Cloud

ciandt.com

- Android (Java) e IOS- Tipos de testes:

- Calabash (Ruby)- UI Tests (C#)

- calabash-sandbox (CLI) pode ser incorporado no Jenkins para automatizar testes

Xamarin Test Cloud

ciandt.com

Xamarin Test Cloud

ciandt.com

Visual Studio Mobile Center (preview)

ciandt.com

- Build- Teste- Distribuição- Crashes- Analytics- Push Notification

- Grátis, enquanto está em preview

Visual Studio Mobile Center

ciandt.com

- Objective-C, Swift, Android (Java), Xamarin, React Native- 240 Android e 160 iOS devices reais/virtuais- Tipos de testes:

- Calabash (Ruby)- UI Tests (C#)- Appium- Espresso (Android)- XC Tests (IOS)

- Mobile Center CLI pode ser incorporado no Jenkins para automatizar testes

Visual Studio Mobile Center

ciandt.com

Como configurar um teste no Visual Studio Mobile Center

Visual Studio Mobile Center

ciandt.com

Visual Studio Mobile Center

ciandt.com

Visual Studio Mobile Center

ciandt.com

Visual Studio Mobile Center

ciandt.com

Firebase Test Lab

ciandt.com

Firebase Test Lab

ciandt.com

- Somente Android- Tipos de testes

- Espresso, Robotium, UI Automator (instrumental)- Robo Test: teste exploratório baseado na UI

Firebase Test Lab

ciandt.com

Como configurar um teste no Firebase

Visual Studio Mobile Center

ciandt.com

Firebase Test Lab

ciandt.com

Firebase Test Lab

ciandt.com

Firebase Test Lab

ciandt.com

Firebase + Jenkins CI

Firebase Test Lab

ciandt.com

Firebase Test Lab

- Instalar Google Cloud SDK no ambiente

- gcloud config set project <PROJECT-ID>

- gcloud auth activate-service-account

- gcloud beta test android devices list

ciandt.com

Firebase Test Lab

ciandt.com

gcloud beta test android run \nightly-test-matrix.yml:nexus6-device \--app app/build/outputs/apk/app-debug.apk \--test app/build/outputs/apk/app-debug-androidTest.apk \--project devconf-jenkins

gcloud beta test android run \nightly-test-matrix.yml:motorola-device \--app app/build/outputs/apk/app-debug.apk \--test app/build/outputs/apk/app-debug-androidTest.apk \--project devconf-jenkins

nightly-test-matrix.ymlnexus6-device: type: instrumentation timeout: 10m device-ids: shamu os-version-ids: [19, 23] locales: enmotorola-device: type: instrumentation timeout: 10m device-ids: osprey_umts os-version-ids: 22 locales: en

AWS Device Farm VS Mobile Center Firebase Test Lab

Plano básico 0.17USD/min Grátis* Grátis

Plano médio/avançado 250USD/mês Grátis* 5USD/device/h

Número de devices 397205 Android192 IOS

400240 Android160 IOS

30 Android

CI CLI / Plugin Jenkins CLI CLI

Plataformas Android/IOS Android/IOS Android

Frameworks CalabashEspressoUI AutomatorXCTestsAppiumFuzzyExplorer

CalabashEspressoXCTestsAppiumUI Tests

EspressoRobotiumUI AutomatorRobo

Cloud Tests

ciandt.com

Resumindo

ciandt.com

Concluindo

ciandt.com

Cloud Tests

- Negocie para o projeto ter testes automatizados- Crie planos de testes:

- Selecionar os principais cenários para serem executados em toda build em um dispositivo homologado

- Rodar testes completos antes de uma release em vários dispositivos.

- Modularizar os testes para não rodar todos de uma vez.

- Automatize a execução dos testes (na cloud)

ciandt.com

Obrigado!

ciandt.com

Dúvidas?

@maurotfilhomaurotf@ciandt.com

ciandt.com