Testes para Android de ponta a ponta

elias.nogueira 1,487 views 16 slides Sep 29, 2015
Slide 1
Slide 1 of 16
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16

About This Presentation

Esta palestra, ministrada no The Developers Conference 2015 edição Porto Alegre em 25 de setembro de 2015, visa apresentar os diferentes níveis de teste dentro de uma app Android onde há exemplos de testes unitários locais e instrumentados, teste de serviços e teste na interface gráfica.


Slide Content

Globalcode)–)Open4education


Testes para Android de Ponta a Ponta
Elias Nogueira
@eliasogueira

Globalcode)–)Open4education


Elias Nogueira
qualister.com.br)
eliasnogueira)
br.linkedin.com/in/eliasnogueira)
github.com/eliasnogueira)
Consultor de Teste na Qualister Consultoria e Treinamento
Professor de Pós Graduação na Unisinos/RS
Atuante na comunidade de teste no cenário nacional
eliasnogueira.com)

Globalcode)–)Open4education


ATENÇÃO!!!
 É importante automatizar todos os níveis da app

Globalcode)–)Open4education


Níveis de teste em Android
 Unitário
 Local
 Instrumentação
 UI
 Cadê o nível de serviços???

Globalcode)–)Open4education


Unitário Local
 É uma excelente forma de testar alguma regra ou
funcionamento de código sem depender do
dispositivo para executá-las e nem do contexto a
aplicação para a instrumentação

 Normalmente utilizamos algum framework de mock
para suprir qualquer dependência
 É uma forma mais assertiva e reduz o tempo na
manutenção de testes unitários com mocks
https://developer.android.com/training/testing/unit-testing/local-unit-tests.html

Globalcode)–)Open4education


Unitário Local
./gradlew test
Context)
Context)Provider)
Content)Resolver)
Service)
Intent)

Globalcode)–)Open4education


Unitário Instrumentação
 São testes unitários que executam em dispositivos
reais ou emulados ao invés de serem executados
na JVM
 Utilizamos esta forma quando o teste necessita de
informações de instrumentação (Context, Activities,
etc…) ou algum acesso a implementação do
Android Framework.
https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html

Globalcode)–)Open4education


Unitário Instrumentação
./gradlew cC
Context)
Context)Provider)
Content)Resolver)
Service)
Intent)

Globalcode)–)Open4education


Unitário Roboletric
 Framework que habilita a criação e execução de
testes de unidade na JVM sem a necessidade de
um emulador ou dispositivo
http://robolectric.org

Globalcode)–)Open4education


Unitário Roboletric
./gradlew test

Globalcode)–)Open4education


Rest-Assured
 Biblioteca escrita em Java para simplificar os
testes de serviço baseado em REST
 Compatível com os principais métodos (GET, POST,
PUT, DELETE, OPTIONS, PATCH, HEAD)
 Pode validar cabeçalho e requisições
 Escrita no teste na sintaxe Gherkin
given, when, then
https://github.com/jayway/rest-assured

Globalcode)–)Open4education


Rest-Assured
./gradlew test

Globalcode)–)Open4education


UI – User Interface
 Um dos pontos mais negligenciados e críticos para
os usuários da nossa app: a UI
 É de extrema importância ter uma suíte de
automação somente para UI executando em nosso
ciclo de CI

Globalcode)–)Open4education


Appium
 Alternativa aos frameworks “padrão”
 Uso o UiAutomator como base
 Aumenta o loque de possibilidades de teste:
 Escrita de código mais facilitada
 Múltiplos dispositivos
 Grid
http://appium.io

Globalcode)–)Open4education


Appium
./gradlew test

Globalcode)–)Open4education


Projeto em...
https://github.com/eliasnogueira/
testes-android-ponta-a-ponta