testabilidade no android
TRANSCRIPT
//Testabilidade no Android
/*** Created by Eduardo Cucharro*/
Eduardo Cucharro
//Desenvolvedor desde 2007
//Windows forms
//Web
//Restful Apis
//Processos backend / integrações
//Android
//Grupo Minha Vida (Time Dieta e Saúde)
Por que testar?
92% dos problemas, poderiam ser resolvidos com testes…
O que testar?
//Funcionamento da UI
//Integração entre componentes do próprio app
//Lógica do negócio/aplicação
//Integração com outros apps
//Acesso a dados
//Acesso a REST apis
Coisas a testar
Qual o seu maior problema agora?
//Funcionamento da UI - Espresso
//Integração entre componentes do próprio app - Espresso
//Lógica do negócio/aplicação - JUnit/Mockito
//Integração com outros apps - UI Automator
//Acesso a dados
//Acesso a REST apis
Coisas a testar e com o que testar
Espresso
//Espresso Core - Basic Interaction, Matches Assertions
//Espresso Contrib - RecyclerView, NavDrawer, Picker
//Hamcrest - Muitos outros matches
//Espresso Web - Uso com webviews
//Espresso Idling - Sincronização de Jobs
Espresso libs
Select > act > check
onView(withContentDescription(R.string.lunch))
.perform(scrollTo())
.check(matches(isDisplayed()));
No Espresso
Na prática…?
onView()
onData()
pressBack()
closeSoftKeyboard()
openActionBarOverflowMenu()
isDisplayed()
withText()
withChild()
isDescendantOf()
allOf()
ViewInteractions / ViewMatchers
scrollTo()
click()
swipeRight()
typeText()
longClick()
matches()
not()
startsWith()
hasSize()
is()
ViewActions / ViewAssertions
Hermetic env
Arquitetura não testável
Activity
Fragment
VolleyStatic Helpers
IOC - Service locator
Arquitetura testável
Arquitetura testável
//Separação da lógica e componentes android
//Unit testing
//Testes locais na JVM
//Mais rápido e produtivo
Arquitetura e UnitTesting
Na prática…?
Unit testing -conceitos
//3A - Arrange > Act > Assert
//Mock - Permite testar interações com o objeto
//Stub - Permite simular estado e retorno do objeto
//Fake - Implementação falsa
//Dummy - Objeto sem função (cumprindo tabela)
Nomenclatura em UnitTesting
Na prática…?
Firebase Test Lab
//N Android * N devices * Linguas
//Continuos Integration e ambiente
//Firebase Test Lab pode ajudar
//5$ device/h ou 1$ emulador/h
//Robo Tests Free
Firebase Test Lab - Considerações
Obrigado :)
ArrayList<String> aListContatos = new ArrayList<String>();
//Na Comunidade AndroidDevBR (slack)aListContatos.add(“@cuchas“);
//No Twitter
aListContatos.add(“@eduardocucharro“);
//BlogaListContatos.add(“http://cucha.com.br“);
//SlideshareaListContatos.add(“http://www.slideshare.net/eduardocucharro“);
Contatos ;)