android dev conference 2017 - automação de testes na cloud

59
Testes automatizados na cloud Mauro Tardivo Filho - @maurotfilho ciandt.com

Upload: imasters

Post on 21-Jan-2018

48 views

Category:

Technology


0 download

TRANSCRIPT

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

Testes automatizados na cloud

Mauro Tardivo Filho - @maurotfilho

ciandt.com

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

Agradecimentos

ciandt.com

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

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?

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

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.

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

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

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

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?

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

Testes

ciandt.com

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

Pirâmide de testes

ciandt.com

Unitários

Integração

Aceitação

ManuaisT

em

poC

ust

o$$$

$

T

t

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

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

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

Cenários das empresas

ciandt.com

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

- 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

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

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

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

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

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

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

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

- 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

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

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?

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

Testes (automatizados) na cloud

ciandt.com

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

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

Opções disponíveis

ciandt.com

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

AWS Device Farm

ciandt.com

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

- 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

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

AWS Device Farm

ciandt.com

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

Como configurar um teste na AWS Device Farm

AWS Device Farm

ciandt.com

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

AWS Device Farm

ciandt.com

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

AWS Device Farm

ciandt.com

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

AWS Device Farm

ciandt.com

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

AWS Device Farm

ciandt.com

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

AWS Device Farm + Jenkins CI

AWS Device Farm

ciandt.com

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

- Plugin para Jenkins- Definir configurações globais

AWS Device Farm

ciandt.com

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

AWS Device Farm

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

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

AWS Device Farm

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

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

AWS Device Farm

ciandt.com

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

AWS Device Farm

ciandt.com

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

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

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

Xamarin Test Cloud

ciandt.com

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

- 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

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

Xamarin Test Cloud

ciandt.com

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

Visual Studio Mobile Center (preview)

ciandt.com

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

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

- Grátis, enquanto está em preview

Visual Studio Mobile Center

ciandt.com

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

- 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

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

Como configurar um teste no Visual Studio Mobile Center

Visual Studio Mobile Center

ciandt.com

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

Visual Studio Mobile Center

ciandt.com

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

Visual Studio Mobile Center

ciandt.com

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

Visual Studio Mobile Center

ciandt.com

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

Firebase Test Lab

ciandt.com

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

Firebase Test Lab

ciandt.com

- Somente Android- Tipos de testes

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

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

Firebase Test Lab

ciandt.com

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

Como configurar um teste no Firebase

Visual Studio Mobile Center

ciandt.com

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

Firebase Test Lab

ciandt.com

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

Firebase Test Lab

ciandt.com

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

Firebase Test Lab

ciandt.com

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

Firebase + Jenkins CI

Firebase Test Lab

ciandt.com

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

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

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

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

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

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

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

Resumindo

ciandt.com

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

Concluindo

ciandt.com

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

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

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

Obrigado!

ciandt.com

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

Dúvidas?

@[email protected]

ciandt.com