SlideShare uma empresa Scribd logo
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?
Automatize seus testes de UI com a Espresso!
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
Anúncio

Mais conteúdo relacionado

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...
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 selenium
Sandy Maciel
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
André Thiago
 
Selenium
SeleniumSelenium
Selenium
fatec
 
Talk testes em flutter
Talk testes em flutterTalk testes em flutter
Talk testes em flutter
Jhonatas 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 defeitos
VIVIANE RANGEL
 
Tutorial avancado com appscan
Tutorial avancado com appscanTutorial avancado com appscan
Tutorial avancado com appscan
Reinaldo 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 Selenium
Victor 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 webdriver
Qualister
 
Design Factory em testes
Design Factory em testesDesign Factory em testes
Design Factory em testes
TestRock!
 
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
Henrique Limas
 
Problemas com o Java
Problemas com o JavaProblemas com o Java
Problemas com o Java
Amanda Cunha
 
Selenium: visão geral
Selenium: visão geralSelenium: visão geral
Selenium: visão geral
Marcelo Andrade
 
98796699 selenium-framework
98796699 selenium-framework98796699 selenium-framework
98796699 selenium-framework
André Caldas
 
Selenium ide apresentação
Selenium ide   apresentaçãoSelenium ide   apresentação
Selenium ide apresentação
Priscila Calderão
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
Giovanni Bassi
 
ATDD Android
ATDD AndroidATDD Android
ATDD Android
Pedro Rocha
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockito
Renan Uchôa
 
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 selenium
Sandy Maciel
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
André Thiago
 
Selenium
SeleniumSelenium
Selenium
fatec
 
Talk testes em flutter
Talk testes em flutterTalk testes em flutter
Talk testes em flutter
Jhonatas 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 defeitos
VIVIANE RANGEL
 
Tutorial avancado com appscan
Tutorial avancado com appscanTutorial avancado com appscan
Tutorial avancado com appscan
Reinaldo 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 Selenium
Victor 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 webdriver
Qualister
 
Design Factory em testes
Design Factory em testesDesign Factory em testes
Design Factory em testes
TestRock!
 
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
Henrique Limas
 
Problemas com o Java
Problemas com o JavaProblemas com o Java
Problemas com o Java
Amanda Cunha
 
98796699 selenium-framework
98796699 selenium-framework98796699 selenium-framework
98796699 selenium-framework
André Caldas
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
Giovanni Bassi
 
Mock it with mockito
Mock it with mockitoMock it with mockito
Mock it with mockito
Renan Uchôa
 

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

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
Vinícius de Paula
 
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
Onyo
 
Android: testes automatizados e TDD
Android: testes automatizados e TDDAndroid: testes automatizados e TDD
Android: testes automatizados e TDD
Dextra
 
Automação de Teste em UI para Android
Automação de Teste em UI para AndroidAutomação de Teste em UI para Android
Automação de Teste em UI para Android
Elias Nogueira
 
Android DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps AndroidAndroid DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps Android
iMasters
 
Indo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps AndroidIndo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps Android
Eduardo Carrara de Araujo
 
Xamarin UI Test e VS Mobile Center
Xamarin UI Test e VS Mobile CenterXamarin UI Test e VS Mobile Center
Xamarin UI Test e VS Mobile Center
Cleiton Felipe Moraes
 
Teste sua app e aumente as chances de mantê-la no mercado
Teste sua app e aumente as chances de mantê-la no mercadoTeste sua app e aumente as chances de mantê-la no mercado
Teste sua app e aumente as chances de mantê-la no mercado
Elias Nogueira
 
Testes: Por onde Começar?
Testes: Por onde Começar?Testes: Por onde Começar?
Testes: Por onde Começar?
Eduardo Carrara de Araujo
 
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
 
[GUTS-RS] Mobile Testing
[GUTS-RS] Mobile Testing[GUTS-RS] Mobile Testing
[GUTS-RS] Mobile Testing
GUTS-RS
 
Tudo o que você precisa saber para começar a automação de testes em dispositi...
Tudo o que você precisa saber para começar a automação de testes em dispositi...Tudo o que você precisa saber para começar a automação de testes em dispositi...
Tudo o que você precisa saber para começar a automação de testes em dispositi...
Elias Nogueira
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
tdc-globalcode
 
Melhorando seu App com Kotlin e Testes
Melhorando seu App com Kotlin e TestesMelhorando seu App com Kotlin e Testes
Melhorando seu App com Kotlin e Testes
Eduardo Carrara de Araujo
 
TDC2018FLN | Trilha Mobile - Teste Automatizado com Xamarin UI Test
TDC2018FLN | Trilha Mobile - Teste Automatizado com Xamarin UI TestTDC2018FLN | Trilha Mobile - Teste Automatizado com Xamarin UI Test
TDC2018FLN | Trilha Mobile - Teste Automatizado com Xamarin UI Test
tdc-globalcode
 
Testes automatizados com Xamarin UITest e Xamarin Test Cloud
Testes automatizados com Xamarin UITest e Xamarin Test CloudTestes automatizados com Xamarin UITest e Xamarin Test Cloud
Testes automatizados com Xamarin UITest e Xamarin Test Cloud
Luiza Guerra
 
Automação de Teste com Robotium - Tche Mobile 2014
Automação de Teste com Robotium - Tche Mobile 2014Automação de Teste com Robotium - Tche Mobile 2014
Automação de Teste com Robotium - Tche Mobile 2014
Elias Nogueira
 
Apresentação do Artigo sobre Automação do Teste de Sanidade para Dispositivos...
Apresentação do Artigo sobre Automação do Teste de Sanidade para Dispositivos...Apresentação do Artigo sobre Automação do Teste de Sanidade para Dispositivos...
Apresentação do Artigo sobre Automação do Teste de Sanidade para Dispositivos...
Lucas Gomes
 
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
GUTS-RS
 
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019
akamud
 
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
Vinícius de Paula
 
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
Onyo
 
Android: testes automatizados e TDD
Android: testes automatizados e TDDAndroid: testes automatizados e TDD
Android: testes automatizados e TDD
Dextra
 
Automação de Teste em UI para Android
Automação de Teste em UI para AndroidAutomação de Teste em UI para Android
Automação de Teste em UI para Android
Elias Nogueira
 
Android DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps AndroidAndroid DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps Android
iMasters
 
Indo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps AndroidIndo além com Automação de Testes de Apps Android
Indo além com Automação de Testes de Apps Android
Eduardo Carrara de Araujo
 
Teste sua app e aumente as chances de mantê-la no mercado
Teste sua app e aumente as chances de mantê-la no mercadoTeste sua app e aumente as chances de mantê-la no mercado
Teste sua app e aumente as chances de mantê-la no mercado
Elias Nogueira
 
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
 
[GUTS-RS] Mobile Testing
[GUTS-RS] Mobile Testing[GUTS-RS] Mobile Testing
[GUTS-RS] Mobile Testing
GUTS-RS
 
Tudo o que você precisa saber para começar a automação de testes em dispositi...
Tudo o que você precisa saber para começar a automação de testes em dispositi...Tudo o que você precisa saber para começar a automação de testes em dispositi...
Tudo o que você precisa saber para começar a automação de testes em dispositi...
Elias Nogueira
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
tdc-globalcode
 
TDC2018FLN | Trilha Mobile - Teste Automatizado com Xamarin UI Test
TDC2018FLN | Trilha Mobile - Teste Automatizado com Xamarin UI TestTDC2018FLN | Trilha Mobile - Teste Automatizado com Xamarin UI Test
TDC2018FLN | Trilha Mobile - Teste Automatizado com Xamarin UI Test
tdc-globalcode
 
Testes automatizados com Xamarin UITest e Xamarin Test Cloud
Testes automatizados com Xamarin UITest e Xamarin Test CloudTestes automatizados com Xamarin UITest e Xamarin Test Cloud
Testes automatizados com Xamarin UITest e Xamarin Test Cloud
Luiza Guerra
 
Automação de Teste com Robotium - Tche Mobile 2014
Automação de Teste com Robotium - Tche Mobile 2014Automação de Teste com Robotium - Tche Mobile 2014
Automação de Teste com Robotium - Tche Mobile 2014
Elias Nogueira
 
Apresentação do Artigo sobre Automação do Teste de Sanidade para Dispositivos...
Apresentação do Artigo sobre Automação do Teste de Sanidade para Dispositivos...Apresentação do Artigo sobre Automação do Teste de Sanidade para Dispositivos...
Apresentação do Artigo sobre Automação do Teste de Sanidade para Dispositivos...
Lucas Gomes
 
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
GUTS-RS
 
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019
akamud
 
Anúncio

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
Ramon 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 beyond
Ramon Ribeiro Rabello
 
Create Modern Apps with Android Jetpack
Create Modern Apps with Android JetpackCreate Modern Apps with Android Jetpack
Create Modern Apps with Android Jetpack
Ramon Ribeiro Rabello
 
Cultura de testes em times mobile
Cultura de testes em times mobileCultura de testes em times mobile
Cultura de testes em times mobile
Ramon Ribeiro Rabello
 
Ninja Productivity in Android Studio
Ninja Productivity in Android StudioNinja Productivity in Android Studio
Ninja Productivity in Android Studio
Ramon Ribeiro Rabello
 
Produtividade ninja com android studio
Produtividade ninja com android studioProdutividade ninja com android studio
Produtividade ninja com android studio
Ramon 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ública
Ramon 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 API
Ramon 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
 
O ecossistema android
O ecossistema androidO ecossistema android
O ecossistema android
Ramon Ribeiro Rabello
 
Android Marshmallow na prática
Android Marshmallow na práticaAndroid Marshmallow na prática
Android Marshmallow na prática
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 inteligentes
Ramon Ribeiro Rabello
 
Introdução ao Android Studio
Introdução ao Android StudioIntrodução ao Android Studio
Introdução ao Android Studio
Ramon Ribeiro Rabello
 
O caminho de um desenvolvedor android
O caminho de um desenvolvedor androidO caminho de um desenvolvedor android
O caminho de um desenvolvedor android
Ramon Ribeiro Rabello
 
Criando Apps Sociais em Android
Criando Apps Sociais em AndroidCriando Apps Sociais em Android
Criando Apps Sociais em Android
Ramon Ribeiro Rabello
 
Porque Aprender Android
Porque Aprender AndroidPorque Aprender Android
Porque Aprender Android
Ramon 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ção
Ramon 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
 
Desenvolvimento Web para Android
Desenvolvimento Web para AndroidDesenvolvimento Web para Android
Desenvolvimento Web para Android
Ramon Ribeiro Rabello
 
Agora é Android, Tá Safo? - #tasafoemacaocastanhal
Agora é Android, Tá Safo? - #tasafoemacaocastanhalAgora é Android, Tá Safo? - #tasafoemacaocastanhal
Agora é Android, Tá Safo? - #tasafoemacaocastanhal
Ramon Ribeiro Rabello
 
Declarative UIs with Jetpack Compose
Declarative UIs with Jetpack ComposeDeclarative UIs with Jetpack Compose
Declarative UIs with Jetpack Compose
Ramon 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 beyond
Ramon Ribeiro Rabello
 
Create Modern Apps with Android Jetpack
Create Modern Apps with Android JetpackCreate Modern Apps with Android Jetpack
Create Modern Apps with Android Jetpack
Ramon Ribeiro Rabello
 
Ninja Productivity in Android Studio
Ninja Productivity in Android StudioNinja Productivity in Android Studio
Ninja Productivity in Android Studio
Ramon Ribeiro Rabello
 
Produtividade ninja com android studio
Produtividade ninja com android studioProdutividade ninja com android studio
Produtividade ninja com android studio
Ramon 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ública
Ramon 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 API
Ramon 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 inteligentes
Ramon Ribeiro Rabello
 
O caminho de um desenvolvedor android
O caminho de um desenvolvedor androidO caminho de um desenvolvedor android
O caminho de um desenvolvedor android
Ramon 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ção
Ramon 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? - #tasafoemacaocastanhal
Ramon Ribeiro Rabello
 
Anúncio

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?
  • 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
  翻译: