39
about.me/ramonrabello Ramon Rabello Automatize seus testes de UI com a Espresso!

Automatize seus testes de UI com a Espresso!

Embed Size (px)

Citation preview

Page 1: Automatize seus testes de UI com a Espresso!

about.me/ramonrabelloRamon Rabello

Automatize seus testes de UI com a Espresso!

Page 2: Automatize seus testes de UI com a Espresso!

~ 10 anosSenior Developer

about.me/ramonrabelloRamon Rabello

Paixão por Comunidades!Agilista

OrganizerGDG Brasília

BB Tecnologia e ServiçosLíder de Inovação

CEO, VisyoEmpreendedor

AndroidInstrutor / Consultor

Page 3: Automatize seus testes de UI com a Espresso!

Por que eu devo testar?

Page 4: Automatize seus testes de UI com a Espresso!

Garantir que determinada feature do sistema funcione como esperada.

Teste Unitário

Page 5: Automatize seus testes de UI com a Espresso!

É um roteiro do próprio comportamento de um sistema.

Page 6: Automatize seus testes de UI com a Espresso!

Garantia de que mudanças não quebrem funcionalidades já existentes.

Page 7: Automatize seus testes de UI com a Espresso!

Ah, mas testar dá trabalho!

Page 8: Automatize seus testes de UI com a Espresso!

Desculpe, não tenho tempo para criar testes.

Page 9: Automatize seus testes de UI com a Espresso!

Eu tô cansado de tanto testar as coisas “na mão".

Page 10: Automatize seus testes de UI com a Espresso!

Quando vc lança atualizações sem testes

Page 11: Automatize seus testes de UI com a Espresso!

E coloca o produto em produção

E o sistema falha :(

Page 12: Automatize seus testes de UI com a Espresso!

E você não acredita o que pode ter dado errado…

Page 13: Automatize seus testes de UI com a Espresso!

Então, quais ferramentas que utilizo para testar?

Page 14: Automatize seus testes de UI com a Espresso!
Page 15: Automatize seus testes de UI com a Espresso!

Show! E como funciona testes em Android?

Page 16: Automatize seus testes de UI com a Espresso!

Pastas para tipos de testes

Testes de UI

Testes Unitários

Page 17: Automatize seus testes de UI com a Espresso!

Tá! Agora me apresenta essa tal de Espresso!

Page 18: Automatize seus testes de UI com a 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!

Page 19: Automatize seus testes de UI com a Espresso!

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

Page 20: Automatize seus testes de UI com a Espresso!

Configurando a Espresso

build.gradle (app)

android { compileSdkVersion 25 buildToolsVersion "24.0.0" defaultConfig { … testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } … }

Test Instrumentation Runner

Page 21: Automatize seus testes de UI com a Espresso!

Anatomia de um Teste de UI

1 Encontrar uma View

2 Executar uma ação

3 Inspecionar o resultado

Page 22: Automatize seus testes de UI com a Espresso!

Anatomia de um Teste de UI

onView(Matcher<View>)

2 Executar uma ação

3 Inspecionar o resultado

Page 23: Automatize seus testes de UI com a Espresso!

Anatomia de um Teste de UI

onView(Matcher<View>)

.perform(ViewAction)

3 Inspecionar o resultado

Page 24: Automatize seus testes de UI com a Espresso!

Anatomia de um Teste de UI

onView(Matcher<View>)

.perform(ViewAction)

.check(ViewAssertion)

Page 25: Automatize seus testes de UI com a Espresso!

Demo - Tela de Login

Page 26: Automatize seus testes de UI com a Espresso!

Criando um Teste de UICriando a classe de Teste@RunWith(AndroidJunit4.class) public class LoginActivityTest { }

Page 27: Automatize seus testes de UI com a Espresso!

Criando um Teste de UIAdicionando uma ActivityTestRule@RunWith(AndroidJunit4.class) public class LoginActivityTest {

@Rule public ActivityTestRule<LoginActivity> activityTestRule = new ActivityTestRule<>(LoginActivity.class);

}

Page 28: Automatize seus testes de UI com a Espresso!

Criando um Teste de UISimulando 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()); }

}

Page 29: Automatize seus testes de UI com a Espresso!

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

Page 30: Automatize seus testes de UI com a Espresso!

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

Page 31: Automatize seus testes de UI com a Espresso!

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

Page 32: Automatize seus testes de UI com a Espresso!

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

Page 33: Automatize seus testes de UI com a Espresso!

Status do testeVerificando se ele passou ou não

Page 35: Automatize seus testes de UI com a Espresso!

Executando o TesteConfigurações - Desabilitar animações

Page 37: Automatize seus testes de UI com a Espresso!

Legal! E agora, onde posso ler mais a respeito da Espresso?

Page 38: Automatize seus testes de UI com a Espresso!

Saiba mais!

Testing Support Library GuideClique para saber mais

Android Testing CodelabClique para saber mais

Android Testing Patterns SeriesClique para saber mais

Page 39: Automatize seus testes de UI com a Espresso!

OBRIGADO!

goo.gl/VBJTIh

@gdgbrasilia

/gdgbrasilia