24
Repensando as técnicas para qualidade no ecossistema Android Jorge Diz

Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Embed Size (px)

DESCRIPTION

Palestra apresentada por Jorge Diz, consultor da Concrete Solutions, durante o Intercon Android 2014, realizado no dia 20 de setembro.

Citation preview

Page 1: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Repensando as técnicas paraqualidade no

ecossistema Android

Jorge Diz

Page 2: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Agenda

Tecnologia / negócio / testes / arquitetura ● De onde viemos ?● Onde estamos ?● Para onde vamos ?

Page 3: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Meu Deus, isto fala!

Page 4: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Meu Deus, isto roda aplicativos !

Page 5: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Modelo V

Verificação

Inspeções Testes “dinâmicos”

Valida

ção

ExecutávelExecutável

Page 6: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Quadrantes de Marick

Negócio

Tecnologia

Suporte

TecnologiaTecnologia

Crítica ++ a

utom

ação

aut

omaç

ão --

Unidade

Regras

UI

SegurançaDesempenho

Usabilidade

Page 7: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Pirâmide de Cohn

UI

Unidades

Serviços

Page 8: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Ciclo de vida dos bugs

Diagnóstico

Defeito

Correção

Falha

Erro

Análise

Page 9: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Definições

● Erro = vacilo● Defeito = problema que ficou no sistema● Falha = sintoma● Diagnóstico = explicação● Análise = o quê vamos fazer ?● Correção = ação

Page 10: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Teste

● = Fazer defeito virar falha

(Intencionalmente)● Não necessariamente automatizado● Não necessariamente roteirizado● Não necessariamente contra uma

especificação

Page 11: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Monitoramento

● Analytics– Google Analytics / GTM

– Crashlytics

– NewRelic

– ...

● ~ teste contínuo → pode fazer defeito virar falha, na operação normal do app (ou api)

Page 12: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Cobertura

● Qual proporção do produto / serviço é testada● X % em cima de quê ?

– Classes. métodos, caminhos, parâmetros do app ?

– Execuções do app

– Modelos, configurações, localização

Page 13: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Em qual velocidade sua roda gira?

Diagnóstico

Defeito

Correção

Falha

Erro

Análise

Page 14: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

TDD

● Desenvolvimento guiado por testes● Para desenvolvedores – mesma linguagem que o

código de produção● Modelo <X>unit, <X=linguagem> ● Depende de feedback muito rápido● Depende de dublês de teste (mocks, stubs)● Depende de arquitetura limpa

=> Difícil no ecossistema Android

Page 15: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

ATDD

● Desenvolvimento guiado por testes de aceitação

● Feedback pode ser um pouco mais demorado (minutos)

● A maioria usa com UI

Page 16: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

BDD

● Desenvolvimento guiado por comportamento● Conjunto de convenções e ferramentas para

ATDD● Sequestrado pelos desenvolvedores

Page 17: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

O quê muda em Android?

● Arquitetura não facilita muito● Prazos ainda mais curtos● Escala● Quem vai usar precisa ser convencido● Menos controle sobre serviços / ambientes

utilizados pela solução (não é só o app)

Page 18: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Arquitetura: pecados originais

● Componentes baseados em herança● Activity não segue o SRP● Passos para construir o app são lentos● Não favorece TDD● Ciclo de vida idiossincrático● Reflexão / injeção (quase) só em tempo de

compilação● Builds muito lentas

Page 19: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Android Test Framework

● Teste de instrumentação – caixa branca● Baseado em JUnit 3.x● Inclui “mocks” (de fato, stubs) dos

componentes● Robotium → mais simples● Espresso → mais robusto

Page 20: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

UI Automator

● Agente no Android, não depende da APK● Baseado em API de acessibilidade (a partir da API 16)● Fornece um serviço acessível remotamente – caixa

preta – viabiliza agentes + clientes em qualquer linguagem, BDD

● Agentes:– Calabash

– Appium

– Selendroid

Page 21: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Testes remotos de UI

● Dependem de agente no android● Cliente roda no PC, em qualquer linguagem● Alguns precisam alterar a aplicação● Appium (UIAutomator, WebDriver)● Calabash (protocolo próprio)● Selendroid (WebDriver)

Page 22: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Robolectric

● Roda em ambiente PC, não usa o aparelho● Roda na JVM, cria implementações alternativas

aos stubs gerados.● Busca viabizar testes rápidos, pode usar JUnit4

Page 23: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android
Page 24: Intercon Android - Repensando as técnicas para qualidade no ecossistema Android

Obrigado !

[email protected]

(estamos contratando na Concrete Solutions)