SlideShare uma empresa Scribd logo
Android Apps Continuous Integration
Eduardo Carrara
@DuCarrara
Android Developer @ TradeForce
Desafios e Soluções
“Once you stop learning you start dying”
- Albert Einstein
Continuous Integration (CI)
"Sempre que um membro do time fizer um
commit, toda a aplicação deve ser
construída e testada por um conjunto de
testes automatizados; se a build ou testes
falharem o time deve parar e resolver o
problema imediatamente."
Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation
Benefícios
Redução de riscos pré-release
Aumento na velocidade e qualidade das entregas
Detecção e correção prematura de bugs
Feedback rápidos aos desenvolvedores time
Antes de Começar...
Tenha um sistema para controle do versionamento
Automatize seu processo de build
Práticas de CI: Desenvolvimento
Faça check in regularmente (diariamente no mínimo)
Sempre esteja pronto para reverter suas alterações
Faça uma gestão adequada do seu ambiente de desenvolvimento
Tente corrigir por um tempo determinado antes de reverter
Práticas de CI: Testes
Crie testes automatizados
Espere o resultado dos testes antes de iniciar uma nova atividade
Sempre rode os testes antes de integrar as alterações
Não comente/desative testes que estão falhando
Práticas de CI: Build
Mantenha o processo de testes e build curtos e rápidos
Nunca vá para casa com uma build quebrada
Não faça check in de uma build quebrada
Assuma a responsabilidade por quebras causadas por suas mudanças
Dicas e Cuidados para Android
Android
Ambiente, API Level e Build Tools
Dependências e Velocidade das Builds
Lint
Automatize o Release e Utilize Ferramentas de Beta
Rode seus Testes
Rode seus testes localmente e no CI
check, connectedAndroidTest, testReleaseUnitTest
As tasks do Gradle são suas amigas
Ferramentas
Android apps ci
Um caso
Situação
Legado de ~4 anos com um time novo <1 ano de projeto
Medo de refactoring, baixa cobertura de testes
Github + TeamCity (self hosted)
Falta de visibilidade e rastreabilidade
Ações
Adoção do Git Flow
Uso do Crashlytics Beta
Troca do TeamCity pelo Bitrise.io
Melhoria na cobertura de testes
Desafios & Futuro
Melhorar a cobertura de Testes
Incluir mais ferramentas de análise estática (FindBugs, CheckStyle)
Criar suites de testes de integração e adicioná-los ao Bitrise.io
Pensamentos Finais
Prática simples mas a implementação pode ser complexa
Disciplina e persistência são chave
Android tem suas peculiaridades, fique atento!
“… if you are afraid to change something it is clearly poorly designed.”
- Martin Fowler
Perguntas?
Eduardo Carrara
@DuCarrara
Obrigado!
github.com/ecarrara-araujo
Referências
1. Continuous Integration by Martin Fowler
2. Continuous Integration by ContinuousDelivery.com
3. CI Links by Paul Hammant
4. Large-Scale Continuous Testing in the Cloud by John Penix from Google
5. Continuous Integration: Improving Software Quality and Reducing Risk
6. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment
Automation
7. Why Continuous Integration is so Important by Walmyr Filho
8. Android Apps Continuous Integration (CI) by Eduardo Carrara

Mais conteúdo relacionado

PPTX
Integração continua sem traumas
PDF
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
PDF
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipster
PPTX
Automação mobile Android - TDC
PDF
TDC2018SP | Trilha Testes - Guia de sobrevivência do QA em DevOps
PDF
Apenas um script de teste para iOS e Android
PDF
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
PDF
A Importância do Teste Continuo
Integração continua sem traumas
Como testar a performance de ap is utilizando uma ferramenta simples e gratuita?
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Automação mobile Android - TDC
TDC2018SP | Trilha Testes - Guia de sobrevivência do QA em DevOps
Apenas um script de teste para iOS e Android
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
A Importância do Teste Continuo

Mais procurados (20)

PDF
TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.io
PDF
O Testador Técnico
PPT
Integracao Continua com CruiseControl
PPTX
Automação de Teste para REST, Web e Mobile
PPTX
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
PDF
Papel do QA na Transformação Ágil
PPTX
Feedback mais rápido na sua build dividindo os testes funcionais
PDF
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
PDF
[DevelopersBR-2018] Testes de performance usando a nuvem
PDF
Usando containers com auto-escala de testes
PPTX
Sonarqube
 
PDF
Criando uma grid para execução de teste automatizado funcional e e2e
PDF
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
PPTX
Visual Regression Tests - Dando um Upload nos seus testes de UI!
PDF
Como criar testes rápidos e robustos com Cypress
PDF
Testes com TestLink e Selenium
PDF
Análise Estática de Código
PDF
A importancia de testes em todos os aspectos
PDF
Como criar e executar testes paralelos web usando Selenium e containers
PDF
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.io
O Testador Técnico
Integracao Continua com CruiseControl
Automação de Teste para REST, Web e Mobile
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
Papel do QA na Transformação Ágil
Feedback mais rápido na sua build dividindo os testes funcionais
QAOps - O QA com pézinho em DevOps (Ministry of Testing Floripa 2019)
[DevelopersBR-2018] Testes de performance usando a nuvem
Usando containers com auto-escala de testes
Sonarqube
 
Criando uma grid para execução de teste automatizado funcional e e2e
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
Visual Regression Tests - Dando um Upload nos seus testes de UI!
Como criar testes rápidos e robustos com Cypress
Testes com TestLink e Selenium
Análise Estática de Código
A importancia de testes em todos os aspectos
Como criar e executar testes paralelos web usando Selenium e containers
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
Anúncio

Semelhante a Android apps ci (20)

PDF
TDC2017 | São Paulo - Trilha Android How we figured out we had a SRE team at ...
PPT
Tdc continuous testing
PPT
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
PPTX
Integração Contínua
PDF
Cultura de testes em times mobile
PDF
Android Dev Conference 2017 - Entrega Contínua para Mobile
PPTX
CNQS - Testes Automatizados & Continuous Delivery
PDF
Maio 2016 - Integração e Validação Contínua
PPTX
Cloud Computing e Integração Contínua com o Windows Azure
PDF
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
PDF
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
PPTX
Integração Contínua
PPTX
Integração contínua - Prática de desenvolvimento
ODP
Continuous Integration / Dafiti Conference 2014
PPTX
Integração Contínua
PDF
Qualidade de software com Visual Studio ALM
PPTX
Ruby Conf Brasil 2015
PPTX
Integração Contínua
PDF
Implantação de Ambiente de Integração contínua para projeto que usa Java e C
PDF
Do push para a produção: Os desafios de automação em Continuous Delivery
TDC2017 | São Paulo - Trilha Android How we figured out we had a SRE team at ...
Tdc continuous testing
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Integração Contínua
Cultura de testes em times mobile
Android Dev Conference 2017 - Entrega Contínua para Mobile
CNQS - Testes Automatizados & Continuous Delivery
Maio 2016 - Integração e Validação Contínua
Cloud Computing e Integração Contínua com o Windows Azure
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
ld0mg1hrlhzbyvgfiyyq-signature-d9919623d100cd87ad7553e4c50163aa9329a439464540...
Integração Contínua
Integração contínua - Prática de desenvolvimento
Continuous Integration / Dafiti Conference 2014
Integração Contínua
Qualidade de software com Visual Studio ALM
Ruby Conf Brasil 2015
Integração Contínua
Implantação de Ambiente de Integração contínua para projeto que usa Java e C
Do push para a produção: Os desafios de automação em Continuous Delivery
Anúncio

Mais de Eduardo Carrara de Araujo (20)

PDF
Só um appzinho aê!? - O guia de sobrevivência para o dev da ideia inovadora a...
PDF
Melhorando seu App com Kotlin e Testes
PDF
Indo além com Automação de Testes de Apps Android
PDF
2016 - Por que mobile?
PDF
Testes: Por onde Começar?
PDF
Android ndk: Entering the native world
PDF
Android NDK: Entrando no Mundo Nativo
PDF
Implementation of a Participatory Sensing Solution to Collect Data About Pave...
PDF
GDG ABC - Aventura 2015
PDF
Android Test Automation Workshop
PDF
Android M - Getting Started
PDF
Testando Sua App Android na Nuvem
PDF
Utilizando Espresso e UIAutomator no Teste de Apps Android
PDF
Começando com Android (#AndroidOnIntel)
PDF
Android Auto Basics
PDF
Debugging in Android
PDF
Android 101: Do Plano ao Play
PDF
Testing Your App in the Cloud
PPTX
Android 101: Do Plano ao Play em 30 minutos
Só um appzinho aê!? - O guia de sobrevivência para o dev da ideia inovadora a...
Melhorando seu App com Kotlin e Testes
Indo além com Automação de Testes de Apps Android
2016 - Por que mobile?
Testes: Por onde Começar?
Android ndk: Entering the native world
Android NDK: Entrando no Mundo Nativo
Implementation of a Participatory Sensing Solution to Collect Data About Pave...
GDG ABC - Aventura 2015
Android Test Automation Workshop
Android M - Getting Started
Testando Sua App Android na Nuvem
Utilizando Espresso e UIAutomator no Teste de Apps Android
Começando com Android (#AndroidOnIntel)
Android Auto Basics
Debugging in Android
Android 101: Do Plano ao Play
Testing Your App in the Cloud
Android 101: Do Plano ao Play em 30 minutos

Último (7)

DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
PPTX
Mapeamento de Objeto para Tabela Relacional
PDF
apresentacao introducao computacao ead.pdf
PDF
Evolução em código: algoritmos genéticos com PHP
PDF
Dos requisitos ao código: como criar código rastreável em PHP
PPTX
Curso de Windows 11 resumido na prática.pptx
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
Mapeamento de Objeto para Tabela Relacional
apresentacao introducao computacao ead.pdf
Evolução em código: algoritmos genéticos com PHP
Dos requisitos ao código: como criar código rastreável em PHP
Curso de Windows 11 resumido na prática.pptx
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO

Android apps ci

  • 1. Android Apps Continuous Integration Eduardo Carrara @DuCarrara Android Developer @ TradeForce Desafios e Soluções
  • 2. “Once you stop learning you start dying” - Albert Einstein
  • 4. "Sempre que um membro do time fizer um commit, toda a aplicação deve ser construída e testada por um conjunto de testes automatizados; se a build ou testes falharem o time deve parar e resolver o problema imediatamente." Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation
  • 5. Benefícios Redução de riscos pré-release Aumento na velocidade e qualidade das entregas Detecção e correção prematura de bugs Feedback rápidos aos desenvolvedores time
  • 6. Antes de Começar... Tenha um sistema para controle do versionamento Automatize seu processo de build
  • 7. Práticas de CI: Desenvolvimento Faça check in regularmente (diariamente no mínimo) Sempre esteja pronto para reverter suas alterações Faça uma gestão adequada do seu ambiente de desenvolvimento Tente corrigir por um tempo determinado antes de reverter
  • 8. Práticas de CI: Testes Crie testes automatizados Espere o resultado dos testes antes de iniciar uma nova atividade Sempre rode os testes antes de integrar as alterações Não comente/desative testes que estão falhando
  • 9. Práticas de CI: Build Mantenha o processo de testes e build curtos e rápidos Nunca vá para casa com uma build quebrada Não faça check in de uma build quebrada Assuma a responsabilidade por quebras causadas por suas mudanças
  • 10. Dicas e Cuidados para Android
  • 11. Android Ambiente, API Level e Build Tools Dependências e Velocidade das Builds Lint Automatize o Release e Utilize Ferramentas de Beta
  • 12. Rode seus Testes Rode seus testes localmente e no CI check, connectedAndroidTest, testReleaseUnitTest As tasks do Gradle são suas amigas
  • 16. Situação Legado de ~4 anos com um time novo <1 ano de projeto Medo de refactoring, baixa cobertura de testes Github + TeamCity (self hosted) Falta de visibilidade e rastreabilidade
  • 17. Ações Adoção do Git Flow Uso do Crashlytics Beta Troca do TeamCity pelo Bitrise.io Melhoria na cobertura de testes
  • 18. Desafios & Futuro Melhorar a cobertura de Testes Incluir mais ferramentas de análise estática (FindBugs, CheckStyle) Criar suites de testes de integração e adicioná-los ao Bitrise.io
  • 19. Pensamentos Finais Prática simples mas a implementação pode ser complexa Disciplina e persistência são chave Android tem suas peculiaridades, fique atento!
  • 20. “… if you are afraid to change something it is clearly poorly designed.” - Martin Fowler Perguntas?
  • 22. Referências 1. Continuous Integration by Martin Fowler 2. Continuous Integration by ContinuousDelivery.com 3. CI Links by Paul Hammant 4. Large-Scale Continuous Testing in the Cloud by John Penix from Google 5. Continuous Integration: Improving Software Quality and Reducing Risk 6. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation 7. Why Continuous Integration is so Important by Walmyr Filho 8. Android Apps Continuous Integration (CI) by Eduardo Carrara