Post on 15-Jan-2017
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