Android Dev Conference 2017 - Automação de Testes na Cloud
-
Upload
imasters -
Category
Technology
-
view
48 -
download
0
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