Testes A/B - Experimentando conteúdo e otimizando conversões - Intercon 2012 -
Intercon Android - Integração e entrega contínua para Android
-
Upload
concrete-solutions -
Category
Technology
-
view
206 -
download
7
description
Transcript of Intercon Android - Integração e entrega contínua para Android
Desenvolvemos produtos digitais
Continuous Mobile: Entrega e Integração Contínuas em Android
Integração Contínua (IC)?
Temas
Deployment Continuo(DC)?
Topologia IC/DC Mobile
Desafios Mobile
QA & comentários
Um projeto qualquer...
O problema...
Como detectar o problema antes? Automatização!
Git Server
CI Server
CI faz um polling do git
Emulador 1 Emulador n
...Relatórios
Mobiledev - CD Server(Concrete Solutions)
Benefícios IC/DC
● Aumento da inspeção e consequente aumento da transparência● Garantia de execução de testes a cada commit (polling do SIC)● Dar mais confiança para o time em atualizações de versões● Repetibilidade da verificação de erros reais● One click Deploy (até produção se quiser!)● Scare Friday ? Deploys de sexta-feira
Automatização = !ADT && !Studio
Build automatizado - Android
Provavelmente será depreciado logo…
Opção para quem já está acostumado com Java e Eclipse. Comunidade altamente ativa!
Muito bom se você não usa o Eclipse, maaaas ainda não está completo…
● Famoso no Java Backend● Suporte a AAR está em beta (para o Eclipse não é
possível por enquanto)● Suporte ruim a bibliotecas fechadas (bem melhor no
4.x-rc1● Zilhões de plugins (Checkstyle, PMD, JaCoCo, Emma,
Sonar, etc)
● Sistema que o Google escolheu● Estrutura do pojeto mais simples (BuildVariants +
Project Flavors)● Maiores facilidades (ManifestMerger, controle da
versão e etc)● Ainda está em beta!
● Matriz de problemas: vértice A (versões do Android) x vértice B (densidades de telas) x vértice C (hardware? 3g?) x ...
● http://square.github.io/spoon/ execução do projeto em todos os devices que o adb encontrar
● Jenkins Matrix Parameter Job● Android Maven Plugin RC | Gradle
Emuladores - Android
Android Jenkins Plugin
● Emuladores por meio do plugin Android Emulator Plugin
Android Jenkins Plugin
Android Jenkins Plugin | Problemas?
● Startup de emuladores● Imprevisível em ambientes virtualizados (AWS)● Como fazer com devices físicos?
● Master: na núvem (o mesmo para iOS, Android e etc)
● Slaves: máquinas físicas Podem ter vários devices
conectados Podem ter os emuladores já
inicializados Podem ser otimizados (placa
gráfica, usar KVM, etc)
Jenkins - Master -> Slave
Jenkins - Master -> Slave
● Pode-se publicar relatórios da branch remota
● Para os builds de Maven com o plugin 3.9.0-rcX e Gradle recentes, executar em tudo que estiver disponível para o ADB
Jenkins - Master -> Slave | Problemas?
● Se puder, faça o setup com um DevOps!● Conheça os comandos mais avançados do ADB (port
forwarding para devices sem cabos USBs, AAPT para descobrir a versão do manifest, etc)
● Pré & Post build actions com scripts (por exemplo para guardar os logcats de cada device na workspace do seu job)
Jenkins - Branching & Fluxo de jobs
● Não tem um único modelo correto● Faça como achar melhor, apenas
não complique muito. Exemplo: desenvolvimento na branch MASTER, e todos os releases na branch RELEASE com versões TAGGEADAS
● Testes Unitários: faça-os serem unitários mesmo! (faça um mock da API, por exemplo…)
● Testes Integrados: use ferramentas como Calabash ou Selendroid
Testes
Testes - Problemas?
● Desliguem as animações dos targets!● Use um outro InstrumentationRunner (ver
documentação do Espresso)● Procure a implementação das bibliotecas que usa
para mockar. Exemplo: retrofit -> retrofit-mock
Soluções Deployment Continuo
● Solução Interna MobRelease● Appaloosa (https://www.appaloosa-store.com/)● Appblade (https://appblade.com/)● Google Play Native App Beta Testing Alternativas
blog.concretesolutions.com.br@ConcreteS
facebook.com/ConcreteS