Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Testes de Ponta a Ponta
Eduardo Carrara - @DuCarrara
Android Developer
Elias Nogueira - @eliasnogueira
Agile Coach @ Sicredi
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Introdução
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Unit Test
Integration
Test
UI
Test
Pirâmide de Automação de Teste
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Pipeline ideal para execução dos testes
Análise
Estática
Testes
Unitários
Testes de
Integração
Testes de
Serviços
Testes de
Aceitação
Testes
Funcionais
Mock
Execução Paralela
Smoke Test
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Testes Unitários
Photo by Chad Kirchoff on Unsplash
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Unidades de Trabalho
Isoláveis de dependências Externas
Possibilitam testes rápidos
Pequenas como métodos ou grandes como conjuntos de classes
Lembrete: Arrange, Act, Assert
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Tipos de Testes Unitários (by The Art of Unit Testing)
Value Based Testing
Interaction Based Testing
State Based Testing
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Mocking
Deve ajudar a lidar com as dependências de maneira simples
Prover objetos dublês (mocks, stubs etc)
Isolar a unidade a ser testada
Fornecer controle sobre comportamento e estado
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Code Time!
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Value Based Unit Test
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
State Based Unit Test
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Interaction Based Unit Test
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Robolectric + Mockito Tip of the Day
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Testes Integrados
Photo by Brady Holt on Wikimedia
Mock Driver
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Android Instrumentation Tests
Quando não conseguimos nos livrar das dependências
Não são tão rápidos nem tão simples como testes unitários
Geralmente focados em testes funcionais baseados na UI
Como seu usuário interage com o app?
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Android Testing Support Library
AndroidJUnitRunner + JUnit4 Rules + Espresso + UIAutomator
Muito focado em testes de Interface do Usuário
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Instrumentation Testing Robots
Um Pattern com foco na organização dos testes
Melhorar a legibilidade e manutenção dos testes
Separar "o como testar" do "o que testar"
Muito similar aos Page Objects
Test
(O que)
Robot
(O como)
View
Presenter
(O como)
Fake Model
(O que)
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Code Time!
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Simple Espresso Test
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Instrumentation Testing Robot (ITR)
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
ITR - Internals
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
ITR - Outro Exemplo
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Testes de Aceitação
Photo by TireRack.com
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Page Objects
Um Pattern com foco na organização dos testes
Melhorar a legibilidade e manutenção dos testes
Separar "o como testar" do "o que testar"
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Transformar ações do usuário em código
Page Objects
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Scan Livro Preencher ISBN Emprestar Livro Selecionar contato Ver Detalhes Livro
Teste de Aceitação (E2E) - Emprestar um livro a um contato
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-pontaPhoto by Rian MacGuire on PixelBay
Testes Além do app
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Testar os serviços (REST | WebService)
Testar se endpoint está ativo
Teste Funcional
Teste de Contrato
Teste de Aceitação (fluxo da API sem UI)
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Pensamentos Finais
Teste as engrenagens de forma isolada
Testes as engrenagens em conjunto
Foco nas interações dos usuários na aplicação
Não esqueça de testar os seus serviços
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Perguntas?
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Eduardo Carrara
@DuCarrara
Obrigado!
github.com/ecarrara-araujo
Elias Nogueira
@eliasnogueira
github.com/eliasnogueira
Material: https://www.slideshare.net/elias.nogueira/testes-de-ponta-a-ponta
Referências
1. Testing on Android Documentation by Android Developers
2. Android Testing Patterns Youtube Playlist
3. The Art of Unit Testing by Roy Osherove
4. Instrumentation Testing Robots by Jake Warthon
5. Page Objects by Martin Fowler
6. Test Pyramid
7. Page Objects
8. Android Tests by Goggle Samples
9. Android Testing Templates by Google Samples
10. Espresso Cheat Sheet
Código
https://github.com/ecarrara-araujo/vilibra
https://github.com/eliasnogueira/vilibra-testing

Testes de ponta a ponta