SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
about.me/ramonrabello
Ramon Rabello
Automatize seus testes
de UI com a Espresso!
~ 10 anos
Senior Developer
about.me/ramonrabello
Ramon Rabello
Paixão por Comunidades!
Agilista
Organizer
GDG Brasília
BB Tecnologia e Serviços
Líder de Inovação
CEO, Visyo
Empreendedor
Android
Instrutor / Consultor
Por que eu devo testar?
Garantir que determinada
feature do sistema funcione
como esperada.
Teste Unitário
É um roteiro do próprio
comportamento de um
sistema.
Garantia de que mudanças
não quebrem funcionalidades
já existentes.
Ah, mas testar dá trabalho!
Desculpe, não tenho tempo
para criar testes.
Eu tô cansado de tanto testar
as coisas “na mão".
Quando vc lança atualizações sem testes
E coloca o produto em produção
E o sistema falha :(
E você não acredita o que pode ter dado
errado…
Então, quais ferramentas que
utilizo para testar?
Show! E como funciona
testes em Android?
Pastas para tipos de testes
Testes de UI
Testes Unitários
Tá! Agora me apresenta essa
tal de Espresso!
Espresso
Parte da Android Support Testing Library
Simula interações com o usuário
Sincronização automática de ações
de teste com a UI
Extremamente rápida!
Configurando a Espresso
build.gradle (app)
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// Android Testing Support Library's runner and rules

androidTestCompile ‘com.android.support.test:runner:0.5' 

androidTestCompile 'com.android.support.test:rules:0.5'



// Espresso UI Testing dependencies

androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {

exclude group: 'com.android.support', module: 'support-annotations'

})
…
}
Dependências
Configurando a Espresso
build.gradle (app)
android {

compileSdkVersion 25

buildToolsVersion "24.0.0"

defaultConfig {

…
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}

…

}
Test Instrumentation Runner
Anatomia de um Teste de UI
1 Encontrar uma View
2 Executar uma ação
3 Inspecionar o resultado
Anatomia de um Teste de UI
onView(Matcher<View>)
2 Executar uma ação
3 Inspecionar o resultado
Anatomia de um Teste de UI
onView(Matcher<View>)
.perform(ViewAction)
3 Inspecionar o resultado
Anatomia de um Teste de UI
onView(Matcher<View>)
.perform(ViewAction)
.check(ViewAssertion)
Demo - Tela de Login
Criando um Teste de UI
Criando a classe de Teste
@RunWith(AndroidJunit4.class)
public class LoginActivityTest { }
Criando um Teste de UI
Adicionando uma ActivityTestRule
@RunWith(AndroidJunit4.class)
public class LoginActivityTest {
@Rule
public ActivityTestRule<LoginActivity> activityTestRule =
new ActivityTestRule<>(LoginActivity.class);
}
Criando um Teste de UI
Simulando o preenchimento do campo usuário
@RunWith(AndroidJunit4.class)
public class MainActivityTest {
…
@Test
public void clickLoginButton_shouldVerifyCredentials(){
onView(withId(R.id.username_field))
.perform(typeText(“espresso”), closeSoftKeyboard());
}
}
Criando um Teste de UI
@RunWith(AndroidJunit4.class)
public class MainActivityTest {
…
@Test
public void clickLoginButton_shouldVerifyCredentials(){
…
onView(withId(R.id.password_field))
.perform(typeText(“35pr3550”), closeSoftKeyboard());
}
}
Simulando o preenchimento do campo senha
Criando um Teste de UI
@RunWith(AndroidJunit4.class)
public class MainActivityTest {
…
@Test
public void clickLoginButton_shouldVerifyCredentials(){
…
onView(withId(R.id.login_button)).perform(click());
}
}
Simulando o clique no botão
Criando um Teste de UI
@RunWith(AndroidJunit4.class)
public class MainActivityTest {
…
@Test
public void clickLoginButton_shouldVerifyCredentials(){
…
onView(withId(R.id.username_field)).check(matches(hasText("espresso"));
}
}
Verifica o conteúdo do campo usuário
Criando um Teste de UI
@RunWith(AndroidJunit4.class)
public class MainActivityTest {
…
@Test
public void clickLoginButton_shouldVerifyCredentials(){
…
onView(withId(R.id.password_field)).check(matches(hasText("35pr3550"));
}
}
Verifica o conteúdo do campo senha
Status do teste
Verificando se ele passou ou não
Dúvidas em Espresso?
Espresso Cheat Sheet
Executando o Teste
Configurações - Desabilitar animações
Executando o Teste
Executa todos os testes da classe
1
2
1 Executa o teste selecionado2
No Android Studio
Legal! E agora, onde posso ler
mais a respeito da Espresso?
Saiba mais!
Testing Support Library Guide
Clique para saber mais
Android Testing Codelab
Clique para saber mais
Android Testing Patterns Series
Clique para saber mais
OBRIGADO!
goo.gl/VBJTIh
@gdgbrasilia
/gdgbrasilia

Mais conteúdo relacionado

Mais procurados

Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos - Let...
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos - Let...Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos - Let...
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos - Let...iMasters
 
Introdução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumIntrodução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumSandy Maciel
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e SeleniumAndré Thiago
 
Selenium
SeleniumSelenium
Seleniumfatec
 
Talk testes em flutter
Talk testes em flutterTalk testes em flutter
Talk testes em flutterJhonatas Matos
 
Realizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosRealizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosVIVIANE RANGEL
 
Tutorial avancado com appscan
Tutorial avancado com appscanTutorial avancado com appscan
Tutorial avancado com appscanReinaldo Rossetti
 
2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...
2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...
2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...João Júnior
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?Samuel Lourenço
 
Testando aplicações Flex com Selenium
Testando aplicações Flex com SeleniumTestando aplicações Flex com Selenium
Testando aplicações Flex com SeleniumVictor Serta
 
Automação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriverAutomação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriverQualister
 
Design Factory em testes
Design Factory em testesDesign Factory em testes
Design Factory em testesTestRock!
 
Testando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaTestando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaHenrique Limas
 
Problemas com o Java
Problemas com o JavaProblemas com o Java
Problemas com o JavaAmanda Cunha
 
98796699 selenium-framework
98796699 selenium-framework98796699 selenium-framework
98796699 selenium-frameworkAndré Caldas
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/IntegradosGiovanni Bassi
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockitoRenan Uchôa
 

Mais procurados (20)

Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos - Let...
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos - Let...Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos - Let...
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos - Let...
 
Introdução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumIntrodução a testes de software utilizando selenium
Introdução a testes de software utilizando selenium
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
 
Selenium
SeleniumSelenium
Selenium
 
Talk testes em flutter
Talk testes em flutterTalk testes em flutter
Talk testes em flutter
 
Realizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosRealizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitos
 
Tutorial avancado com appscan
Tutorial avancado com appscanTutorial avancado com appscan
Tutorial avancado com appscan
 
2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...
2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...
2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?
 
Testando aplicações Flex com Selenium
Testando aplicações Flex com SeleniumTestando aplicações Flex com Selenium
Testando aplicações Flex com Selenium
 
Automação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriverAutomação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriver
 
Design Factory em testes
Design Factory em testesDesign Factory em testes
Design Factory em testes
 
Testando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaTestando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o Karma
 
Problemas com o Java
Problemas com o JavaProblemas com o Java
Problemas com o Java
 
Selenium: visão geral
Selenium: visão geralSelenium: visão geral
Selenium: visão geral
 
98796699 selenium-framework
98796699 selenium-framework98796699 selenium-framework
98796699 selenium-framework
 
Selenium ide apresentação
Selenium ide   apresentaçãoSelenium ide   apresentação
Selenium ide apresentação
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
 
ATDD Android
ATDD AndroidATDD Android
ATDD Android
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockito
 

Semelhante a Automatize seus testes de UI com a Espresso!

Automatizando testes de UI no Android com Espresso
Automatizando testes de UI no Android com EspressoAutomatizando testes de UI no Android com Espresso
Automatizando testes de UI no Android com EspressoVinícius de Paula
 
Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)Wennder Santos
 
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontaTestando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontatdc-globalcode
 
Android testing PT-BR
Android testing PT-BRAndroid testing PT-BR
Android testing PT-BRrafaeladson
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
Teste para dispositivos móveis apresentação pra ufam -eliane
Teste para dispositivos móveis   apresentação pra ufam -elianeTeste para dispositivos móveis   apresentação pra ufam -eliane
Teste para dispositivos móveis apresentação pra ufam -elianeEliane Collins
 
Espresso 101: Introdução a UI Testing
Espresso 101: Introdução a UI TestingEspresso 101: Introdução a UI Testing
Espresso 101: Introdução a UI TestingOnyo
 
Dezembro 2015 - UI AutoMonkey - Teste Automatizado iOS
Dezembro 2015 - UI AutoMonkey - Teste Automatizado iOSDezembro 2015 - UI AutoMonkey - Teste Automatizado iOS
Dezembro 2015 - UI AutoMonkey - Teste Automatizado iOSGrupo de Testes Carioca
 
UI AutoMonkey - Teste Automatizado iOS
UI AutoMonkey - Teste Automatizado iOSUI AutoMonkey - Teste Automatizado iOS
UI AutoMonkey - Teste Automatizado iOSSiem Offshore
 
MTC 2017 pirâmide de automação mobile de testes
MTC 2017   pirâmide de automação mobile de testesMTC 2017   pirâmide de automação mobile de testes
MTC 2017 pirâmide de automação mobile de testesWellington Avelino dos Santos
 
TDC2018SP | Trilha Testes - Testes de Regressao Visual - Dando um upgrade nos...
TDC2018SP | Trilha Testes - Testes de Regressao Visual - Dando um upgrade nos...TDC2018SP | Trilha Testes - Testes de Regressao Visual - Dando um upgrade nos...
TDC2018SP | Trilha Testes - Testes de Regressao Visual - Dando um upgrade nos...tdc-globalcode
 
Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!Mariana Elisa Moisés , CTFL-AT,MBA
 
Introdução À Automação de Testes com Selenium
Introdução À Automação de Testes com SeleniumIntrodução À Automação de Testes com Selenium
Introdução À Automação de Testes com Seleniumrodrigogouveia
 

Semelhante a Automatize seus testes de UI com a Espresso! (20)

Android Espresso
Android EspressoAndroid Espresso
Android Espresso
 
Automatizando testes de UI no Android com Espresso
Automatizando testes de UI no Android com EspressoAutomatizando testes de UI no Android com Espresso
Automatizando testes de UI no Android com Espresso
 
Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)
 
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontaTestando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
 
Android testing PT-BR
Android testing PT-BRAndroid testing PT-BR
Android testing PT-BR
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
Teste para dispositivos móveis apresentação pra ufam -eliane
Teste para dispositivos móveis   apresentação pra ufam -elianeTeste para dispositivos móveis   apresentação pra ufam -eliane
Teste para dispositivos móveis apresentação pra ufam -eliane
 
Espresso 101: Introdução a UI Testing
Espresso 101: Introdução a UI TestingEspresso 101: Introdução a UI Testing
Espresso 101: Introdução a UI Testing
 
DevQA: UI Testing , como fazer?
DevQA: UI Testing , como fazer?DevQA: UI Testing , como fazer?
DevQA: UI Testing , como fazer?
 
Dezembro 2015 - UI AutoMonkey - Teste Automatizado iOS
Dezembro 2015 - UI AutoMonkey - Teste Automatizado iOSDezembro 2015 - UI AutoMonkey - Teste Automatizado iOS
Dezembro 2015 - UI AutoMonkey - Teste Automatizado iOS
 
UI AutoMonkey - Teste Automatizado iOS
UI AutoMonkey - Teste Automatizado iOSUI AutoMonkey - Teste Automatizado iOS
UI AutoMonkey - Teste Automatizado iOS
 
MTC 2017 pirâmide de automação mobile de testes
MTC 2017   pirâmide de automação mobile de testesMTC 2017   pirâmide de automação mobile de testes
MTC 2017 pirâmide de automação mobile de testes
 
TDC2018SP | Trilha Testes - Testes de Regressao Visual - Dando um upgrade nos...
TDC2018SP | Trilha Testes - Testes de Regressao Visual - Dando um upgrade nos...TDC2018SP | Trilha Testes - Testes de Regressao Visual - Dando um upgrade nos...
TDC2018SP | Trilha Testes - Testes de Regressao Visual - Dando um upgrade nos...
 
Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!
 
SoapUI: Testes em WebServices
SoapUI: Testes em WebServicesSoapUI: Testes em WebServices
SoapUI: Testes em WebServices
 
Introdução À Automação de Testes com Selenium
Introdução À Automação de Testes com SeleniumIntrodução À Automação de Testes com Selenium
Introdução À Automação de Testes com Selenium
 
Prototipagem
PrototipagemPrototipagem
Prototipagem
 
Android Aula 4
Android Aula 4Android Aula 4
Android Aula 4
 
JUnit Experience
JUnit ExperienceJUnit Experience
JUnit Experience
 

Mais de Ramon Ribeiro Rabello

Declarative UIs with Jetpack Compose
Declarative UIs with Jetpack ComposeDeclarative UIs with Jetpack Compose
Declarative UIs with Jetpack ComposeRamon Ribeiro Rabello
 
Android Jetpack + Coroutines: To infinity and beyond
Android Jetpack + Coroutines: To infinity and beyondAndroid Jetpack + Coroutines: To infinity and beyond
Android Jetpack + Coroutines: To infinity and beyondRamon Ribeiro Rabello
 
Create Modern Apps with Android Jetpack
Create Modern Apps with Android JetpackCreate Modern Apps with Android Jetpack
Create Modern Apps with Android JetpackRamon Ribeiro Rabello
 
Ninja Productivity in Android Studio
Ninja Productivity in Android StudioNinja Productivity in Android Studio
Ninja Productivity in Android StudioRamon Ribeiro Rabello
 
Produtividade ninja com android studio
Produtividade ninja com android studioProdutividade ninja com android studio
Produtividade ninja com android studioRamon Ribeiro Rabello
 
Os caminhos da Agilidade em Empresa Pública
Os caminhos da Agilidade em Empresa PúblicaOs caminhos da Agilidade em Empresa Pública
Os caminhos da Agilidade em Empresa PúblicaRamon Ribeiro Rabello
 
Making your app see with Mobile Vision API
Making your app see with Mobile Vision APIMaking your app see with Mobile Vision API
Making your app see with Mobile Vision APIRamon Ribeiro Rabello
 
Inovar em tempos de crise? Yes, We Can!
Inovar em tempos de crise?  Yes, We Can!Inovar em tempos de crise?  Yes, We Can!
Inovar em tempos de crise? Yes, We Can!Ramon Ribeiro Rabello
 
Android Wear: Estendendo sua app para relógios inteligentes
Android Wear: Estendendo sua app para relógios inteligentesAndroid Wear: Estendendo sua app para relógios inteligentes
Android Wear: Estendendo sua app para relógios inteligentesRamon Ribeiro Rabello
 
O caminho de um desenvolvedor android
O caminho de um desenvolvedor androidO caminho de um desenvolvedor android
O caminho de um desenvolvedor androidRamon Ribeiro Rabello
 
Workshop Android em Ambientes de Integração
Workshop Android em Ambientes de IntegraçãoWorkshop Android em Ambientes de Integração
Workshop Android em Ambientes de IntegraçãoRamon Ribeiro Rabello
 
De idealista à empreendedor - como desenvolver aplicações em android que conq...
De idealista à empreendedor - como desenvolver aplicações em android que conq...De idealista à empreendedor - como desenvolver aplicações em android que conq...
De idealista à empreendedor - como desenvolver aplicações em android que conq...Ramon Ribeiro Rabello
 
Agora é Android, Tá Safo? - #tasafoemacaocastanhal
Agora é Android, Tá Safo? - #tasafoemacaocastanhalAgora é Android, Tá Safo? - #tasafoemacaocastanhal
Agora é Android, Tá Safo? - #tasafoemacaocastanhalRamon Ribeiro Rabello
 

Mais de Ramon Ribeiro Rabello (20)

Declarative UIs with Jetpack Compose
Declarative UIs with Jetpack ComposeDeclarative UIs with Jetpack Compose
Declarative UIs with Jetpack Compose
 
Android Jetpack + Coroutines: To infinity and beyond
Android Jetpack + Coroutines: To infinity and beyondAndroid Jetpack + Coroutines: To infinity and beyond
Android Jetpack + Coroutines: To infinity and beyond
 
Create Modern Apps with Android Jetpack
Create Modern Apps with Android JetpackCreate Modern Apps with Android Jetpack
Create Modern Apps with Android Jetpack
 
Cultura de testes em times mobile
Cultura de testes em times mobileCultura de testes em times mobile
Cultura de testes em times mobile
 
Ninja Productivity in Android Studio
Ninja Productivity in Android StudioNinja Productivity in Android Studio
Ninja Productivity in Android Studio
 
Produtividade ninja com android studio
Produtividade ninja com android studioProdutividade ninja com android studio
Produtividade ninja com android studio
 
Os caminhos da Agilidade em Empresa Pública
Os caminhos da Agilidade em Empresa PúblicaOs caminhos da Agilidade em Empresa Pública
Os caminhos da Agilidade em Empresa Pública
 
Making your app see with Mobile Vision API
Making your app see with Mobile Vision APIMaking your app see with Mobile Vision API
Making your app see with Mobile Vision API
 
Inovar em tempos de crise? Yes, We Can!
Inovar em tempos de crise?  Yes, We Can!Inovar em tempos de crise?  Yes, We Can!
Inovar em tempos de crise? Yes, We Can!
 
O ecossistema android
O ecossistema androidO ecossistema android
O ecossistema android
 
Android Marshmallow na prática
Android Marshmallow na práticaAndroid Marshmallow na prática
Android Marshmallow na prática
 
Android Wear: Estendendo sua app para relógios inteligentes
Android Wear: Estendendo sua app para relógios inteligentesAndroid Wear: Estendendo sua app para relógios inteligentes
Android Wear: Estendendo sua app para relógios inteligentes
 
Introdução ao Android Studio
Introdução ao Android StudioIntrodução ao Android Studio
Introdução ao Android Studio
 
O caminho de um desenvolvedor android
O caminho de um desenvolvedor androidO caminho de um desenvolvedor android
O caminho de um desenvolvedor android
 
Criando Apps Sociais em Android
Criando Apps Sociais em AndroidCriando Apps Sociais em Android
Criando Apps Sociais em Android
 
Porque Aprender Android
Porque Aprender AndroidPorque Aprender Android
Porque Aprender Android
 
Workshop Android em Ambientes de Integração
Workshop Android em Ambientes de IntegraçãoWorkshop Android em Ambientes de Integração
Workshop Android em Ambientes de Integração
 
De idealista à empreendedor - como desenvolver aplicações em android que conq...
De idealista à empreendedor - como desenvolver aplicações em android que conq...De idealista à empreendedor - como desenvolver aplicações em android que conq...
De idealista à empreendedor - como desenvolver aplicações em android que conq...
 
Desenvolvimento Web para Android
Desenvolvimento Web para AndroidDesenvolvimento Web para Android
Desenvolvimento Web para Android
 
Agora é Android, Tá Safo? - #tasafoemacaocastanhal
Agora é Android, Tá Safo? - #tasafoemacaocastanhalAgora é Android, Tá Safo? - #tasafoemacaocastanhal
Agora é Android, Tá Safo? - #tasafoemacaocastanhal
 

Automatize seus testes de UI com a Espresso!

  • 2. ~ 10 anos Senior Developer about.me/ramonrabello Ramon Rabello Paixão por Comunidades! Agilista Organizer GDG Brasília BB Tecnologia e Serviços Líder de Inovação CEO, Visyo Empreendedor Android Instrutor / Consultor
  • 3. Por que eu devo testar?
  • 4. Garantir que determinada feature do sistema funcione como esperada. Teste Unitário
  • 5. É um roteiro do próprio comportamento de um sistema.
  • 6. Garantia de que mudanças não quebrem funcionalidades já existentes.
  • 7. Ah, mas testar dá trabalho!
  • 8. Desculpe, não tenho tempo para criar testes.
  • 9. Eu tô cansado de tanto testar as coisas “na mão".
  • 10. Quando vc lança atualizações sem testes
  • 11. E coloca o produto em produção E o sistema falha :(
  • 12. E você não acredita o que pode ter dado errado…
  • 13. Então, quais ferramentas que utilizo para testar?
  • 14.
  • 15. Show! E como funciona testes em Android?
  • 16. Pastas para tipos de testes Testes de UI Testes Unitários
  • 17. Tá! Agora me apresenta essa tal de Espresso!
  • 18. Espresso Parte da Android Support Testing Library Simula interações com o usuário Sincronização automática de ações de teste com a UI Extremamente rápida!
  • 19. Configurando a Espresso build.gradle (app) dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) // Android Testing Support Library's runner and rules
 androidTestCompile ‘com.android.support.test:runner:0.5' 
 androidTestCompile 'com.android.support.test:rules:0.5'
 
 // Espresso UI Testing dependencies
 androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
 exclude group: 'com.android.support', module: 'support-annotations'
 }) … } Dependências
  • 20. Configurando a Espresso build.gradle (app) android {
 compileSdkVersion 25
 buildToolsVersion "24.0.0"
 defaultConfig {
 … testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
 }
 …
 } Test Instrumentation Runner
  • 21. Anatomia de um Teste de UI 1 Encontrar uma View 2 Executar uma ação 3 Inspecionar o resultado
  • 22. Anatomia de um Teste de UI onView(Matcher<View>) 2 Executar uma ação 3 Inspecionar o resultado
  • 23. Anatomia de um Teste de UI onView(Matcher<View>) .perform(ViewAction) 3 Inspecionar o resultado
  • 24. Anatomia de um Teste de UI onView(Matcher<View>) .perform(ViewAction) .check(ViewAssertion)
  • 25. Demo - Tela de Login
  • 26. Criando um Teste de UI Criando a classe de Teste @RunWith(AndroidJunit4.class) public class LoginActivityTest { }
  • 27. Criando um Teste de UI Adicionando uma ActivityTestRule @RunWith(AndroidJunit4.class) public class LoginActivityTest { @Rule public ActivityTestRule<LoginActivity> activityTestRule = new ActivityTestRule<>(LoginActivity.class); }
  • 28. Criando um Teste de UI Simulando o preenchimento do campo usuário @RunWith(AndroidJunit4.class) public class MainActivityTest { … @Test public void clickLoginButton_shouldVerifyCredentials(){ onView(withId(R.id.username_field)) .perform(typeText(“espresso”), closeSoftKeyboard()); } }
  • 29. Criando um Teste de UI @RunWith(AndroidJunit4.class) public class MainActivityTest { … @Test public void clickLoginButton_shouldVerifyCredentials(){ … onView(withId(R.id.password_field)) .perform(typeText(“35pr3550”), closeSoftKeyboard()); } } Simulando o preenchimento do campo senha
  • 30. Criando um Teste de UI @RunWith(AndroidJunit4.class) public class MainActivityTest { … @Test public void clickLoginButton_shouldVerifyCredentials(){ … onView(withId(R.id.login_button)).perform(click()); } } Simulando o clique no botão
  • 31. Criando um Teste de UI @RunWith(AndroidJunit4.class) public class MainActivityTest { … @Test public void clickLoginButton_shouldVerifyCredentials(){ … onView(withId(R.id.username_field)).check(matches(hasText("espresso")); } } Verifica o conteúdo do campo usuário
  • 32. Criando um Teste de UI @RunWith(AndroidJunit4.class) public class MainActivityTest { … @Test public void clickLoginButton_shouldVerifyCredentials(){ … onView(withId(R.id.password_field)).check(matches(hasText("35pr3550")); } } Verifica o conteúdo do campo senha
  • 33. Status do teste Verificando se ele passou ou não
  • 35. Executando o Teste Configurações - Desabilitar animações
  • 36. Executando o Teste Executa todos os testes da classe 1 2 1 Executa o teste selecionado2 No Android Studio
  • 37. Legal! E agora, onde posso ler mais a respeito da Espresso?
  • 38. Saiba mais! Testing Support Library Guide Clique para saber mais Android Testing Codelab Clique para saber mais Android Testing Patterns Series Clique para saber mais